<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-11T02:23:04.859579" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-longevity.txt" source="/w/workspace/openflowplugin-csit-1node-longevity-only-manganese/test/csit/suites/openflowplugin/Longevity/010__longevity_test.robot">
<kw name="Workflow Setup" owner="WorkflowsOpenFlow" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:05.464227" level="INFO">Creating Session using : alias=session, url=http://10.30.171.238:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x76fcf5ef8f10&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-11T02:23:05.463818" elapsed="0.000624"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-11T02:23:05.467801" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:05.467689" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:05.467661" elapsed="0.000238"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-10-11T02:23:05.468086" elapsed="0.000408"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-11T02:23:05.468935" level="INFO">Logging into '10.30.171.238:8101' as 'karaf'.</msg>
<msg time="2026-10-11T02:23:06.278802" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</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="PASS" start="2026-10-11T02:23:05.468705" elapsed="0.810265"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.327433" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-11T02:23:06.279280" elapsed="0.048218"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.329266" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-11T02:23:06.329374" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-10-11T02:23:06.327691" elapsed="0.001713"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-11T02:23:06.329571" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-11T02:23:06.329930" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.330634" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:06.330334" elapsed="0.000348"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-11T02:23:06.330730" elapsed="0.000049"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.238
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-11T02:23:05.467384" elapsed="0.863511"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-10-11T02:23:05.465521" elapsed="0.865427"/>
</kw>
<status status="PASS" start="2026-10-11T02:23:05.463337" elapsed="0.867668"/>
</kw>
<test id="s1-t1" name="Longevity Test" line="24">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.332095" level="INFO">${error_message} = Fail initializing suite</msg>
<var>${error_message}</var>
<arg>Fail initializing suite</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-11T02:23:06.331801" elapsed="0.000320"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.332664" level="INFO">${switches} = 16</msg>
<var>${switches}</var>
<arg>${NUM_SWITCHES}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-10-11T02:23:06.332358" elapsed="0.000331"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-10-11T02:23:06.333112" level="INFO">${max_duration} = 82800.0</msg>
<var>${max_duration}</var>
<arg>${TEST_LENGTH}</arg>
<arg>number</arg>
<doc>Converts between supported [time formats].</doc>
<status status="PASS" start="2026-10-11T02:23:06.332848" elapsed="0.000288"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-11T02:23:06.333589" level="INFO">${start_time} = 2026-10-11 02:23:06.333</msg>
<var>${start_time}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-10-11T02:23:06.333405" elapsed="0.000209"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Workflow Full Mesh Topology" owner="WorkflowsOpenFlow">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.338755" level="INFO">${error_message} = Test has completed</msg>
<var>${error_message}</var>
<arg>Test has completed</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-11T02:23:06.338500" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.339263" level="INFO">${topology_discover_time} = 0</msg>
<var>${topology_discover_time}</var>
<arg>${0}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-11T02:23:06.338981" elapsed="0.000306"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.339957" level="INFO">${mininet_timeout} = 256</msg>
<var>${mininet_timeout}</var>
<arg>${switches} * ${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-11T02:23:06.339543" elapsed="0.000439"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.340580" level="INFO">${links} = 240</msg>
<var>${links}</var>
<arg>${switches} * ${switches-1}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-11T02:23:06.340199" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.341068" level="INFO">${controller_list} = ['10.30.171.238']</msg>
<var>${controller_list}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-11T02:23:06.340786" elapsed="0.000307"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.341584" level="INFO">${flow_count} = 10000</msg>
<var>${flow_count}</var>
<arg>${flow_count}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-10-11T02:23:06.341303" elapsed="0.000305"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.342129" level="INFO">${flows_ovs_25} = 10016</msg>
<var>${flows_ovs_25}</var>
<arg>${flow_count} + ${switches}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-11T02:23:06.341802" elapsed="0.000351"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.342609" level="INFO">${flows_before} = 16</msg>
<var>${flows_before}</var>
<arg>${switches}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-11T02:23:06.342354" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.343086" level="INFO">${flows_after} = 10016</msg>
<var>${flows_after}</var>
<arg>${flows_ovs_25}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-11T02:23:06.342817" elapsed="0.000293"/>
</kw>
<kw name="Generate New Flow Details" owner="ScaleClient">
<msg time="2026-10-11T02:23:06.363333" level="INFO">${flows} = [(16, 6, 0), (9, 0, 1), (3, 8, 2), (14, 7, 3), (8, 7, 4), (12, 3, 5), (3, 4, 6), (9, 5, 7), (12, 4, 8), (7, 2, 9), (2, 7, 10), (12, 5, 11), (13, 3, 12), (11, 9, 13), (6, 9, 14), (14, 7, 15), (11, 3, 1...</msg>
<msg time="2026-10-11T02:23:06.363443" level="INFO">${notes} = {16: {'total': 648, 6: 80, 8: 69, 2: 58, 4: 65, 5: 56, 7: 59, 9: 72, 0: 56, 1: 67, 3: 66}, 9: {'total': 616, 0: 56, 5: 55, 9: 73, 1: 64, 8: 71, 3: 60, 2: 65, 4: 60, 7: 52, 6: 60}, 3: {'total': 624, 8:...</msg>
<var>${flows}</var>
<var>${notes}</var>
<arg>flows=${flow_count}</arg>
<arg>switches=${switches}</arg>
<arg>swspread=${swspread}</arg>
<arg>tables=${tables}</arg>
<arg>tabspread=${tabspread}</arg>
<doc>Generate a list of tupples (switch_id, table_id, flow_id) which are generated
according to the spread rules between swithces and tables.
It also returns a dictionary with statsistics.</doc>
<status status="PASS" start="2026-10-11T02:23:06.343280" elapsed="0.020187"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${\n}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-11T02:23:06.363688" elapsed="0.000291"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Start a mininet full mesh ${switches} switches</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-11T02:23:06.364285" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Start Mininet Full Mesh" owner="MininetKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.366393" level="INFO">${mininet_conn_id} = 2</msg>
<var>${mininet_conn_id}</var>
<arg>${mininet}</arg>
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<arg>timeout=${mininet_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-11T02:23:06.365879" elapsed="0.000540"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.366988" level="INFO">${mininet_conn_id} = 2</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-11T02:23:06.366655" elapsed="0.000374"/>
</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-10-11T02:23:06.368941" level="INFO">Length is 0.</msg>
<msg time="2026-10-11T02:23:06.369014" 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-10-11T02:23:06.368443" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:06.369194" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.370326" level="INFO">Logging into '10.30.171.171:22' as 'jenkins'.</msg>
<msg time="2026-10-11T02:23:06.834127" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sun Oct 11 02:22:25 UTC 2026

  System load:  0.17               Processes:             111
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.171
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

14 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.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-51063-11-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-10-11T02:23:06.370067" elapsed="0.464163"/>
</kw>
<msg time="2026-10-11T02:23:06.834293" 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-10-11T02:23:06.369677" elapsed="0.464692"/>
</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-10-11T02:23:06.367976" elapsed="0.466479"/>
</kw>
<msg time="2026-10-11T02:23:06.834501" 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-10-11T02:23:06.367593" elapsed="0.466954"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-11T02:23:06.367230" elapsed="0.467438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.835232" level="INFO">Copying MininetTopo/create_fullymesh.py file to Mininet VM and Creating Full Mesh topology</msg>
<arg>Copying ${topology_file_path} file to Mininet VM and Creating Full Mesh topology</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:06.834931" elapsed="0.000345"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.844613" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-10-11T02:23:06.851946" level="INFO">'/w/workspace/openflowplugin-csit-1node-longevity-only-manganese/test/csit/libraries/MininetTopo/create_fullymesh.py' -&gt; '/home/jenkins//create_fullymesh.py'</msg>
<arg>/w/workspace/openflowplugin-csit-1node-longevity-only-manganese/test/csit/libraries/${topology_file_path}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-10-11T02:23:06.835459" elapsed="0.016543"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.853687" level="INFO">python create_fullymesh.py 16 0 00:00:00:00:00:00 10.0.0.0</msg>
<arg>python ${topology_file} ${switches} ${hosts} 00:00:00:00:00:00 10.0.0.0</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-11T02:23:06.852165" elapsed="0.001573"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.937657" level="INFO">[?2004lThis topology has 16 switches 0 hosts
[?2004h[jenkins@releng-51063-11-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-11T02:23:06.853910" elapsed="0.083803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:06.938155" level="INFO">Start Mininet Full Mesh</msg>
<arg>Start Mininet Full Mesh</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:06.937946" elapsed="0.000250"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-11T02:23:06.940904" level="INFO">sudo mn --controller=remote,ip=10.30.171.238,port=6633 --custom switch.py --topo demotopo --switch ovsk,protocols=OpenFlow13</msg>
<arg>sudo mn --controller=remote,ip=${controller},port=${ofport} --custom switch.py --topo demotopo --switch ovsk,protocols=OpenFlow${ofversion}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-11T02:23:06.938364" elapsed="0.002590"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-11T02:23:08.499379" level="INFO">[?2004l*** Creating network
*** Adding controller
*** Adding hosts:

*** Adding switches:
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 
*** Adding links:
(s2, s1) (s3, s1) (s3, s2) (s4, s1) (s4, s2) (s4, s3) (s5, s1) (s5, s2) (s5, s3) (s5, s4) (s6, s1) (s6, s2) (s6, s3) (s6, s4) (s6, s5) (s7, s1) (s7, s2) (s7, s3) (s7, s4) (s7, s5) (s7, s6) (s8, s1) (s8, s2) (s8, s3) (s8, s4) (s8, s5) (s8, s6) (s8, s7) (s9, s1) (s9, s2) (s9, s3) (s9, s4) (s9, s5) (s9, s6) (s9, s7) (s9, s8) (s10, s1) (s10, s2) (s10, s3) (s10, s4) (s10, s5) (s10, s6) (s10, s7) (s10, s8) (s10, s9) (s11, s1) (s11, s2) (s11, s3) (s11, s4) (s11, s5) (s11, s6) (s11, s7) (s11, s8) (s11, s9) (s11, s10) (s12, s1) (s12, s2) (s12, s3) (s12, s4) (s12, s5) (s12, s6) (s12, s7) (s12, s8) (s12, s9) (s12, s10) (s12, s11) (s13, s1) (s13, s2) (s13, s3) (s13, s4) (s13, s5) (s13, s6) (s13, s7) (s13, s8) (s13, s9) (s13, s10) (s13, s11) (s13, s12) (s14, s1) (s14, s2) (s14, s3) (s14, s4) (s14, s5) (s14, s6) (s14, s7) (s14, s8) (s14, s9) (s14, s10) (s14, s11) (s14, s12) (s14, s13) (s15, s1) (s15, s2) (s15, s3) (s15, s4) (s15, s5) (s15, s6) (s15, s7) (s15, s8) (s15, s9) (s15, s10) (s15, s11) (s15, s12) (s15, s13) (s15, s14) (s16, s1) (s16, s2) (s16, s3) (s16, s4) (s16, s5) (s16, s6) (s16, s7) (s16, s8) (s16, s9) (s16, s10) (s16, s11) (s16, s12) (s16, s13) (s16, s14) (s16, s15) 
*** Configuring hosts

*** Starting controller
c0 
*** Starting 16 switches
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 ...
*** Starting CLI:
mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-11T02:23:06.941111" elapsed="1.558355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:08.499978" level="INFO">Check OVS configuratiom</msg>
<arg>Check OVS configuratiom</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:08.499717" elapsed="0.000304"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-11T02:23:08.501378" level="INFO">sh ovs-vsctl show</msg>
<arg>sh ovs-vsctl show</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-11T02:23:08.500181" elapsed="0.001250"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-11T02:23:08.786280" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Bridge s3
        Controller "tcp:10.30.171.238:6633"
        Controller "ptcp:6656"
        fail_mode: secure
        Port s3-eth5
            Interface s3-eth5
        Port s3-eth12
            Interface s3-eth12
        Port s3-eth7
            Interface s3-eth7
        Port s3-eth11
            Interface s3-eth11
        Port s3-eth6
            Interface s3-eth6
        Port s3-eth4
            Interface s3-eth4
        Port s3-eth10
            Interface s3-eth10
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3-eth9
            Interface s3-eth9
        Port s3-eth14
            Interface s3-eth14
        Port s3
            Interface s3
                type: internal
        Port s3-eth8
            Interface s3-eth8
        Port s3-eth13
            Interface s3-eth13
        Port s3-eth3
            Interface s3-eth3
        Port s3-eth15
            Interface s3-eth15
    Bridge s10
        Controller "ptcp:6663"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s10-eth6
            Interface s10-eth6
        Port s10-eth14
            Interface s10-eth14
        Port s10-eth13
            Interface s10-eth13
        Port s10-eth4
            Interface s10-eth4
        Port s10-eth8
            Interface s10-eth8
        Port s10-eth11
            Interface s10-eth11
        Port s10-eth7
            Interface s10-eth7
        Port s10
            Interface s10
                type: internal
        Port s10-eth15
            Interface s10-eth15
        Port s10-eth10
            Interface s10-eth10
        Port s10-eth2
            Interface s10-eth2
        Port s10-eth12
            Interface s10-eth12
        Port s10-eth5
            Interface s10-eth5
        Port s10-eth1
            Interface s10-eth1
        Port s10-eth9
            Interface s10-eth9
        Port s10-eth3
            Interface s10-eth3
    Bridge s13
        Controller "ptcp:6666"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s13-eth2
            Interface s13-eth2
        Port s13-eth10
            Interface s13-eth10
        Port s13-eth4
            Interface s13-eth4
        Port s13-eth12
            Interface s13-eth12
        Port s13-eth14
            Interface s13-eth14
        Port s13-eth5
            Interface s13-eth5
        Port s13-eth6
            Interface s13-eth6
        Port s13-eth11
            Interface s13-eth11
        Port s13-eth9
            Interface s13-eth9
        Port s13-eth7
            Interface s13-eth7
        Port s13-eth1
            Interface s13-eth1
        Port s13
            Interface s13
                type: internal
        Port s13-eth8
            Interface s13-eth8
        Port s13-eth15
            Interface s13-eth15
        Port s13-eth3
            Interface s13-eth3
        Port s13-eth13
            Interface s13-eth13
    Bridge s8
        Controller "ptcp:6661"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s8-eth13
            Interface s8-eth13
        Port s8-eth2
            Interface s8-eth2
        Port s8-eth3
            Interface s8-eth3
        Port s8-eth9
            Interface s8-eth9
        Port s8-eth14
            Interface s8-eth14
        Port s8-eth8
            Interface s8-eth8
        Port s8-eth6
            Interface s8-eth6
        Port s8-eth1
            Interface s8-eth1
        Port s8-eth11
            Interface s8-eth11
        Port s8-eth5
            Interface s8-eth5
        Port s8-eth7
            Interface s8-eth7
        Port s8-eth12
            Interface s8-eth12
        Port s8-eth10
            Interface s8-eth10
        Port s8
            Interface s8
                type: internal
        Port s8-eth4
            Interface s8-eth4
        Port s8-eth15
            Interface s8-eth15
    Bridge s15
        Controller "ptcp:6668"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s15-eth9
            Interface s15-eth9
        Port s15-eth11
            Interface s15-eth11
        Port s15
            Interface s15
                type: internal
        Port s15-eth3
            Interface s15-eth3
        Port s15-eth12
            Interface s15-eth12
        Port s15-eth14
            Interface s15-eth14
        Port s15-eth1
            Interface s15-eth1
        Port s15-eth7
            Interface s15-eth7
        Port s15-eth8
            Interface s15-eth8
        Port s15-eth2
            Interface s15-eth2
        Port s15-eth10
            Interface s15-eth10
        Port s15-eth6
            Interface s15-eth6
        Port s15-eth4
            Interface s15-eth4
        Port s15-eth15
            Interface s15-eth15
        Port s15-eth5
            Interface s15-eth5
        Port s15-eth13
            Interface s15-eth13
    Bridge s6
        Controller "ptcp:6659"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s6-eth12
            Interface s6-eth12
        Port s6-eth11
            Interface s6-eth11
        Port s6-eth10
            Interface s6-eth10
        Port s6-eth9
            Interface s6-eth9
        Port s6-eth2
            Interface s6-eth2
        Port s6-eth8
            Interface s6-eth8
        Port s6-eth14
            Interface s6-eth14
        Port s6-eth7
            Interface s6-eth7
        Port s6-eth15
            Interface s6-eth15
        Port s6-eth5
            Interface s6-eth5
        Port s6-eth4
            Interface s6-eth4
        Port s6-eth6
            Interface s6-eth6
        Port s6
            Interface s6
                type: internal
        Port s6-eth1
            Interface s6-eth1
        Port s6-eth13
            Interface s6-eth13
        Port s6-eth3
            Interface s6-eth3
    Bridge s1
        Controller "ptcp:6654"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s1-eth5
            Interface s1-eth5
        Port s1-eth12
            Interface s1-eth12
        Port s1-eth10
            Interface s1-eth10
        Port s1-eth6
            Interface s1-eth6
        Port s1-eth4
            Interface s1-eth4
        Port s1-eth13
            Interface s1-eth13
        Port s1
            Interface s1
                type: internal
        Port s1-eth14
            Interface s1-eth14
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth3
            Interface s1-eth3
        Port s1-eth7
            Interface s1-eth7
        Port s1-eth8
            Interface s1-eth8
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth11
            Interface s1-eth11
        Port s1-eth9
            Interface s1-eth9
        Port s1-eth15
            Interface s1-eth15
    Bridge s4
        Controller "tcp:10.30.171.238:6633"
        Controller "ptcp:6657"
        fail_mode: secure
        Port s4-eth1
            Interface s4-eth1
        Port s4-eth4
            Interface s4-eth4
        Port s4-eth2
            Interface s4-eth2
        Port s4-eth8
            Interface s4-eth8
        Port s4-eth6
            Interface s4-eth6
        Port s4-eth9
            Interface s4-eth9
        Port s4-eth5
            Interface s4-eth5
        Port s4
            Interface s4
                type: internal
        Port s4-eth13
            Interface s4-eth13
        Port s4-eth14
            Interface s4-eth14
        Port s4-eth3
            Interface s4-eth3
        Port s4-eth11
            Interface s4-eth11
        Port s4-eth15
            Interface s4-eth15
        Port s4-eth10
            Interface s4-eth10
        Port s4-eth7
            Interface s4-eth7
        Port s4-eth12
            Interface s4-eth12
    Bridge s14
        Controller "ptcp:6667"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s14-eth15
            Interface s14-eth15
        Port s14-eth13
            Interface s14-eth13
        Port s14-eth11
            Interface s14-eth11
        Port s14-eth6
            Interface s14-eth6
        Port s14-eth12
            Interface s14-eth12
        Port s14
            Interface s14
                type: internal
        Port s14-eth1
            Interface s14-eth1
        Port s14-eth5
            Interface s14-eth5
        Port s14-eth10
            Interface s14-eth10
        Port s14-eth2
            Interface s14-eth2
        Port s14-eth7
            Interface s14-eth7
        Port s14-eth14
            Interface s14-eth14
        Port s14-eth3
            Interface s14-eth3
        Port s14-eth9
            Interface s14-eth9
        Port s14-eth8
            Interface s14-eth8
        Port s14-eth4
            Interface s14-eth4
    Bridge s12
        Controller "tcp:10.30.171.238:6633"
        Controller "ptcp:6665"
        fail_mode: secure
        Port s12-eth2
            Interface s12-eth2
        Port s12
            Interface s12
                type: internal
        Port s12-eth14
            Interface s12-eth14
        Port s12-eth6
            Interface s12-eth6
        Port s12-eth7
            Interface s12-eth7
        Port s12-eth1
            Interface s12-eth1
        Port s12-eth11
            Interface s12-eth11
        Port s12-eth13
            Interface s12-eth13
        Port s12-eth10
            Interface s12-eth10
        Port s12-eth5
            Interface s12-eth5
        Port s12-eth9
            Interface s12-eth9
        Port s12-eth12
            Interface s12-eth12
        Port s12-eth4
            Interface s12-eth4
        Port s12-eth15
            Interface s12-eth15
        Port s12-eth8
            Interface s12-eth8
        Port s12-eth3
            Interface s12-eth3
    Bridge s2
        Controller "ptcp:6655"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s2
            Interface s2
                type: internal
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth12
            Interface s2-eth12
        Port s2-eth11
            Interface s2-eth11
        Port s2-eth7
            Interface s2-eth7
        Port s2-eth4
            Interface s2-eth4
        Port s2-eth14
            Interface s2-eth14
        Port s2-eth13
            Interface s2-eth13
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth9
            Interface s2-eth9
        Port s2-eth6
            Interface s2-eth6
        Port s2-eth15
            Interface s2-eth15
        Port s2-eth8
            Interface s2-eth8
        Port s2-eth5
            Interface s2-eth5
        Port s2-eth10
            Interface s2-eth10
    Bridge s7
        Controller "ptcp:6660"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s7-eth9
            Interface s7-eth9
        Port s7
            Interface s7
                type: internal
        Port s7-eth12
            Interface s7-eth12
        Port s7-eth6
            Interface s7-eth6
        Port s7-eth8
            Interface s7-eth8
        Port s7-eth14
            Interface s7-eth14
        Port s7-eth1
            Interface s7-eth1
        Port s7-eth5
            Interface s7-eth5
        Port s7-eth2
            Interface s7-eth2
        Port s7-eth7
            Interface s7-eth7
        Port s7-eth4
            Interface s7-eth4
        Port s7-eth11
            Interface s7-eth11
        Port s7-eth3
            Interface s7-eth3
        Port s7-eth13
            Interface s7-eth13
        Port s7-eth15
            Interface s7-eth15
        Port s7-eth10
            Interface s7-eth10
    Bridge s16
        Controller "tcp:10.30.171.238:6633"
        Controller "ptcp:6669"
        fail_mode: secure
        Port s16-eth15
            Interface s16-eth15
        Port s16-eth1
            Interface s16-eth1
        Port s16-eth12
            Interface s16-eth12
        Port s16-eth8
            Interface s16-eth8
        Port s16-eth5
            Interface s16-eth5
        Port s16
            Interface s16
                type: internal
        Port s16-eth3
            Interface s16-eth3
        Port s16-eth11
            Interface s16-eth11
        Port s16-eth4
            Interface s16-eth4
        Port s16-eth14
            Interface s16-eth14
        Port s16-eth13
            Interface s16-eth13
        Port s16-eth10
            Interface s16-eth10
        Port s16-eth2
            Interface s16-eth2
        Port s16-eth6
            Interface s16-eth6
        Port s16-eth9
            Interface s16-eth9
        Port s16-eth7
            Interface s16-eth7
    Bridge s9
        Controller "ptcp:6662"
        Controller "tcp:10.30.171.238:6633"
        fail_mode: secure
        Port s9-eth1
            Interface s9-eth1
        Port s9-eth2
            Interface s9-eth2
        Port s9
            Interface s9
                type: internal
        Port s9-eth11
            Interface s9-eth11
        Port s9-eth13
            Interface s9-eth13
        Port s9-eth4
            Interface s9-eth4
        Port s9-eth8
            Interface s9-eth8
        Port s9-eth3
            Interface s9-eth3
        Port s9-eth9
            Interface s9-eth9
        Port s9-eth6
            Interface s9-eth6
        Port s9-eth7
            Interface s9-eth7
        Port s9-eth5
            Interface s9-eth5
        Port s9-eth10
            Interface s9-eth10
        Port s9-eth15
            Interface s9-eth15
        Port s9-eth14
            Interface s9-eth14
        Port s9-eth12
            Interface s9-eth12
    Bridge s11
        Controller "tcp:10.30.171.238:6633"
        Controller "ptcp:6664"
        fail_mode: secure
        Port s11-eth6
            Interface s11-eth6
        Port s11-eth7
            Interface s11-eth7
        Port s11-eth14
            Interface s11-eth14
        Port s11-eth9
            Interface s11-eth9
        Port s11-eth13
            Interface s11-eth13
        Port s11-eth2
            Interface s11-eth2
        Port s11-eth12
            Interface s11-eth12
        Port s11-eth5
            Interface s11-eth5
        Port s11-eth8
            Interface s11-eth8
        Port s11-eth3
            Interface s11-eth3
        Port s11
            Interface s11
                type: internal
        Port s11-eth1
            Interface s11-eth1
        Port s11-eth4
            Interface s11-eth4
        Port s11-eth10
            Interface s11-eth10
        Port s11-eth11
            Interface s11-eth11
        Port s11-eth15
            Interface s11-eth15
    Bridge s5
        Controller "tcp:10.30.171.238:6633"
        Controller "ptcp:6658"
        fail_mode: secure
        Port s5-eth4
            Interface s5-eth4
        Port s5-eth2
            Interface s5-eth2
        Port s5-eth7
            Interface s5-eth7
        Port s5-eth9
            Interface s5-eth9
        Port s5-eth3
            Interface s5-eth3
        Port s5-eth13
            Interface s5-eth13
        Port s5-eth12
            Interface s5-eth12
        Port s5-eth6
            Interface s5-eth6
        Port s5-eth15
            Interface s5-eth15
        Port s5-eth11
            Interface s5-eth11
        Port s5
            Interface s5
                type: internal
        Port s5-eth10
            Interface s5-eth10
        Port s5-eth14
            Interface s5-eth14
        Port s5-eth8
            Interface s5-eth8
        Port s5-eth1
            Interface s5-eth1
        Port s5-eth5
            Interface s5-eth5
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-10-11T02:23:08.786601" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Bridge s3
        Controller "tcp:10.30.171.238:6633"
        Controller "ptcp:6656"
        fail_mode: secure
        Port s3-eth5
            Interface...</msg>
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-11T02:23:08.501627" elapsed="0.285000"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>database connection failed</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="PASS" start="2026-10-11T02:23:08.786835" elapsed="0.000548"/>
</kw>
<arg>${switches}</arg>
<arg>mininet_timeout=${mininet_timeout}</arg>
<doc>Start a custom mininet topology.</doc>
<status status="PASS" start="2026-10-11T02:23:06.365313" elapsed="2.422135"/>
</kw>
<msg time="2026-10-11T02:23:08.787554" level="INFO">${status} = PASS</msg>
<msg time="2026-10-11T02:23:08.787596" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>MininetKeywords.Start Mininet Full Mesh</arg>
<arg>${switches}</arg>
<arg>mininet_timeout=${mininet_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-11T02:23:06.364819" elapsed="2.422798"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail starting mininet</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:08.787885" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:08.787722" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:08.787688" elapsed="0.000286"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-11T02:23:08.788396" level="INFO">${start_time} = 2026-10-11 02:23:08.788</msg>
<var>${start_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-10-11T02:23:08.788141" elapsed="0.000280"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Verify controller is OK</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-11T02:23:08.788628" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Verify Controller Is Not Dead" owner="Utils">
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:08.794290" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-11T02:23:08.794020" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:08.794001" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:08.794689" level="INFO">index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 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-10-11T02:23:08.794787" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=stric...</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-11T02:23:08.794565" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:08.795336" level="INFO">Attempting to execute command "grep -c 'java.lang.OutOfMemoryError' /tmp/karaf-0.25.0-SNAPSHOT/data/log/karaf.log" on remote system "10.30.171.238" 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-10-11T02:23:08.795020" elapsed="0.000359"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:08.795895" level="INFO">${conn_id} = 3</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-10-11T02:23:08.795561" elapsed="0.000359"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-11T02:23:08.796951" level="INFO">Length is 0.</msg>
<msg time="2026-10-11T02:23:08.797021" 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-10-11T02:23:08.796692" elapsed="0.000350"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:08.797199" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-11T02:23:08.798647" level="INFO">Logging into '10.30.171.238:22' as 'jenkins'.</msg>
<msg time="2026-10-11T02:23:09.491668" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Sun Oct 11 02:22:26 UTC 2026

  System load:  0.25               Processes:             125
  Usage of /:   13.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.238
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

14 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.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-51063-11-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-10-11T02:23:08.798074" elapsed="0.693761"/>
</kw>
<msg time="2026-10-11T02:23:09.491910" 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-10-11T02:23:08.797687" elapsed="0.694295"/>
</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-10-11T02:23:08.796116" elapsed="0.695946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T02:23:09.492455" level="INFO">Executing command 'grep -c 'java.lang.OutOfMemoryError' /tmp/karaf-0.25.0-SNAPSHOT/data/log/karaf.log'.</msg>
<msg time="2026-10-11T02:23:09.514963" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T02:23:09.515071" level="INFO">${stdout} = 0</msg>
<msg time="2026-10-11T02:23:09.515110" 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-10-11T02:23:09.492290" elapsed="0.022841"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-11T02:23:09.515315" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:09.516043" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:09.515786" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:09.516269" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:09.516151" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:09.516130" elapsed="0.000209"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-11T02:23:09.516478" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-10-11T02:23:09.516393" elapsed="0.000143"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:09.516378" elapsed="0.000180"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:09.516594" elapsed="0.000013"/>
</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-10-11T02:23:09.517984" elapsed="0.000169"/>
</kw>
<msg time="2026-10-11T02:23:09.518193" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:09.517318" elapsed="0.000958"/>
</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-10-11T02:23:09.518462" elapsed="0.000020"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:09.518618" elapsed="0.000018"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-11T02:23:09.516911" elapsed="0.001779"/>
</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-10-11T02:23:08.793582" elapsed="0.725180"/>
</kw>
<msg time="2026-10-11T02:23:09.518808" 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-10-11T02:23:08.793024" elapsed="0.725842"/>
</kw>
<msg time="2026-10-11T02:23:09.518965" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-11T02:23:08.792487" elapsed="0.726500"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-10-11T02:23:09.519188" elapsed="0.000295"/>
</kw>
<arg>${controller_ip}</arg>
<arg>java.lang.OutOfMemoryError</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/openflowplugin-csit-1node-longevity-only-manganese/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-10-11T02:23:08.791998" elapsed="0.727539"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Will execute any tests to verify the controller is not dead. Some checks are
Out Of Memory Execptions.</doc>
<status status="PASS" start="2026-10-11T02:23:08.789549" elapsed="0.730034"/>
</kw>
<msg time="2026-10-11T02:23:09.519665" level="INFO">${status} = PASS</msg>
<msg time="2026-10-11T02:23:09.519704" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>Utils.Verify Controller Is Not Dead</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-11T02:23:08.789113" elapsed="0.730612"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Controller is dead</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:09.519896" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:09.519793" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:09.519775" elapsed="0.000187"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Verify Controller Has No Null Pointer Exceptions" owner="Utils">
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:09.525262" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-11T02:23:09.524986" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:09.524967" elapsed="0.000371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:09.525639" level="INFO">index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 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-10-11T02:23:09.525738" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=stric...</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-11T02:23:09.525536" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:09.526305" level="INFO">Attempting to execute command "grep -c 'java.lang.NullPointerException' /tmp/karaf-0.25.0-SNAPSHOT/data/log/karaf.log" on remote system "10.30.171.238" 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-10-11T02:23:09.526003" elapsed="0.000345"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:09.526829" level="INFO">${conn_id} = 4</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-10-11T02:23:09.526527" elapsed="0.000339"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-11T02:23:09.527668" level="INFO">Length is 0.</msg>
<msg time="2026-10-11T02:23:09.527735" 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-10-11T02:23:09.527429" elapsed="0.000327"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:09.527921" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-11T02:23:09.529292" level="INFO">Logging into '10.30.171.238:22' as 'jenkins'.</msg>
<msg time="2026-10-11T02:23:10.149386" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Sun Oct 11 02:22:26 UTC 2026

  System load:  0.25               Processes:             125
  Usage of /:   13.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.238
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

14 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.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Oct 11 02:23:09 2026 from 10.30.170.193
[?2004h[jenkins@releng-51063-11-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-10-11T02:23:09.528749" elapsed="0.621038"/>
</kw>
<msg time="2026-10-11T02:23:10.149933" 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-10-11T02:23:09.528385" elapsed="0.621691"/>
</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-10-11T02:23:09.527062" elapsed="0.623226"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T02:23:10.151124" level="INFO">Executing command 'grep -c 'java.lang.NullPointerException' /tmp/karaf-0.25.0-SNAPSHOT/data/log/karaf.log'.</msg>
<msg time="2026-10-11T02:23:10.164078" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T02:23:10.164337" level="INFO">${stdout} = 0</msg>
<msg time="2026-10-11T02:23:10.164428" 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-10-11T02:23:10.150759" elapsed="0.013716"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-11T02:23:10.164827" elapsed="0.000772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:10.166707" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:10.166123" elapsed="0.000670"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:10.167199" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:10.166976" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:10.166924" elapsed="0.000452"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-11T02:23:10.167666" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-10-11T02:23:10.167485" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:10.167453" elapsed="0.000383"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:10.167928" elapsed="0.000029"/>
</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-10-11T02:23:10.170704" elapsed="0.000395"/>
</kw>
<msg time="2026-10-11T02:23:10.171188" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:10.169510" elapsed="0.001851"/>
</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-10-11T02:23:10.171764" elapsed="0.000044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:10.172135" elapsed="0.000040"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-11T02:23:10.168597" elapsed="0.003732"/>
</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-10-11T02:23:09.524551" elapsed="0.647932"/>
</kw>
<msg time="2026-10-11T02:23:10.172653" 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-10-11T02:23:09.524024" elapsed="0.648731"/>
</kw>
<msg time="2026-10-11T02:23:10.172992" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-11T02:23:09.523499" elapsed="0.649542"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-10-11T02:23:10.173521" elapsed="0.000623"/>
</kw>
<arg>${controller_ip}</arg>
<arg>java.lang.NullPointerException</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/openflowplugin-csit-1node-longevity-only-manganese/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-10-11T02:23:09.523037" elapsed="0.651269"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Will execute any tests to verify the controller is not having any null pointer eceptions.</doc>
<status status="PASS" start="2026-10-11T02:23:09.520539" elapsed="0.653878"/>
</kw>
<msg time="2026-10-11T02:23:10.174593" level="INFO">${status} = PASS</msg>
<msg time="2026-10-11T02:23:10.174680" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>Utils.Verify Controller Has No Null Pointer Exceptions</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-11T02:23:09.520148" elapsed="0.654577"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Controller has NPE</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:10.175092" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:10.174899" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:10.174836" elapsed="0.000433"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Verify Controller Has No Runtime Exceptions" owner="Utils">
<kw name="Check Karaf Log File Does Not Have Messages" owner="Utils">
<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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:10.186781" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-11T02:23:10.186164" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:10.186125" elapsed="0.000843"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:10.187672" level="INFO">index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 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-10-11T02:23:10.187908" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=stric...</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-11T02:23:10.187441" elapsed="0.000525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:10.188819" level="INFO">Attempting to execute command "grep -c 'java.lang.RuntimeException' /tmp/karaf-0.25.0-SNAPSHOT/data/log/karaf.log" on remote system "10.30.171.238" 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-10-11T02:23:10.188421" elapsed="0.000471"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:10.189572" level="INFO">${conn_id} = 5</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-10-11T02:23:10.189142" elapsed="0.000464"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-11T02:23:10.190748" level="INFO">Length is 0.</msg>
<msg time="2026-10-11T02:23:10.190842" 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-10-11T02:23:10.190415" elapsed="0.000473"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:10.191098" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-11T02:23:10.193298" level="INFO">Logging into '10.30.171.238:22' as 'jenkins'.</msg>
<msg time="2026-10-11T02:23:10.569519" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Sun Oct 11 02:22:26 UTC 2026

  System load:  0.25               Processes:             125
  Usage of /:   13.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.238
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

14 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.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Oct 11 02:23:10 2026 from 10.30.170.193
[?2004h[jenkins@releng-51063-11-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-10-11T02:23:10.192543" elapsed="0.377145"/>
</kw>
<msg time="2026-10-11T02:23:10.569745" 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-10-11T02:23:10.191756" elapsed="0.378045"/>
</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-10-11T02:23:10.189890" elapsed="0.380042"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T02:23:10.570312" level="INFO">Executing command 'grep -c 'java.lang.RuntimeException' /tmp/karaf-0.25.0-SNAPSHOT/data/log/karaf.log'.</msg>
<msg time="2026-10-11T02:23:10.583116" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-11T02:23:10.583236" level="INFO">${stdout} = 0</msg>
<msg time="2026-10-11T02:23:10.583277" 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-10-11T02:23:10.570138" elapsed="0.013159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-11T02:23:10.583455" elapsed="0.000217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:10.584146" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:10.583908" elapsed="0.000276"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:10.584364" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:10.584269" elapsed="0.000138"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:10.584248" elapsed="0.000179"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-11T02:23:10.584554" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-11T02:23:10.584474" elapsed="0.000135"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:10.584460" elapsed="0.000170"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:10.584660" elapsed="0.000013"/>
</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-10-11T02:23:10.585794" elapsed="0.000183"/>
</kw>
<msg time="2026-10-11T02:23:10.586016" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:10.585365" elapsed="0.000708"/>
</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-10-11T02:23:10.586275" elapsed="0.000020"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:10.586436" elapsed="0.000018"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-11T02:23:10.584962" elapsed="0.001545"/>
</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-10-11T02:23:10.185179" elapsed="0.401396"/>
</kw>
<msg time="2026-10-11T02:23:10.586620" 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-10-11T02:23:10.183960" elapsed="0.402703"/>
</kw>
<msg time="2026-10-11T02:23:10.586757" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${ip}</arg>
<arg>grep -c '${message}' ${log_file}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-11T02:23:10.182759" elapsed="0.404019"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${output}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-10-11T02:23:10.586988" elapsed="0.000340"/>
</kw>
<arg>${controller_ip}</arg>
<arg>java.lang.RuntimeException</arg>
<doc>Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
karaf.log file can be overridden with /w/workspace/openflowplugin-csit-1node-longevity-only-manganese/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-10-11T02:23:10.181734" elapsed="0.405650"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Will execute any tests to verify the controller is not having any runtime eceptions.</doc>
<status status="PASS" start="2026-10-11T02:23:10.176542" elapsed="0.410891"/>
</kw>
<msg time="2026-10-11T02:23:10.587515" level="INFO">${status} = PASS</msg>
<msg time="2026-10-11T02:23:10.587554" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>Utils.Verify Controller Has No Runtime Exceptions</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-11T02:23:10.175684" elapsed="0.411890"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Controller has RuntimeException</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:10.587726" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:10.587642" elapsed="0.000128"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:10.587624" elapsed="0.000165"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Checking ${switches} switches</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-11T02:23:10.588000" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:11.112610" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:11.112845" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:11.113209" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:10.590092" elapsed="0.525248">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:11.115984" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:11.116485" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:11.116995" elapsed="0.000045"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:10.589946" elapsed="0.527223">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:10.589719" elapsed="0.527626">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:10.589503" elapsed="0.528081">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:13.125745" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:13.125893" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:13.126111" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:13.119707" elapsed="0.007355">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:13.127662" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:13.128148" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:13.128624" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:13.119387" elapsed="0.009388">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:13.118881" elapsed="0.010041">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:13.118363" elapsed="0.010773">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:15.137956" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:15.138076" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:15.138329" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:15.131300" elapsed="0.007908">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:15.139806" elapsed="0.000080"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:15.140408" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:15.140888" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:15.130945" elapsed="0.010097">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:15.130439" elapsed="0.010731">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:15.129886" elapsed="0.011534">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:17.151363" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:17.151505" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:17.151761" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:17.144595" elapsed="0.008090">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:17.153324" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:17.153791" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:17.154293" elapsed="0.000043"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:17.144261" elapsed="0.010186">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:17.143145" elapsed="0.011429">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:17.142469" elapsed="0.012319">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:19.163440" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:19.163557" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:19.163760" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:19.156877" elapsed="0.007734">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:19.165233" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:19.165710" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:19.166265" elapsed="0.000048"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:19.156538" elapsed="0.009888">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:19.156071" elapsed="0.010564">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:19.155559" elapsed="0.011306">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:21.177003" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:21.177126" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:21.177385" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:21.170034" elapsed="0.008300">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:21.178940" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:21.179437" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:21.179911" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:21.169685" elapsed="0.010379">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:21.169182" elapsed="0.011003">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:21.168430" elapsed="0.012003">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:23.189715" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:23.189858" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:23.190090" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:23.183645" elapsed="0.007382">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:23.191663" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:23.192161" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:23.193143" elapsed="0.000047"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:23.183292" elapsed="0.010049">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:23.182720" elapsed="0.010747">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:23.181988" elapsed="0.011685">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:25.202723" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:25.202964" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:25.203202" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:25.196108" elapsed="0.008024">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:25.204749" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:25.205252" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:25.205697" elapsed="0.000039"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:25.195760" elapsed="0.010108">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:25.195283" elapsed="0.010706">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:25.194634" elapsed="0.011558">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:27.215277" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:27.215400" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:27.215614" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:27.208740" elapsed="0.007777">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:27.217141" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:27.217638" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:27.218112" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:27.208414" elapsed="0.009882">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:27.207911" elapsed="0.010506">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:27.207269" elapsed="0.011359">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:29.228009" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:29.228155" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:29.228537" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:29.221121" elapsed="0.008342">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:29.230085" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:29.230582" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:29.231057" elapsed="0.000043"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:29.220734" elapsed="0.010510">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:29.220271" elapsed="0.011095">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:29.219632" elapsed="0.011933">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:31.241091" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:31.241207" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:31.241478" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:31.234053" elapsed="0.008334">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:31.243015" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:31.243517" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:31.243990" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:31.233695" elapsed="0.010448">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:31.233202" elapsed="0.011089">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:31.232572" elapsed="0.011921">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:33.253492" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:33.253613" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:33.253854" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:33.246958" elapsed="0.007807">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:33.255414" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:33.255986" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:33.256468" elapsed="0.000043"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:33.246606" elapsed="0.010015">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:33.246104" elapsed="0.010636">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:33.245452" elapsed="0.011510">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:35.266053" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:35.266176" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:35.266437" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:35.259555" elapsed="0.007796">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:35.267958" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:35.268449" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:35.268916" elapsed="0.000043"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:35.259163" elapsed="0.009908">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:35.258649" elapsed="0.010541">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:35.257970" elapsed="0.011468">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:37.278387" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:37.278511" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:37.278743" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:37.272026" elapsed="0.007804">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:37.280493" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:37.280997" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:37.281498" elapsed="0.000045"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:37.271632" elapsed="0.010028">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:37.271091" elapsed="0.010855">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:37.270440" elapsed="0.011728">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:39.291982" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:39.292103" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:39.292370" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:39.285276" elapsed="0.008071">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:39.293966" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:39.294458" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:39.294931" elapsed="0.000041"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:39.284913" elapsed="0.010171">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:39.284409" elapsed="0.010791">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:39.283152" elapsed="0.012281">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:41.305622" level="INFO">GET Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:41.305732" level="INFO">GET Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-11T02:23:41.305963" level="FAIL">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-11T02:23:41.298053" elapsed="0.008752">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.307389" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.307828" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.308277" elapsed="0.000038"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-11T02:23:41.297735" elapsed="0.010684">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-11T02:23:41.297308" elapsed="0.011221">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${switches}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-11T02:23:41.296686" elapsed="0.012031">Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-11T02:23:41.308896" level="FAIL">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying for 30 seconds. The last error was: Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<arg>30s</arg>
<arg>2s</arg>
<arg>FlowLib.Check Switches In Inventory</arg>
<arg>${switches}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-11T02:23:10.588967" elapsed="30.720192">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying for 30 seconds. The last error was: Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-11T02:23:41.309393" level="INFO">${status} = FAIL</msg>
<msg time="2026-10-11T02:23:41.309468" level="INFO">${result} = Keyword 'FlowLib.Check Switches In Inventory' failed after retrying for 30 seconds. The last error was: Url: http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expecte...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>Wait Until Keyword Succeeds</arg>
<arg>30s</arg>
<arg>2s</arg>
<arg>FlowLib.Check Switches In Inventory</arg>
<arg>${switches}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-11T02:23:10.588538" elapsed="30.720973"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking switch</value>
<value>${topology_discover_time}</value>
<status status="PASS" start="2026-10-11T02:23:41.309901" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-10-11T02:23:41.309683" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:41.309637" elapsed="0.000438"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Check number of links in inventory is ${links}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.310483" elapsed="0.000040"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>Wait Until Keyword Succeeds</arg>
<arg>10s</arg>
<arg>2s</arg>
<arg>FlowLib.Check Number Of Links</arg>
<arg>${links}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.310920" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking topology</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.311170" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.311107" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.311074" elapsed="0.000243"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<var>${end_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.311621" elapsed="0.000039"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<var>${topology_discover_time}</var>
<arg>${end_time}</arg>
<arg>${start_time}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.311993" elapsed="0.000038"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Topology Discovery Time = ${topology_discover_time} seconds</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.312441" elapsed="0.000039"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Adding ${flow_count} flows</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.312867" elapsed="0.000038"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>ScaleClient.Configure Flows</arg>
<arg>flow_details=${flows}</arg>
<arg>controllers=${controller_list}</arg>
<arg>nrthreads=${nrthreads}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.313298" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail configuring flows</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.313541" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.313475" elapsed="0.000150"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.313442" elapsed="0.000225"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Checking ${flow_count} flows in Mininet</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.314071" elapsed="0.000040"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>MininetKeywords.Verify Aggregate Flow From Mininet Session</arg>
<arg>${mininet_conn_id}</arg>
<arg>${flows_after}</arg>
<arg>${switches}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.314500" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking flows in mininet</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.314742" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.314676" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.314645" elapsed="0.000237"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Checking ${flow_count} flows in Operational DS</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.315276" elapsed="0.000039"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>Wait Until Keyword Succeeds</arg>
<arg>${switches*4}</arg>
<arg>2s</arg>
<arg>FlowLib.Check Flows Operational Datastore</arg>
<arg>${flows_after}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.315687" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking flows in operational DS</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.315970" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.315903" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.315868" elapsed="0.000232"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Sleep for ${sustain_time} seconds</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.316488" elapsed="0.000046"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${sustain_time}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.316882" elapsed="0.000038"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Deleting ${flow_count} flows</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.317314" elapsed="0.000040"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>ScaleClient.Deconfigure Flows</arg>
<arg>flow_details=${flows}</arg>
<arg>controllers=${controller_list}</arg>
<arg>nrthreads=${nrthreads}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.317721" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail deconfiguring flows</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.317988" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.317925" elapsed="0.000142"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.317884" elapsed="0.000371"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Checking no flows in Mininet</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.318646" elapsed="0.000040"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>MininetKeywords.Verify Aggregate Flow From Mininet Session</arg>
<arg>${mininet_conn_id}</arg>
<arg>${flows_before}</arg>
<arg>${switches}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.319082" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking no flows in mininet</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.319350" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.319286" elapsed="0.000151"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.319254" elapsed="0.000225"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Checking no flows in Operational DS</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.319865" elapsed="0.000042"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>Wait Until Keyword Succeeds</arg>
<arg>${switches*4}</arg>
<arg>2s</arg>
<arg>FlowLib.Check Flows Operational Datastore</arg>
<arg>${flows_before}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.320303" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking no flows in operational DS</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.320548" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.320488" elapsed="0.000139"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.320456" elapsed="0.000208"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Stopping Mininet</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.321056" elapsed="0.000039"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>MininetKeywords.Stop Mininet And Exit</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.321492" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail stopping mininet</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.321719" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.321656" elapsed="0.000163"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.321624" elapsed="0.000236"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Checking No Switches</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.322256" elapsed="0.000039"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>Wait Until Keyword Succeeds</arg>
<arg>10s</arg>
<arg>2s</arg>
<arg>FlowLib.Check No Switches In Inventory</arg>
<arg>${switches}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.322666" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking no switch</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.322852" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.322804" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.322769" elapsed="0.000174"/>
</if>
<kw name="Log To Console" owner="BuiltIn">
<arg>Checking No Topology</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.323202" elapsed="0.000045"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${result}</var>
<arg>Wait Until Keyword Succeeds</arg>
<arg>10s</arg>
<arg>2s</arg>
<arg>FlowLib.Check No Switches In Topology</arg>
<arg>${switches}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.323512" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<return>
<value>${status}</value>
<value>Fail checking no topology</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.323678" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:41.323634" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.323612" elapsed="0.000162"/>
</if>
<return>
<value>PASS</value>
<value>${error_message}</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-11T02:23:41.323830" elapsed="0.000018"/>
</return>
<msg time="2026-10-11T02:23:41.324051" level="INFO">${status} = FAIL</msg>
<msg time="2026-10-11T02:23:41.324110" level="INFO">${error_message} = Fail checking switch</msg>
<msg time="2026-10-11T02:23:41.324164" level="INFO">${topology_discover_time} = 0</msg>
<var>${status}</var>
<var>${error_message}</var>
<var>${topology_discover_time}</var>
<arg>${switches}</arg>
<arg>${SUSTAIN_TIME}</arg>
<doc>Workflow to bring a Full mesh topology of 16 switches, push some flows, delete flows and stop topology.
This KW returns workflow state (PASS/FAIL), error message and topology discover time.</doc>
<status status="PASS" start="2026-10-11T02:23:06.338051" elapsed="34.986143"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-11T02:23:41.324770" level="INFO">${current_time} = 2026-10-11 02:23:41.325</msg>
<var>${current_time}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-10-11T02:23:41.324479" elapsed="0.000341"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-10-11T02:23:41.329273" level="INFO">${duration} = 34.992</msg>
<var>${duration}</var>
<arg>${current_time}</arg>
<arg>${start_time}</arg>
<arg>number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-10-11T02:23:41.325047" elapsed="0.004264"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<break>
<status status="PASS" start="2026-10-11T02:23:41.329557" elapsed="0.000051"/>
</break>
<status status="PASS" start="2026-10-11T02:23:41.329413" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:41.329387" elapsed="0.000299"/>
</if>
<if>
<branch type="IF" condition="${duration} &gt; ${max_duration}">
<break>
<status status="NOT RUN" start="2026-10-11T02:23:41.329828" elapsed="0.000019"/>
</break>
<status status="NOT RUN" start="2026-10-11T02:23:41.329764" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-10-11T02:23:41.329743" elapsed="0.000168"/>
</if>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-11T02:23:06.336903" elapsed="34.993041"/>
</iter>
<var>${i}</var>
<value>1</value>
<value>65536</value>
<status status="PASS" start="2026-10-11T02:23:06.333675" elapsed="34.996309"/>
</for>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-10-11T02:23:41.330543" level="INFO">${duration_compact} = 34s 992ms</msg>
<var>${duration_compact}</var>
<arg>${duration}</arg>
<arg>compact</arg>
<doc>Converts between supported [time formats].</doc>
<status status="PASS" start="2026-10-11T02:23:41.330237" elapsed="0.000339"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${\n}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-11T02:23:41.330924" elapsed="0.000542"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Execution stopped because: ${error_message}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-11T02:23:41.331909" elapsed="0.000328"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Test executed for ${duration_compact} seconds</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-11T02:23:41.332441" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-10-11T02:23:41.333354" level="FAIL">Fail checking switch</msg>
<arg>${error_message}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-10-11T02:23:41.333054" elapsed="0.000362">Fail checking switch</status>
</kw>
<status status="FAIL" start="2026-10-11T02:23:41.332812" elapsed="0.000659">Fail checking switch</status>
</branch>
<status status="FAIL" start="2026-10-11T02:23:41.332782" elapsed="0.000718">Fail checking switch</status>
</if>
<doc>Uses OpenFlow Full Mesh Topology workflow in a loop for given period of time 23h</doc>
<status status="FAIL" start="2026-10-11T02:23:06.331103" elapsed="35.002543">Fail checking switch</status>
</test>
<kw name="Workflow Teardown" owner="WorkflowsOpenFlow" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:41.338904" level="INFO">DELETE Request : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-11T02:23:41.339129" level="INFO">DELETE Response : url=http://10.30.171.238:8181/rests/data/opendaylight-inventory:nodes 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-11T02:23:41.334947" elapsed="0.004241"/>
</kw>
<arg>RequestsLibrary.DELETE On Session</arg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<arg>expected_status=anything</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-11T02:23:41.334575" elapsed="0.004685"/>
</kw>
<kw name="Clean Mininet System" owner="Utils">
<kw name="Run Command On Mininet" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:41.341510" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-11T02:23:41.341243" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:41.341224" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:41.341932" level="INFO">index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 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-10-11T02:23:41.342031" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=stric...</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-11T02:23:41.341800" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:41.342559" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.171" 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-10-11T02:23:41.342267" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:41.343134" level="INFO">${conn_id} = 6</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-10-11T02:23:41.342784" elapsed="0.000374"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-11T02:23:41.343967" level="INFO">Length is 0.</msg>
<msg time="2026-10-11T02:23:41.344036" 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-10-11T02:23:41.343688" elapsed="0.000369"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:41.344226" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-11T02:23:41.345481" level="INFO">Logging into '10.30.171.171:22' as 'jenkins'.</msg>
<msg time="2026-10-11T02:23:41.951669" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sun Oct 11 02:23:41 UTC 2026

  System load:  0.63               Processes:             135
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.171.171
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

14 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.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Oct 11 02:23:06 2026 from 10.30.170.193
[?2004h[jenkins@releng-51063-11-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-10-11T02:23:41.345244" elapsed="0.606628"/>
</kw>
<msg time="2026-10-11T02:23:41.951979" 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-10-11T02:23:41.344850" elapsed="0.607252"/>
</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-10-11T02:23:41.343375" elapsed="0.608964"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T02:23:41.953004" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-11T02:23:46.940267" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-11T02:23:46.940609" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T02:23:46.940702" level="INFO">${stderr} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec iv...</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-10-11T02:23:41.952707" elapsed="4.988048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-11T02:23:46.941255" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:46.942960" level="INFO">*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2&gt; /dev/null
pkill -9 -f "sudo mnexec"
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'
***  Removing OVS datapaths
ovs-vsctl --timeout=1 list-br
ovs-vsctl --if-exists del-br s1 -- --if-exists del-br s10 -- --if-exists del-br s11 -- --if-exists del-br s12 -- --if-exists del-br s13 -- --if-exists del-br s14 -- --if-exists del-br s15 -- --if-exists del-br s16 -- --if-exists del-br s2 -- --if-exists del-br s3 -- --if-exists del-br s4 -- --if-exists del-br s5 -- --if-exists del-br s6 -- --if-exists del-br s7 -- --if-exists del-br s8 -- --if-exists del-br s9
ovs-vsctl --timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)'
( ip link del s1-eth1;ip link del s2-eth1;ip link del s2-eth1;ip link del s1-eth1;ip link del s1-eth2;ip link del s3-eth1;ip link del s3-eth1;ip link del s1-eth2;ip link del s2-eth2;ip link del s3-eth2;ip link del s3-eth2;ip link del s2-eth2;ip link del s1-eth3;ip link del s4-eth1;ip link del s4-eth1;ip link del s1-eth3;ip link del s2-eth3;ip link del s4-eth2;ip link del s4-eth2;ip link del s2-eth3;ip link del s3-eth3;ip link del s4-eth3;ip link del s4-eth3;ip link del s3-eth3;ip link del s1-eth4;ip link del s5-eth1;ip link del s5-eth1;ip link del s1-eth4;ip link del s2-eth4;ip link del s5-eth2;ip link del s5-eth2;ip link del s2-eth4;ip link del s3-eth4;ip link del s5-eth3;ip link del s5-eth3;ip link del s3-eth4;ip link del s4-eth4;ip link del s5-eth4;ip link del s5-eth4;ip link del s4-eth4;ip link del s1-eth5;ip link del s6-eth1;ip link del s6-eth1;ip link del s1-eth5;ip link del s2-eth5;ip link del s6-eth2;ip link del s6-eth2;ip link del s2-eth5;ip link del s3-eth5;ip link del s6-eth3;ip link del s6-eth3;ip link del s3-eth5;ip link del s4-eth5;ip link del s6-eth4;ip link del s6-eth4;ip link del s4-eth5;ip link del s5-eth5;ip link del s6-eth5;ip link del s6-eth5;ip link del s5-eth5;ip link del s1-eth6;ip link del s7-eth1;ip link del s7-eth1;ip link del s1-eth6;ip link del s2-eth6;ip link del s7-eth2;ip link del s7-eth2;ip link del s2-eth6;ip link del s3-eth6;ip link del s7-eth3;ip link del s7-eth3;ip link del s3-eth6;ip link del s4-eth6;ip link del s7-eth4;ip link del s7-eth4;ip link del s4-eth6;ip link del s5-eth6;ip link del s7-eth5;ip link del s7-eth5;ip link del s5-eth6;ip link del s6-eth6;ip link del s7-eth6;ip link del s7-eth6;ip link del s6-eth6;ip link del s1-eth7;ip link del s8-eth1;ip link del s8-eth1;ip link del s1-eth7;ip link del s2-eth7;ip link del s8-eth2;ip link del s8-eth2;ip link del s2-eth7;ip link del s3-eth7;ip link del s8-eth3;ip link del s8-eth3;ip link del s3-eth7;ip link del s4-eth7;ip link del s8-eth4;ip link del s8-eth4;ip link del s4-eth7;ip link del s5-eth7;ip link del s8-eth5;ip link del s8-eth5;ip link del s5-eth7;ip link del s6-eth7;ip link del s8-eth6;ip link del s8-eth6;ip link del s6-eth7;ip link del s7-eth7;ip link del s8-eth7;ip link del s8-eth7;ip link del s7-eth7;ip link del s1-eth8;ip link del s9-eth1;ip link del s9-eth1;ip link del s1-eth8;ip link del s2-eth8;ip link del s9-eth2;ip link del s9-eth2;ip link del s2-eth8;ip link del s3-eth8;ip link del s9-eth3;ip link del s9-eth3;ip link del s3-eth8;ip link del s4-eth8;ip link del s9-eth4;ip link del s9-eth4;ip link del s4-eth8;ip link del s5-eth8;ip link del s9-eth5;ip link del s9-eth5;ip link del s5-eth8;ip link del s6-eth8;ip link del s9-eth6;ip link del s9-eth6;ip link del s6-eth8;ip link del s7-eth8;ip link del s9-eth7;ip link del s9-eth7;ip link del s7-eth8;ip link del s8-eth8;ip link del s9-eth8;ip link del s9-eth8;ip link del s8-eth8;ip link del s1-eth9;ip link del s10-eth1;ip link del s10-eth1;ip link del s1-eth9;ip link del s2-eth9;ip link del s10-eth2;ip link del s10-eth2;ip link del s2-eth9;ip link del s3-eth9;ip link del s10-eth3;ip link del s10-eth3;ip link del s3-eth9;ip link del s4-eth9;ip link del s10-eth4;ip link del s10-eth4;ip link del s4-eth9;ip link del s5-eth9;ip link del s10-eth5;ip link del s10-eth5;ip link del s5-eth9;ip link del s6-eth9;ip link del s10-eth6;ip link del s10-eth6;ip link del s6-eth9;ip link del s7-eth9;ip link del s10-eth7;ip link del s10-eth7;ip link del s7-eth9;ip link del s8-eth9;ip link del s10-eth8;ip link del s10-eth8;ip link del s8-eth9;ip link del s9-eth9;ip link del s10-eth9;ip link del s10-eth9;ip link del s9-eth9;ip link del s1-eth10;ip link del s11-eth1;ip link del s11-eth1;ip link del s1-eth10;ip link del s2-eth10;ip link del s11-eth2;ip link del s11-eth2;ip link del s2-eth10;ip link del s3-eth10;ip link del s11-eth3;ip link del s11-eth3;ip link del s3-eth10;ip link del s4-eth10;ip link del s11-eth4;ip link del s11-eth4;ip link del s4-eth10;ip link del s5-eth10;ip link del s11-eth5;ip link del s11-eth5;ip link del s5-eth10;ip link del s6-eth10;ip link del s11-eth6;ip link del s11-eth6;ip link del s6-eth10;ip link del s7-eth10;ip link del s11-eth7;ip link del s11-eth7;ip link del s7-eth10;ip link del s8-eth10;ip link del s11-eth8;ip link del s11-eth8;ip link del s8-eth10;ip link del s9-eth10;ip link del s11-eth9;ip link del s11-eth9;ip link del s9-eth10;ip link del s10-eth10;ip link del s11-eth10;ip link del s11-eth10;ip link del s10-eth10;ip link del s1-eth11;ip link del s12-eth1;ip link del s12-eth1;ip link del s1-eth11;ip link del s2-eth11;ip link del s12-eth2;ip link del s12-eth2;ip link del s2-eth11;ip link del s3-eth11;ip link del s12-eth3;ip link del s12-eth3;ip link del s3-eth11;ip link del s4-eth11;ip link del s12-eth4;ip link del s12-eth4;ip link del s4-eth11;ip link del s5-eth11;ip link del s12-eth5;ip link del s12-eth5;ip link del s5-eth11;ip link del s6-eth11;ip link del s12-eth6;ip link del s12-eth6;ip link del s6-eth11;ip link del s7-eth11;ip link del s12-eth7;ip link del s12-eth7;ip link del s7-eth11;ip link del s8-eth11;ip link del s12-eth8;ip link del s12-eth8;ip link del s8-eth11;ip link del s9-eth11;ip link del s12-eth9;ip link del s12-eth9;ip link del s9-eth11;ip link del s10-eth11;ip link del s12-eth10;ip link del s12-eth10;ip link del s10-eth11;ip link del s11-eth11;ip link del s12-eth11;ip link del s12-eth11;ip link del s11-eth11;ip link del s1-eth12;ip link del s13-eth1;ip link del s13-eth1;ip link del s1-eth12;ip link del s2-eth12;ip link del s13-eth2;ip link del s13-eth2;ip link del s2-eth12;ip link del s3-eth12;ip link del s13-eth3;ip link del s13-eth3;ip link del s3-eth12;ip link del s4-eth12;ip link del s13-eth4;ip link del s13-eth4;ip link del s4-eth12;ip link del s5-eth12;ip link del s13-eth5;ip link del s13-eth5;ip link del s5-eth12;ip link del s6-eth12;ip link del s13-eth6;ip link del s13-eth6;ip link del s6-eth12;ip link del s7-eth12;ip link del s13-eth7;ip link del s13-eth7;ip link del s7-eth12;ip link del s8-eth12;ip link del s13-eth8;ip link del s13-eth8;ip link del s8-eth12;ip link del s9-eth12;ip link del s13-eth9;ip link del s13-eth9;ip link del s9-eth12;ip link del s10-eth12;ip link del s13-eth10;ip link del s13-eth10;ip link del s10-eth12;ip link del s11-eth12;ip link del s13-eth11;ip link del s13-eth11;ip link del s11-eth12;ip link del s12-eth12;ip link del s13-eth12;ip link del s13-eth12;ip link del s12-eth12;ip link del s1-eth13;ip link del s14-eth1;ip link del s14-eth1;ip link del s1-eth13;ip link del s2-eth13;ip link del s14-eth2;ip link del s14-eth2;ip link del s2-eth13;ip link del s3-eth13;ip link del s14-eth3;ip link del s14-eth3;ip link del s3-eth13;ip link del s4-eth13;ip link del s14-eth4;ip link del s14-eth4;ip link del s4-eth13;ip link del s5-eth13;ip link del s14-eth5;ip link del s14-eth5;ip link del s5-eth13;ip link del s6-eth13;ip link del s14-eth6;ip link del s14-eth6;ip link del s6-eth13;ip link del s7-eth13;ip link del s14-eth7;ip link del s14-eth7;ip link del s7-eth13;ip link del s8-eth13;ip link del s14-eth8;ip link del s14-eth8;ip link del s8-eth13;ip link del s9-eth13;ip link del s14-eth9;ip link del s14-eth9;ip link del s9-eth13;ip link del s10-eth13;ip link del s14-eth10;ip link del s14-eth10;ip link del s10-eth13;ip link del s11-eth13;ip link del s14-eth11;ip link del s14-eth11;ip link del s11-eth13;ip link del s12-eth13;ip link del s14-eth12;ip link del s14-eth12;ip link del s12-eth13;ip link del s13-eth13;ip link del s14-eth13;ip link del s14-eth13;ip link del s13-eth13;ip link del s1-eth14;ip link del s15-eth1;ip link del s15-eth1;ip link del s1-eth14;ip link del s2-eth14;ip link del s15-eth2;ip link del s15-eth2;ip link del s2-eth14;ip link del s3-eth14;ip link del s15-eth3;ip link del s15-eth3;ip link del s3-eth14;ip link del s4-eth14;ip link del s15-eth4;ip link del s15-eth4;ip link del s4-eth14;ip link del s5-eth14;ip link del s15-eth5;ip link del s15-eth5;ip link del s5-eth14;ip link del s6-eth14;ip link del s15-eth6;ip link del s15-eth6;ip link del s6-eth14;ip link del s7-eth14;ip link del s15-eth7;ip link del s15-eth7;ip link del s7-eth14;ip link del s8-eth14;ip link del s15-eth8;ip link del s15-eth8;ip link del s8-eth14;ip link del s9-eth14;ip link del s15-eth9;ip link del s15-eth9;ip link del s9-eth14;ip link del s10-eth14;ip link del s15-eth10;ip link del s15-eth10;ip link del s10-eth14;ip link del s11-eth14;ip link del s15-eth11;ip link del s15-eth11;ip link del s11-eth14;ip link del s12-eth14;ip link del s15-eth12;ip link del s15-eth12;ip link del s12-eth14;ip link del s13-eth14;ip link del s15-eth13;ip link del s15-eth13;ip link del s13-eth14;ip link del s14-eth14;ip link del s15-eth14;ip link del s15-eth14;ip link del s14-eth14;ip link del s1-eth15;ip link del s16-eth1;ip link del s16-eth1;ip link del s1-eth15;ip link del s2-eth15;ip link del s16-eth2;ip link del s16-eth2;ip link del s2-eth15;ip link del s3-eth15;ip link del s16-eth3;ip link del s16-eth3;ip link del s3-eth15;ip link del s4-eth15;ip link del s16-eth4;ip link del s16-eth4;ip link del s4-eth15;ip link del s5-eth15;ip link del s16-eth5;ip link del s16-eth5;ip link del s5-eth15;ip link del s6-eth15;ip link del s16-eth6;ip link del s16-eth6;ip link del s6-eth15;ip link del s7-eth15;ip link del s16-eth7;ip link del s16-eth7;ip link del s7-eth15;ip link del s8-eth15;ip link del s16-eth8;ip link del s16-eth8;ip link del s8-eth15;ip link del s9-eth15;ip link del s16-eth9;ip link del s16-eth9;ip link del s9-eth15;ip link del s10-eth15;ip link del s16-eth10;ip link del s16-eth10;ip link del s10-eth15;ip link del s11-eth15;ip link del s16-eth11;ip link del s16-eth11;ip link del s11-eth15;ip link del s12-eth15;ip link del s16-eth12;ip link del s16-eth12;ip link del s12-eth15;ip link del s13-eth15;ip link del s16-eth13;ip link del s16-eth13;ip link del s13-eth15;ip link del s14-eth15;ip link del s16-eth14;ip link del s16-eth14;ip link del s14-eth15;ip link del s15-eth15;ip link del s16-eth15;ip link del s16-eth15;ip link del s15-eth15 ) 2&gt; /dev/null
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:46.942329" elapsed="0.001051"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:46.943842" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:46.943551" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:46.943503" elapsed="0.000492"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-11T02:23:46.944334" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-10-11T02:23:46.944104" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:46.944072" elapsed="0.000443"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:46.944584" elapsed="0.000029"/>
</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-10-11T02:23:46.947385" elapsed="0.000267"/>
</kw>
<msg time="2026-10-11T02:23:46.947756" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:46.946141" elapsed="0.001791"/>
</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-10-11T02:23:46.948373" elapsed="0.000057"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:46.948736" elapsed="0.000061"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-11T02:23:46.945329" elapsed="0.003595"/>
</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-10-11T02:23:41.340859" elapsed="5.608221"/>
</kw>
<msg time="2026-10-11T02:23:46.949182" 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-10-11T02:23:41.340303" elapsed="5.609031"/>
</kw>
<arg>${system}</arg>
<arg>sudo mn -c</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-11T02:23:41.339712" elapsed="5.609774"/>
</kw>
<kw name="Run Command On Mininet" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:46.953568" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-11T02:23:46.952965" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:46.952926" elapsed="0.000806"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:46.954468" level="INFO">index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 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-10-11T02:23:46.954675" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.171
alias=None
port=22
timeout=4 minutes 16 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=stric...</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-11T02:23:46.954201" elapsed="0.000538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:46.955970" level="INFO">Attempting to execute command "sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh" on remote system "10.30.171.171" 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-10-11T02:23:46.955252" elapsed="0.000813"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-11T02:23:46.957277" level="INFO">${conn_id} = 7</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-10-11T02:23:46.956496" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-11T02:23:46.959773" level="INFO">Length is 0.</msg>
<msg time="2026-10-11T02:23:46.959951" 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-10-11T02:23:46.959191" elapsed="0.000808"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:46.960370" elapsed="0.000688"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-11T02:23:46.962908" level="INFO">Logging into '10.30.171.171:22' as 'jenkins'.</msg>
<msg time="2026-10-11T02:23:47.363770" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sun Oct 11 02:23:41 UTC 2026

  System load:  0.63               Processes:             135
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.171.171
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

14 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.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Oct 11 02:23:41 2026 from 10.30.170.193
[?2004h[jenkins@releng-51063-11-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-10-11T02:23:46.962373" elapsed="0.401596"/>
</kw>
<msg time="2026-10-11T02:23:47.364041" 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-10-11T02:23:46.961469" elapsed="0.402652"/>
</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-10-11T02:23:46.958166" elapsed="0.406062"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-11T02:23:47.364723" level="INFO">Executing command 'sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh'.</msg>
<msg time="2026-10-11T02:23:47.407497" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-11T02:23:47.407730" level="INFO">${stdout} = </msg>
<msg time="2026-10-11T02:23:47.407843" 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-10-11T02:23:47.364515" elapsed="0.043376"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-11T02:23:47.408282" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-11T02:23:47.409876" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-11T02:23:47.409268" elapsed="0.000699"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:47.410389" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-10-11T02:23:47.410122" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:47.410077" elapsed="0.000454"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-11T02:23:47.410878" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-10-11T02:23:47.410637" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-10-11T02:23:47.410606" elapsed="0.000446"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-11T02:23:47.411120" elapsed="0.000027"/>
</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-10-11T02:23:47.413869" elapsed="0.000319"/>
</kw>
<msg time="2026-10-11T02:23:47.414351" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-11T02:23:47.412646" elapsed="0.001845"/>
</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-10-11T02:23:47.414977" elapsed="0.000049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-11T02:23:47.415368" elapsed="0.000053"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-11T02:23:47.411838" elapsed="0.003714"/>
</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-10-11T02:23:46.952066" elapsed="0.463637"/>
</kw>
<msg time="2026-10-11T02:23:47.415855" 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-10-11T02:23:46.950769" elapsed="0.465211"/>
</kw>
<arg>${system}</arg>
<arg>sudo ps -elf | egrep 'usr/local/bin/mn' | egrep python | awk '{print "sudo kill -9",$4}' | sh</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-11T02:23:46.949875" elapsed="0.466253"/>
</kw>
<status status="PASS" start="2026-10-11T02:23:41.339458" elapsed="6.076816"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-11T02:23:47.416880" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-11T02:23:47.416668" elapsed="0.000360"/>
</kw>
<doc>Cleanup when workflow is interrupt</doc>
<status status="PASS" start="2026-10-11T02:23:41.334310" elapsed="6.082823"/>
</kw>
<doc>Beta Version of the Longevity Test. Currently it does a single test:
1. runs one iteration of the link scale test based on 16
Step 1 runs in a psuedo infinite loop and before each loop is
run, a time check is made against the 23h. If the test duration
has expired, the loop is exited and the test is marked PASS</doc>
<status status="FAIL" start="2026-10-11T02:23:04.861096" elapsed="42.556100"/>
</suite>
<statistics>
<total>
<stat pass="0" fail="1" skip="0">All Tests</stat>
</total>
<tag>
</tag>
<suite>
<stat name="openflowplugin-longevity.txt" id="s1" pass="0" fail="1" skip="0">openflowplugin-longevity.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
