<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-20T23:11:00.746652" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-scale-link.txt" source="/w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/test/csit/suites/openflowplugin/Maximum_Links">
<suite id="s1-s1" name="Finding Max Links" source="/w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/test/csit/suites/openflowplugin/Maximum_Links/010__finding_max_links.robot">
<kw name="Workflow Setup" owner="WorkflowsOpenFlow" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:01.399790" level="INFO">Creating Session using : alias=session, url=http://10.30.170.214:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7d5a56c93310&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-20T23:11:01.399443" elapsed="0.000685"/>
</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-20T23:11:01.403666" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:01.403546" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:01.403513" elapsed="0.000242"/>
</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-20T23:11:01.403953" elapsed="0.000445"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-20T23:11:01.404850" level="INFO">Logging into '10.30.170.214:8101' as 'karaf'.</msg>
<msg time="2026-10-20T23:11:02.110223" 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-20T23:11:01.404610" elapsed="0.705849"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:11:02.158431" 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-20T23:11:02.110867" elapsed="0.047627"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-20T23:11:02.160152" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-20T23:11:02.160265" 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-20T23:11:02.158692" elapsed="0.001603"/>
</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-20T23:11:02.160461" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:02.160829" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.161624" 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-20T23:11:02.161268" elapsed="0.000405"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:11:02.161726" elapsed="0.000061"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.214
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-20T23:11:01.403238" elapsed="0.758683"/>
</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-20T23:11:01.401313" elapsed="0.760673"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:01.398805" elapsed="0.763240"/>
</kw>
<test id="s1-s1-t1" name="Find Max Links" line="20">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.167403" 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-20T23:11:02.167121" elapsed="0.000308"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.167894" level="INFO">${maximum_links} = 0</msg>
<var>${maximum_links}</var>
<arg>${0}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:11:02.167618" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.168355" level="INFO">${discover_time} = 0</msg>
<var>${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-20T23:11:02.168116" elapsed="0.000263"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Workflow Full Mesh Topology" owner="WorkflowsOpenFlow">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.170453" 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-20T23:11:02.170202" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.170936" 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-20T23:11:02.170663" elapsed="0.000297"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.171595" 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-20T23:11:02.171178" elapsed="0.000522"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.172296" 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-20T23:11:02.171919" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.172763" level="INFO">${controller_list} = ['10.30.170.214']</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-20T23:11:02.172506" elapsed="0.000281"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.173295" 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-20T23:11:02.172996" elapsed="0.000323"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.173829" 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-20T23:11:02.173509" elapsed="0.000345"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.174300" 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-20T23:11:02.174035" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.174755" 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-20T23:11:02.174503" elapsed="0.000276"/>
</kw>
<kw name="Generate New Flow Details" owner="ScaleClient">
<msg time="2026-10-20T23:11:02.194146" level="INFO">${flows} = [(8, 2, 0), (12, 3, 1), (5, 0, 2), (3, 3, 3), (13, 8, 4), (15, 8, 5), (10, 9, 6), (4, 7, 7), (16, 0, 8), (6, 8, 9), (15, 1, 10), (1, 9, 11), (16, 8, 12), (7, 5, 13), (9, 3, 14), (4, 7, 15), (15, 4, 16...</msg>
<msg time="2026-10-20T23:11:02.194255" level="INFO">${notes} = {8: {'total': 613, 2: 72, 6: 57, 5: 62, 7: 68, 3: 57, 9: 60, 1: 62, 0: 72, 8: 54, 4: 49}, 12: {'total': 685, 3: 56, 8: 83, 5: 77, 0: 57, 2: 75, 7: 69, 9: 69, 1: 70, 6: 58, 4: 71}, 5: {'total': 613, 0:...</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-20T23:11:02.174940" elapsed="0.019339"/>
</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-20T23:11:02.194486" elapsed="0.000301"/>
</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-20T23:11:02.194998" elapsed="0.000314"/>
</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-20T23:11:02.197038" 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-20T23:11:02.196670" elapsed="0.000408"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.197618" 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-20T23:11:02.197306" elapsed="0.000350"/>
</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-20T23:11:02.199500" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:02.199571" 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-20T23:11:02.199032" elapsed="0.000561"/>
</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-20T23:11:02.199745" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:02.200849" level="INFO">Logging into '10.30.171.99:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:02.678404" 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 Tue Oct 20 23:10:19 UTC 2026

  System load:  0.23               Processes:             109
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.99
  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-58598-79-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-20T23:11:02.200604" elapsed="0.477907"/>
</kw>
<msg time="2026-10-20T23:11:02.678581" 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-20T23:11:02.200229" elapsed="0.478439"/>
</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-20T23:11:02.198576" elapsed="0.480190"/>
</kw>
<msg time="2026-10-20T23:11:02.678832" 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-20T23:11:02.198218" elapsed="0.480683"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:11:02.197851" elapsed="0.481121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.679646" 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-20T23:11:02.679333" elapsed="0.000355"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-10-20T23:11:02.689111" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-10-20T23:11:02.697302" level="INFO">'/w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/test/csit/libraries/MininetTopo/create_fullymesh.py' -&gt; '/home/jenkins//create_fullymesh.py'</msg>
<arg>/w/workspace/openflowplugin-csit-1node-scale-link-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-20T23:11:02.679905" elapsed="0.017476"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:11:02.699513" 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-20T23:11:02.697619" elapsed="0.001947"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:11:02.781746" level="INFO">[?2004lThis topology has 16 switches 0 hosts
[?2004h[jenkins@releng-58598-79-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-20T23:11:02.699727" elapsed="0.082079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:02.782288" 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-20T23:11:02.782054" elapsed="0.000274"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:11:02.785239" level="INFO">sudo mn --controller=remote,ip=10.30.170.214,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-20T23:11:02.782480" elapsed="0.002811"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:11:04.250210" 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-20T23:11:02.785450" elapsed="1.464852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:04.250824" 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-20T23:11:04.250564" elapsed="0.000304"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:11:04.252429" 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-20T23:11:04.251027" elapsed="0.001455"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:11:04.513772" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Bridge s6
        Controller "ptcp:6659"
        Controller "tcp:10.30.170.214:6633"
        fail_mode: secure
        Port s6-eth10
            Interface s6-eth10
        Port s6-eth5
            Interface s6-eth5
        Port s6-eth9
            Interface s6-eth9
        Port s6-eth12
            Interface s6-eth12
        Port s6-eth11
            Interface s6-eth11
        Port s6-eth14
            Interface s6-eth14
        Port s6
            Interface s6
                type: internal
        Port s6-eth2
            Interface s6-eth2
        Port s6-eth3
            Interface s6-eth3
        Port s6-eth1
            Interface s6-eth1
        Port s6-eth15
            Interface s6-eth15
        Port s6-eth4
            Interface s6-eth4
        Port s6-eth6
            Interface s6-eth6
        Port s6-eth13
            Interface s6-eth13
        Port s6-eth7
            Interface s6-eth7
        Port s6-eth8
            Interface s6-eth8
    Bridge s9
        Controller "ptcp:6662"
        Controller "tcp:10.30.170.214:6633"
        fail_mode: secure
        Port s9-eth14
            Interface s9-eth14
        Port s9-eth5
            Interface s9-eth5
        Port s9
            Interface s9
                type: internal
        Port s9-eth7
            Interface s9-eth7
        Port s9-eth8
            Interface s9-eth8
        Port s9-eth9
            Interface s9-eth9
        Port s9-eth2
            Interface s9-eth2
        Port s9-eth3
            Interface s9-eth3
        Port s9-eth1
            Interface s9-eth1
        Port s9-eth15
            Interface s9-eth15
        Port s9-eth10
            Interface s9-eth10
        Port s9-eth6
            Interface s9-eth6
        Port s9-eth12
            Interface s9-eth12
        Port s9-eth4
            Interface s9-eth4
        Port s9-eth13
            Interface s9-eth13
        Port s9-eth11
            Interface s9-eth11
    Bridge s4
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6657"
        fail_mode: secure
        Port s4-eth4
            Interface s4-eth4
        Port s4-eth6
            Interface s4-eth6
        Port s4-eth5
            Interface s4-eth5
        Port s4-eth3
            Interface s4-eth3
        Port s4-eth2
            Interface s4-eth2
        Port s4-eth12
            Interface s4-eth12
        Port s4-eth9
            Interface s4-eth9
        Port s4-eth15
            Interface s4-eth15
        Port s4-eth10
            Interface s4-eth10
        Port s4-eth8
            Interface s4-eth8
        Port s4-eth7
            Interface s4-eth7
        Port s4-eth1
            Interface s4-eth1
        Port s4
            Interface s4
                type: internal
        Port s4-eth11
            Interface s4-eth11
        Port s4-eth14
            Interface s4-eth14
        Port s4-eth13
            Interface s4-eth13
    Bridge s15
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6668"
        fail_mode: secure
        Port s15-eth2
            Interface s15-eth2
        Port s15-eth10
            Interface s15-eth10
        Port s15-eth4
            Interface s15-eth4
        Port s15-eth5
            Interface s15-eth5
        Port s15-eth9
            Interface s15-eth9
        Port s15
            Interface s15
                type: internal
        Port s15-eth14
            Interface s15-eth14
        Port s15-eth6
            Interface s15-eth6
        Port s15-eth15
            Interface s15-eth15
        Port s15-eth13
            Interface s15-eth13
        Port s15-eth3
            Interface s15-eth3
        Port s15-eth11
            Interface s15-eth11
        Port s15-eth8
            Interface s15-eth8
        Port s15-eth1
            Interface s15-eth1
        Port s15-eth7
            Interface s15-eth7
        Port s15-eth12
            Interface s15-eth12
    Bridge s11
        Controller "ptcp:6664"
        Controller "tcp:10.30.170.214:6633"
        fail_mode: secure
        Port s11-eth14
            Interface s11-eth14
        Port s11-eth2
            Interface s11-eth2
        Port s11-eth11
            Interface s11-eth11
        Port s11-eth5
            Interface s11-eth5
        Port s11-eth10
            Interface s11-eth10
        Port s11-eth4
            Interface s11-eth4
        Port s11-eth13
            Interface s11-eth13
        Port s11-eth7
            Interface s11-eth7
        Port s11-eth1
            Interface s11-eth1
        Port s11-eth12
            Interface s11-eth12
        Port s11
            Interface s11
                type: internal
        Port s11-eth3
            Interface s11-eth3
        Port s11-eth6
            Interface s11-eth6
        Port s11-eth8
            Interface s11-eth8
        Port s11-eth15
            Interface s11-eth15
        Port s11-eth9
            Interface s11-eth9
    Bridge s13
        Controller "ptcp:6666"
        Controller "tcp:10.30.170.214:6633"
        fail_mode: secure
        Port s13-eth9
            Interface s13-eth9
        Port s13-eth3
            Interface s13-eth3
        Port s13-eth15
            Interface s13-eth15
        Port s13-eth7
            Interface s13-eth7
        Port s13-eth6
            Interface s13-eth6
        Port s13-eth11
            Interface s13-eth11
        Port s13-eth4
            Interface s13-eth4
        Port s13
            Interface s13
                type: internal
        Port s13-eth10
            Interface s13-eth10
        Port s13-eth14
            Interface s13-eth14
        Port s13-eth8
            Interface s13-eth8
        Port s13-eth1
            Interface s13-eth1
        Port s13-eth13
            Interface s13-eth13
        Port s13-eth12
            Interface s13-eth12
        Port s13-eth5
            Interface s13-eth5
        Port s13-eth2
            Interface s13-eth2
    Bridge s5
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6658"
        fail_mode: secure
        Port s5-eth5
            Interface s5-eth5
        Port s5
            Interface s5
                type: internal
        Port s5-eth9
            Interface s5-eth9
        Port s5-eth13
            Interface s5-eth13
        Port s5-eth6
            Interface s5-eth6
        Port s5-eth4
            Interface s5-eth4
        Port s5-eth3
            Interface s5-eth3
        Port s5-eth12
            Interface s5-eth12
        Port s5-eth2
            Interface s5-eth2
        Port s5-eth1
            Interface s5-eth1
        Port s5-eth10
            Interface s5-eth10
        Port s5-eth14
            Interface s5-eth14
        Port s5-eth7
            Interface s5-eth7
        Port s5-eth11
            Interface s5-eth11
        Port s5-eth15
            Interface s5-eth15
        Port s5-eth8
            Interface s5-eth8
    Bridge s3
        Controller "ptcp:6656"
        Controller "tcp:10.30.170.214:6633"
        fail_mode: secure
        Port s3-eth14
            Interface s3-eth14
        Port s3-eth10
            Interface s3-eth10
        Port s3-eth7
            Interface s3-eth7
        Port s3-eth8
            Interface s3-eth8
        Port s3-eth1
            Interface s3-eth1
        Port s3-eth11
            Interface s3-eth11
        Port s3
            Interface s3
                type: internal
        Port s3-eth12
            Interface s3-eth12
        Port s3-eth4
            Interface s3-eth4
        Port s3-eth3
            Interface s3-eth3
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth13
            Interface s3-eth13
        Port s3-eth5
            Interface s3-eth5
        Port s3-eth6
            Interface s3-eth6
        Port s3-eth15
            Interface s3-eth15
        Port s3-eth9
            Interface s3-eth9
    Bridge s2
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6655"
        fail_mode: secure
        Port s2-eth11
            Interface s2-eth11
        Port s2-eth12
            Interface s2-eth12
        Port s2-eth10
            Interface s2-eth10
        Port s2-eth13
            Interface s2-eth13
        Port s2-eth4
            Interface s2-eth4
        Port s2-eth9
            Interface s2-eth9
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth6
            Interface s2-eth6
        Port s2-eth7
            Interface s2-eth7
        Port s2-eth3
            Interface s2-eth3
        Port s2-eth8
            Interface s2-eth8
        Port s2-eth5
            Interface s2-eth5
        Port s2-eth1
            Interface s2-eth1
        Port s2
            Interface s2
                type: internal
        Port s2-eth14
            Interface s2-eth14
        Port s2-eth15
            Interface s2-eth15
    Bridge s7
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6660"
        fail_mode: secure
        Port s7-eth7
            Interface s7-eth7
        Port s7-eth11
            Interface s7-eth11
        Port s7-eth8
            Interface s7-eth8
        Port s7-eth1
            Interface s7-eth1
        Port s7-eth9
            Interface s7-eth9
        Port s7-eth10
            Interface s7-eth10
        Port s7-eth3
            Interface s7-eth3
        Port s7
            Interface s7
                type: internal
        Port s7-eth2
            Interface s7-eth2
        Port s7-eth13
            Interface s7-eth13
        Port s7-eth6
            Interface s7-eth6
        Port s7-eth4
            Interface s7-eth4
        Port s7-eth15
            Interface s7-eth15
        Port s7-eth14
            Interface s7-eth14
        Port s7-eth12
            Interface s7-eth12
        Port s7-eth5
            Interface s7-eth5
    Bridge s14
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6667"
        fail_mode: secure
        Port s14
            Interface s14
                type: internal
        Port s14-eth8
            Interface s14-eth8
        Port s14-eth11
            Interface s14-eth11
        Port s14-eth12
            Interface s14-eth12
        Port s14-eth3
            Interface s14-eth3
        Port s14-eth9
            Interface s14-eth9
        Port s14-eth7
            Interface s14-eth7
        Port s14-eth13
            Interface s14-eth13
        Port s14-eth15
            Interface s14-eth15
        Port s14-eth5
            Interface s14-eth5
        Port s14-eth4
            Interface s14-eth4
        Port s14-eth6
            Interface s14-eth6
        Port s14-eth10
            Interface s14-eth10
        Port s14-eth1
            Interface s14-eth1
        Port s14-eth2
            Interface s14-eth2
        Port s14-eth14
            Interface s14-eth14
    Bridge s12
        Controller "ptcp:6665"
        Controller "tcp:10.30.170.214:6633"
        fail_mode: secure
        Port s12
            Interface s12
                type: internal
        Port s12-eth8
            Interface s12-eth8
        Port s12-eth3
            Interface s12-eth3
        Port s12-eth15
            Interface s12-eth15
        Port s12-eth9
            Interface s12-eth9
        Port s12-eth4
            Interface s12-eth4
        Port s12-eth5
            Interface s12-eth5
        Port s12-eth6
            Interface s12-eth6
        Port s12-eth13
            Interface s12-eth13
        Port s12-eth2
            Interface s12-eth2
        Port s12-eth1
            Interface s12-eth1
        Port s12-eth10
            Interface s12-eth10
        Port s12-eth7
            Interface s12-eth7
        Port s12-eth12
            Interface s12-eth12
        Port s12-eth14
            Interface s12-eth14
        Port s12-eth11
            Interface s12-eth11
    Bridge s8
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6661"
        fail_mode: secure
        Port s8-eth15
            Interface s8-eth15
        Port s8-eth13
            Interface s8-eth13
        Port s8-eth1
            Interface s8-eth1
        Port s8-eth6
            Interface s8-eth6
        Port s8-eth4
            Interface s8-eth4
        Port s8-eth7
            Interface s8-eth7
        Port s8-eth3
            Interface s8-eth3
        Port s8-eth5
            Interface s8-eth5
        Port s8-eth10
            Interface s8-eth10
        Port s8-eth8
            Interface s8-eth8
        Port s8-eth2
            Interface s8-eth2
        Port s8-eth12
            Interface s8-eth12
        Port s8-eth9
            Interface s8-eth9
        Port s8-eth14
            Interface s8-eth14
        Port s8
            Interface s8
                type: internal
        Port s8-eth11
            Interface s8-eth11
    Bridge s1
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6654"
        fail_mode: secure
        Port s1-eth13
            Interface s1-eth13
        Port s1-eth12
            Interface s1-eth12
        Port s1-eth11
            Interface s1-eth11
        Port s1-eth15
            Interface s1-eth15
        Port s1-eth5
            Interface s1-eth5
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth3
            Interface s1-eth3
        Port s1-eth7
            Interface s1-eth7
        Port s1-eth6
            Interface s1-eth6
        Port s1-eth8
            Interface s1-eth8
        Port s1
            Interface s1
                type: internal
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth10
            Interface s1-eth10
        Port s1-eth4
            Interface s1-eth4
        Port s1-eth9
            Interface s1-eth9
        Port s1-eth14
            Interface s1-eth14
    Bridge s10
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6663"
        fail_mode: secure
        Port s10-eth8
            Interface s10-eth8
        Port s10-eth4
            Interface s10-eth4
        Port s10-eth7
            Interface s10-eth7
        Port s10-eth15
            Interface s10-eth15
        Port s10-eth12
            Interface s10-eth12
        Port s10-eth9
            Interface s10-eth9
        Port s10-eth6
            Interface s10-eth6
        Port s10-eth3
            Interface s10-eth3
        Port s10
            Interface s10
                type: internal
        Port s10-eth1
            Interface s10-eth1
        Port s10-eth13
            Interface s10-eth13
        Port s10-eth2
            Interface s10-eth2
        Port s10-eth14
            Interface s10-eth14
        Port s10-eth5
            Interface s10-eth5
        Port s10-eth10
            Interface s10-eth10
        Port s10-eth11
            Interface s10-eth11
    Bridge s16
        Controller "tcp:10.30.170.214:6633"
        Controller "ptcp:6669"
        fail_mode: secure
        Port s16-eth2
            Interface s16-eth2
        Port s16
            Interface s16
                type: internal
        Port s16-eth7
            Interface s16-eth7
        Port s16-eth5
            Interface s16-eth5
        Port s16-eth14
            Interface s16-eth14
        Port s16-eth9
            Interface s16-eth9
        Port s16-eth12
            Interface s16-eth12
        Port s16-eth10
            Interface s16-eth10
        Port s16-eth3
            Interface s16-eth3
        Port s16-eth1
            Interface s16-eth1
        Port s16-eth15
            Interface s16-eth15
        Port s16-eth11
            Interface s16-eth11
        Port s16-eth13
            Interface s16-eth13
        Port s16-eth4
            Interface s16-eth4
        Port s16-eth8
            Interface s16-eth8
        Port s16-eth6
            Interface s16-eth6
    ovs_version: "2.17.11"
mininet&gt;</msg>
<msg time="2026-10-20T23:11:04.514107" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Bridge s6
        Controller "ptcp:6659"
        Controller "tcp:10.30.170.214:6633"
        fail_mode: secure
        Port s6-eth10
            Interfac...</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-20T23:11:04.252686" elapsed="0.261449"/>
</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-20T23:11:04.514354" elapsed="0.000536"/>
</kw>
<arg>${switches}</arg>
<arg>mininet_timeout=${mininet_timeout}</arg>
<doc>Start a custom mininet topology.</doc>
<status status="PASS" start="2026-10-20T23:11:02.196011" elapsed="2.318946"/>
</kw>
<msg time="2026-10-20T23:11:04.515074" level="INFO">${status} = PASS</msg>
<msg time="2026-10-20T23:11:04.515119" 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-20T23:11:02.195517" elapsed="2.319624"/>
</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-20T23:11:04.515385" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:04.515251" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:04.515213" elapsed="0.000255"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-20T23:11:04.515897" level="INFO">${start_time} = 2026-10-20 23:11:04.516</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-20T23:11:04.515630" elapsed="0.000292"/>
</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-20T23:11:04.516136" elapsed="0.000336"/>
</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-20T23:11:04.522028" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:04.521759" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:04.521740" elapsed="0.000379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:04.522442" level="INFO">index=2
host=10.30.171.99
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-20T23:11:04.522539" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.99
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>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:11:04.522315" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:04.523050" level="INFO">Attempting to execute command "grep -c 'java.lang.OutOfMemoryError' /tmp/karaf-0.25.0/data/log/karaf.log" on remote system "10.30.170.214" 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-20T23:11:04.522753" elapsed="0.000355"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:04.523614" 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-20T23:11:04.523286" elapsed="0.000352"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:11:04.524445" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:04.524512" 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-20T23:11:04.524209" elapsed="0.000324"/>
</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-20T23:11:04.524681" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:04.526251" level="INFO">Logging into '10.30.170.214:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:05.234749" 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 Tue Oct 20 23:10:20 UTC 2026

  System load:  0.17               Processes:             125
  Usage of /:   13.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.214
  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-58598-79-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-20T23:11:04.525527" elapsed="0.709344"/>
</kw>
<msg time="2026-10-20T23:11:05.235014" 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-20T23:11:04.525159" elapsed="0.709950"/>
</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-20T23:11:04.523843" elapsed="0.711359"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:05.235597" level="INFO">Executing command 'grep -c 'java.lang.OutOfMemoryError' /tmp/karaf-0.25.0/data/log/karaf.log'.</msg>
<msg time="2026-10-20T23:11:05.258822" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:11:05.258935" level="INFO">${stdout} = 0</msg>
<msg time="2026-10-20T23:11:05.258973" 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-20T23:11:05.235428" elapsed="0.023565"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:05.259174" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:05.260088" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:05.259825" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:05.260311" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:05.260203" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:05.260177" elapsed="0.000202"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:11:05.260509" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-10-20T23:11:05.260428" elapsed="0.000136"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:05.260413" elapsed="0.000173"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:05.260617" elapsed="0.000012"/>
</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-20T23:11:05.261899" elapsed="0.000203"/>
</kw>
<msg time="2026-10-20T23:11:05.262158" 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-20T23:11:05.261349" elapsed="0.000869"/>
</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-20T23:11:05.262397" elapsed="0.000019"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:05.262548" 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-20T23:11:05.260937" elapsed="0.001689"/>
</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-20T23:11:04.521347" elapsed="0.741350"/>
</kw>
<msg time="2026-10-20T23:11:05.262743" 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-20T23:11:04.520782" elapsed="0.742005"/>
</kw>
<msg time="2026-10-20T23:11:05.262903" 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-20T23:11:04.520275" elapsed="0.742650"/>
</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-20T23:11:05.263137" elapsed="0.000276"/>
</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-scale-link-only-manganese/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-10-20T23:11:04.519777" elapsed="0.743690"/>
</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-20T23:11:04.517136" elapsed="0.746380"/>
</kw>
<msg time="2026-10-20T23:11:05.263594" level="INFO">${status} = PASS</msg>
<msg time="2026-10-20T23:11:05.263633" 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-20T23:11:04.516681" elapsed="0.746972"/>
</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-20T23:11:05.263830" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:05.263719" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:05.263701" elapsed="0.000195"/>
</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-20T23:11:05.268919" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:05.268662" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:05.268644" elapsed="0.000348"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:05.269321" level="INFO">index=2
host=10.30.171.99
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-20T23:11:05.269415" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.99
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>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:11:05.269210" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:05.269962" level="INFO">Attempting to execute command "grep -c 'java.lang.NullPointerException' /tmp/karaf-0.25.0/data/log/karaf.log" on remote system "10.30.170.214" 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-20T23:11:05.269662" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:05.270503" 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-20T23:11:05.270196" elapsed="0.000330"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:11:05.271352" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:05.271420" 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-20T23:11:05.271111" elapsed="0.000330"/>
</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-20T23:11:05.271594" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:05.273269" level="INFO">Logging into '10.30.170.214:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:05.973382" 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 Tue Oct 20 23:10:20 UTC 2026

  System load:  0.17               Processes:             125
  Usage of /:   13.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.214
  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: Tue Oct 20 23:11:04 2026 from 10.30.171.192
[?2004h[jenkins@releng-58598-79-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-20T23:11:05.272582" elapsed="0.700900"/>
</kw>
<msg time="2026-10-20T23:11:05.973630" 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-20T23:11:05.272215" elapsed="0.701479"/>
</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-20T23:11:05.270719" elapsed="0.703058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:05.974302" level="INFO">Executing command 'grep -c 'java.lang.NullPointerException' /tmp/karaf-0.25.0/data/log/karaf.log'.</msg>
<msg time="2026-10-20T23:11:05.996815" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:11:05.996955" level="INFO">${stdout} = 0</msg>
<msg time="2026-10-20T23:11:05.997010" 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-20T23:11:05.974004" elapsed="0.023035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:05.997284" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:05.998252" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:05.997898" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:05.998545" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:05.998404" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:05.998372" elapsed="0.000261"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:11:05.998827" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-10-20T23:11:05.998699" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:05.998680" elapsed="0.000252"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:05.998975" elapsed="0.000018"/>
</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-20T23:11:06.000686" elapsed="0.000273"/>
</kw>
<msg time="2026-10-20T23:11:06.001034" 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-20T23:11:05.999985" elapsed="0.001158"/>
</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-20T23:11:06.001392" elapsed="0.000027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:06.001612" elapsed="0.000025"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:11:05.999410" elapsed="0.002302"/>
</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-20T23:11:05.268251" elapsed="0.733573"/>
</kw>
<msg time="2026-10-20T23:11:06.001939" 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-20T23:11:05.267713" elapsed="0.734291"/>
</kw>
<msg time="2026-10-20T23:11:06.002159" 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-20T23:11:05.267212" elapsed="0.734979"/>
</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-20T23:11:06.002461" elapsed="0.000395"/>
</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-scale-link-only-manganese/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-10-20T23:11:05.266740" elapsed="0.736191"/>
</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-20T23:11:05.264461" elapsed="0.738539"/>
</kw>
<msg time="2026-10-20T23:11:06.003139" level="INFO">${status} = PASS</msg>
<msg time="2026-10-20T23:11:06.003196" 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-20T23:11:05.264103" elapsed="0.739123"/>
</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-20T23:11:06.003437" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:06.003318" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:06.003294" elapsed="0.000232"/>
</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-20T23:11:06.010935" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:06.010570" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:06.010546" elapsed="0.000490"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:06.011469" level="INFO">index=2
host=10.30.171.99
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-20T23:11:06.011598" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.99
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>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:11:06.011320" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:06.012320" level="INFO">Attempting to execute command "grep -c 'java.lang.RuntimeException' /tmp/karaf-0.25.0/data/log/karaf.log" on remote system "10.30.170.214" 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-20T23:11:06.011909" elapsed="0.000470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:06.013057" 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-20T23:11:06.012625" elapsed="0.000493"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:11:06.014246" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:06.014341" 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-20T23:11:06.013889" elapsed="0.000482"/>
</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-20T23:11:06.014579" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:06.016694" level="INFO">Logging into '10.30.170.214:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:06.499608" 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 Tue Oct 20 23:10:20 UTC 2026

  System load:  0.17               Processes:             125
  Usage of /:   13.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.214
  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: Tue Oct 20 23:11:05 2026 from 10.30.171.192
[?2004h[jenkins@releng-58598-79-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-20T23:11:06.015743" elapsed="0.483965"/>
</kw>
<msg time="2026-10-20T23:11:06.499860" 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-20T23:11:06.015227" elapsed="0.484694"/>
</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-20T23:11:06.013387" elapsed="0.486656"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:06.500564" level="INFO">Executing command 'grep -c 'java.lang.RuntimeException' /tmp/karaf-0.25.0/data/log/karaf.log'.</msg>
<msg time="2026-10-20T23:11:06.513432" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:11:06.513534" level="INFO">${stdout} = 0</msg>
<msg time="2026-10-20T23:11:06.513576" 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-20T23:11:06.500402" elapsed="0.013195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:06.513751" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:06.514632" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:06.514394" 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-20T23:11:06.514852" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:06.514738" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:06.514717" elapsed="0.000198"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:11:06.515039" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-10-20T23:11:06.514960" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:06.514947" elapsed="0.000182"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:06.515159" elapsed="0.000012"/>
</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-20T23:11:06.516355" elapsed="0.000176"/>
</kw>
<msg time="2026-10-20T23:11:06.516585" 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-20T23:11:06.515848" elapsed="0.000794"/>
</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-20T23:11:06.516832" elapsed="0.000020"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:06.516987" 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-20T23:11:06.515445" elapsed="0.001633"/>
</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-20T23:11:06.009984" elapsed="0.507164"/>
</kw>
<msg time="2026-10-20T23:11:06.517192" 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-20T23:11:06.009272" elapsed="0.507962"/>
</kw>
<msg time="2026-10-20T23:11:06.517327" 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-20T23:11:06.008531" elapsed="0.508818"/>
</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-20T23:11:06.517539" elapsed="0.000278"/>
</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-scale-link-only-manganese/log.html to be any file on the given system @ ${ip}</doc>
<status status="PASS" start="2026-10-20T23:11:06.007898" elapsed="0.509972"/>
</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-20T23:11:06.004324" elapsed="0.513594"/>
</kw>
<msg time="2026-10-20T23:11:06.517997" level="INFO">${status} = PASS</msg>
<msg time="2026-10-20T23:11:06.518036" 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-20T23:11:06.003780" elapsed="0.514276"/>
</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-20T23:11:06.518226" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:06.518141" elapsed="0.000132"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:06.518122" elapsed="0.000170"/>
</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-20T23:11:06.518474" elapsed="0.000303"/>
</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-20T23:11:07.059419" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:07.059642" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:07.059990" level="FAIL">Url: http://10.30.170.214: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-20T23:11:06.520532" elapsed="0.541475">Url: http://10.30.170.214: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-20T23:11:07.062625" 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-20T23:11:07.063143" 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-20T23:11:07.063954" elapsed="0.000057"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:06.520380" elapsed="0.543786">Url: http://10.30.170.214: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-20T23:11:06.520166" elapsed="0.544137">Url: http://10.30.170.214: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-20T23:11:06.519938" elapsed="0.544587">Url: http://10.30.170.214: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-20T23:11:09.075058" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:09.075218" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:09.075460" level="FAIL">Url: http://10.30.170.214: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-20T23:11:09.067335" elapsed="0.009135">Url: http://10.30.170.214: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-20T23:11:09.077186" elapsed="0.000053"/>
</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-20T23:11:09.077691" 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-20T23:11:09.078216" elapsed="0.000044"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:09.066948" elapsed="0.011435">Url: http://10.30.170.214: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-20T23:11:09.066375" elapsed="0.012143">Url: http://10.30.170.214: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-20T23:11:09.065634" elapsed="0.013122">Url: http://10.30.170.214: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-20T23:11:11.087342" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:11.087466" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:11.087684" level="FAIL">Url: http://10.30.170.214: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-20T23:11:11.080918" elapsed="0.007668">Url: http://10.30.170.214: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-20T23:11:11.089214" 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-20T23:11:11.089767" elapsed="0.000067"/>
</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-20T23:11:11.090267" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:11.080586" elapsed="0.009835">Url: http://10.30.170.214: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-20T23:11:11.080128" elapsed="0.010421">Url: http://10.30.170.214: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-20T23:11:11.079550" elapsed="0.011204">Url: http://10.30.170.214: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-20T23:11:13.097286" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:13.097353" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:13.097486" level="FAIL">Url: http://10.30.170.214: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-20T23:11:13.092262" elapsed="0.005686">Url: http://10.30.170.214: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-20T23:11:13.098259" elapsed="0.000023"/>
</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-20T23:11:13.098469" elapsed="0.000024"/>
</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-20T23:11:13.098674" elapsed="0.000018"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:13.092104" elapsed="0.006641">Url: http://10.30.170.214: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-20T23:11:13.091816" elapsed="0.007006">Url: http://10.30.170.214: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-20T23:11:13.091415" elapsed="0.007503">Url: http://10.30.170.214: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-20T23:11:15.107713" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:15.107854" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:15.108111" level="FAIL">Url: http://10.30.170.214: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-20T23:11:15.100959" elapsed="0.007986">Url: http://10.30.170.214: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-20T23:11:15.109527" 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-20T23:11:15.110004" 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-20T23:11:15.110476" elapsed="0.000041"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:15.100634" elapsed="0.009989">Url: http://10.30.170.214: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-20T23:11:15.100199" elapsed="0.010653">Url: http://10.30.170.214: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-20T23:11:15.099632" elapsed="0.011425">Url: http://10.30.170.214: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-20T23:11:17.119776" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:17.119896" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:17.120143" level="FAIL">Url: http://10.30.170.214: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-20T23:11:17.113238" elapsed="0.007734">Url: http://10.30.170.214: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-20T23:11:17.121560" 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-20T23:11:17.122146" 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-20T23:11:17.122593" elapsed="0.000041"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:17.112863" elapsed="0.009896">Url: http://10.30.170.214: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-20T23:11:17.112407" elapsed="0.010471">Url: http://10.30.170.214: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-20T23:11:17.111856" elapsed="0.011243">Url: http://10.30.170.214: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-20T23:11:19.133029" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:19.133195" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:19.133434" level="FAIL">Url: http://10.30.170.214: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-20T23:11:19.125818" elapsed="0.008562">Url: http://10.30.170.214: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-20T23:11:19.135031" elapsed="0.000077"/>
</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-20T23:11:19.135518" 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-20T23:11:19.135975" elapsed="0.000041"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:19.125463" elapsed="0.010699">Url: http://10.30.170.214: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-20T23:11:19.124892" elapsed="0.011394">Url: http://10.30.170.214: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-20T23:11:19.124187" elapsed="0.012301">Url: http://10.30.170.214: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-20T23:11:21.145679" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:21.145926" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:21.146196" level="FAIL">Url: http://10.30.170.214: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-20T23:11:21.139004" elapsed="0.008121">Url: http://10.30.170.214: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-20T23:11:21.147757" elapsed="0.000057"/>
</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-20T23:11:21.148254" 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-20T23:11:21.148697" elapsed="0.000061"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:21.138655" elapsed="0.010218">Url: http://10.30.170.214: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-20T23:11:21.138168" elapsed="0.010825">Url: http://10.30.170.214: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-20T23:11:21.137481" elapsed="0.011753">Url: http://10.30.170.214: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-20T23:11:23.158995" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:23.159157" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:23.159390" level="FAIL">Url: http://10.30.170.214: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-20T23:11:23.152355" elapsed="0.007939">Url: http://10.30.170.214: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-20T23:11:23.160913" 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-20T23:11:23.161404" 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-20T23:11:23.161874" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:23.151999" elapsed="0.010028">Url: http://10.30.170.214: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-20T23:11:23.151515" elapsed="0.010665">Url: http://10.30.170.214: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-20T23:11:23.150273" elapsed="0.012107">Url: http://10.30.170.214: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-20T23:11:25.171504" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:25.171625" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:25.171977" level="FAIL">Url: http://10.30.170.214: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-20T23:11:25.164880" elapsed="0.008029">Url: http://10.30.170.214: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-20T23:11:25.173536" 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-20T23:11:25.174024" elapsed="0.000069"/>
</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-20T23:11:25.174499" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:25.164529" elapsed="0.010122">Url: http://10.30.170.214: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-20T23:11:25.164033" elapsed="0.010760">Url: http://10.30.170.214: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-20T23:11:25.163403" elapsed="0.011590">Url: http://10.30.170.214: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-20T23:11:27.184033" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:27.184199" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:27.184420" level="FAIL">Url: http://10.30.170.214: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-20T23:11:27.177502" elapsed="0.007838">Url: http://10.30.170.214: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-20T23:11:27.185963" 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-20T23:11:27.186452" 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-20T23:11:27.186915" elapsed="0.000052"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:27.177177" elapsed="0.009927">Url: http://10.30.170.214: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-20T23:11:27.176660" elapsed="0.010565">Url: http://10.30.170.214: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-20T23:11:27.176003" elapsed="0.011417">Url: http://10.30.170.214: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-20T23:11:29.196442" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:29.196559" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:29.196789" level="FAIL">Url: http://10.30.170.214: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-20T23:11:29.189891" elapsed="0.008458">Url: http://10.30.170.214: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-20T23:11:29.198991" 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-20T23:11:29.199619" elapsed="0.000070"/>
</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-20T23:11:29.200158" elapsed="0.000047"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:29.189527" elapsed="0.010795">Url: http://10.30.170.214: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-20T23:11:29.189018" elapsed="0.011434">Url: http://10.30.170.214: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-20T23:11:29.188398" elapsed="0.012287">Url: http://10.30.170.214: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-20T23:11:31.209952" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:31.210117" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:31.210359" level="FAIL">Url: http://10.30.170.214: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-20T23:11:31.203282" elapsed="0.007990">Url: http://10.30.170.214: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-20T23:11:31.211882" 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-20T23:11:31.212371" 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-20T23:11:31.212843" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:31.202874" elapsed="0.010120">Url: http://10.30.170.214: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-20T23:11:31.202300" elapsed="0.010872">Url: http://10.30.170.214: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-20T23:11:31.201676" elapsed="0.011705">Url: http://10.30.170.214: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-20T23:11:33.223958" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:33.224117" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:33.224340" level="FAIL">Url: http://10.30.170.214: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-20T23:11:33.215750" elapsed="0.009472">Url: http://10.30.170.214: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-20T23:11:33.225834" 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-20T23:11:33.226340" 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-20T23:11:33.226806" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:33.215403" elapsed="0.011554">Url: http://10.30.170.214: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-20T23:11:33.214886" elapsed="0.012307">Url: http://10.30.170.214: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-20T23:11:33.214283" elapsed="0.013111">Url: http://10.30.170.214: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-20T23:11:35.236516" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:35.236661" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:35.236876" level="FAIL">Url: http://10.30.170.214: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-20T23:11:35.229777" elapsed="0.008001">Url: http://10.30.170.214: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-20T23:11:35.238400" elapsed="0.000056"/>
</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-20T23:11:35.238917" 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-20T23:11:35.239412" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:35.229437" elapsed="0.010124">Url: http://10.30.170.214: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-20T23:11:35.228943" elapsed="0.010771">Url: http://10.30.170.214: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-20T23:11:35.228340" elapsed="0.011573">Url: http://10.30.170.214: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-20T23:11:37.249451" level="INFO">GET Request : url=http://10.30.170.214: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-20T23:11:37.249570" level="INFO">GET Response : url=http://10.30.170.214: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-20T23:11:37.249821" level="FAIL">Url: http://10.30.170.214: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-20T23:11:37.242282" elapsed="0.008437">Url: http://10.30.170.214: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-20T23:11:37.251340" 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-20T23:11:37.251814" 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-20T23:11:37.252299" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:11:37.241923" elapsed="0.010526">Url: http://10.30.170.214: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-20T23:11:37.241432" elapsed="0.011138">Url: http://10.30.170.214: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-20T23:11:37.240806" elapsed="0.011986">Url: http://10.30.170.214:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:11:37.252970" level="FAIL">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.214: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-20T23:11:06.519407" elapsed="30.733882">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.214:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:11:37.253526" level="INFO">${status} = FAIL</msg>
<msg time="2026-10-20T23:11:37.253639" level="INFO">${result} = Keyword 'FlowLib.Check Switches In Inventory' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.214: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-20T23:11:06.518987" elapsed="30.734704"/>
</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-20T23:11:37.254119" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-10-20T23:11:37.253875" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:37.253828" elapsed="0.000482"/>
</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-20T23:11:37.254743" 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 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-20T23:11:37.255227" elapsed="0.000042"/>
</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-20T23:11:37.255491" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.255420" elapsed="0.000159"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.255387" elapsed="0.000258"/>
</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-20T23:11:37.255980" elapsed="0.000042"/>
</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-20T23:11:37.256384" elapsed="0.000042"/>
</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-20T23:11:37.256854" elapsed="0.000041"/>
</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-20T23:11:37.257343" elapsed="0.000042"/>
</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-20T23:11:37.257809" elapsed="0.000041"/>
</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-20T23:11:37.258092" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.257996" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.257962" elapsed="0.000265"/>
</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-20T23:11:37.258631" elapsed="0.000042"/>
</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-20T23:11:37.259097" elapsed="0.000043"/>
</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-20T23:11:37.259353" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.259284" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.259251" elapsed="0.000232"/>
</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-20T23:11:37.259891" 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_after}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:37.260358" elapsed="0.000041"/>
</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-20T23:11:37.260639" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.260549" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.260515" elapsed="0.000257"/>
</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-20T23:11:37.261186" elapsed="0.000042"/>
</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-20T23:11:37.261585" elapsed="0.000066"/>
</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-20T23:11:37.262049" elapsed="0.000068"/>
</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-20T23:11:37.262517" elapsed="0.000040"/>
</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-20T23:11:37.262791" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.262723" elapsed="0.000156"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.262689" elapsed="0.000299"/>
</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-20T23:11:37.263412" elapsed="0.000043"/>
</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-20T23:11:37.263877" elapsed="0.000042"/>
</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-20T23:11:37.264161" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.264089" elapsed="0.000162"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.264030" elapsed="0.000264"/>
</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-20T23:11:37.264701" elapsed="0.000041"/>
</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-20T23:11:37.265168" elapsed="0.000042"/>
</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-20T23:11:37.265425" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.265358" elapsed="0.000155"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.265325" elapsed="0.000230"/>
</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-20T23:11:37.265963" elapsed="0.000042"/>
</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-20T23:11:37.266449" elapsed="0.000042"/>
</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-20T23:11:37.266710" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.266640" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.266588" elapsed="0.000251"/>
</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-20T23:11:37.267276" elapsed="0.000044"/>
</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-20T23:11:37.267744" elapsed="0.000042"/>
</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-20T23:11:37.268001" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.267933" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.267901" elapsed="0.000262"/>
</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-20T23:11:37.268548" elapsed="0.000041"/>
</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-20T23:11:37.269011" elapsed="0.000041"/>
</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-20T23:11:37.269302" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:37.269232" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:37.269199" elapsed="0.000261"/>
</if>
<return>
<value>PASS</value>
<value>${error_message}</value>
<value>${topology_discover_time}</value>
<status status="NOT RUN" start="2026-10-20T23:11:37.269520" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:11:37.269880" level="INFO">${status} = FAIL</msg>
<msg time="2026-10-20T23:11:37.269971" level="INFO">${error_message} = Fail checking switch</msg>
<msg time="2026-10-20T23:11:37.270057" level="INFO">${topology_discover_time} = 0</msg>
<var>${status}</var>
<var>${error_message}</var>
<var>${topology_discover_time}</var>
<arg>${switches}</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-20T23:11:02.169778" elapsed="35.100364"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<break>
<status status="PASS" start="2026-10-20T23:11:37.270481" elapsed="0.000069"/>
</break>
<status status="PASS" start="2026-10-20T23:11:37.270289" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:37.270255" elapsed="0.000429"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${maximum_links}</var>
<arg>${switches} * ${switches-1}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:37.271138" elapsed="0.000056"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${discover_time}</var>
<arg>${topology_discover_time}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:37.271589" elapsed="0.000063"/>
</kw>
<var name="${switches}">16</var>
<status status="PASS" start="2026-10-20T23:11:02.168776" elapsed="35.102947"/>
</iter>
<var>${switches}</var>
<value>@{SWITCH_LIST}</value>
<status status="PASS" start="2026-10-20T23:11:02.168450" elapsed="35.103340"/>
</for>
<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-20T23:11:37.272228" elapsed="0.000806"/>
</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-20T23:11:37.273499" elapsed="0.000686"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>Max Links: ${maximum_links}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-10-20T23:11:37.274648" elapsed="0.000673"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-20T23:11:37.276339" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/links.csv"&gt;/w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/links.csv&lt;/a&gt;'.</msg>
<arg>${LINKS_RESULT_FILE}</arg>
<arg>Max Links\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-20T23:11:37.275695" elapsed="0.000815"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-20T23:11:37.277361" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/links.csv"&gt;/w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/links.csv&lt;/a&gt;'.</msg>
<arg>${LINKS_RESULT_FILE}</arg>
<arg>${maximum_links}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-20T23:11:37.276873" elapsed="0.000594"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-20T23:11:37.278312" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/time.csv"&gt;/w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/time.csv&lt;/a&gt;'.</msg>
<arg>${TIME_RESULT_FILE}</arg>
<arg>Discover Time\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-20T23:11:37.277814" elapsed="0.000608"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-20T23:11:37.279247" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/time.csv"&gt;/w/workspace/openflowplugin-csit-1node-scale-link-only-manganese/time.csv&lt;/a&gt;'.</msg>
<arg>${TIME_RESULT_FILE}</arg>
<arg>${discover_time}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-20T23:11:37.278785" elapsed="0.000569"/>
</kw>
<doc>Find max number of Links supported. Fully mesh topology starting from
${MIN_SWITCHES} switches till ${MAX_SWITCHES} switches will be attempted in steps of ${STEP_SWITCHES}</doc>
<status status="PASS" start="2026-10-20T23:11:02.166079" elapsed="35.113505"/>
</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-20T23:11:37.288140" level="INFO">DELETE Request : url=http://10.30.170.214: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-20T23:11:37.288236" level="INFO">DELETE Response : url=http://10.30.170.214: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-20T23:11:37.282334" elapsed="0.006009"/>
</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-20T23:11:37.281508" elapsed="0.006949"/>
</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-20T23:11:37.293394" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:37.292810" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:37.292770" elapsed="0.000791"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:37.294329" level="INFO">index=2
host=10.30.171.99
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-20T23:11:37.294541" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.99
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>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:11:37.294026" elapsed="0.000593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:37.295772" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.99" 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-20T23:11:37.295055" elapsed="0.000811"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:37.296994" 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-20T23:11:37.296295" elapsed="0.000753"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:11:37.298841" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:37.298994" 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-20T23:11:37.298255" elapsed="0.000789"/>
</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-20T23:11:37.299413" elapsed="0.000688"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:37.301976" level="INFO">Logging into '10.30.171.99:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:37.854652" 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 Tue Oct 20 23:11:37 UTC 2026

  System load:  1.37               Processes:             133
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.171.99
  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: Tue Oct 20 23:11:02 2026 from 10.30.171.192
[?2004h[jenkins@releng-58598-79-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-20T23:11:37.301436" elapsed="0.553379"/>
</kw>
<msg time="2026-10-20T23:11:37.854967" 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-20T23:11:37.300482" elapsed="0.554614"/>
</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-20T23:11:37.297527" elapsed="0.557693"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:37.855839" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:11:42.539597" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:11:42.539929" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:11:42.540022" 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-20T23:11:37.855565" elapsed="4.684549"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:42.540576" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:42.542241" 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-20T23:11:42.541648" elapsed="0.000988"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:42.543031" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:42.542799" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:42.542753" elapsed="0.000451"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:11:42.543484" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-10-20T23:11:42.543307" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:42.543277" elapsed="0.000405"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:42.543748" elapsed="0.000028"/>
</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-20T23:11:42.546767" elapsed="0.000256"/>
</kw>
<msg time="2026-10-20T23:11:42.547143" 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-20T23:11:42.545265" elapsed="0.002014"/>
</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-20T23:11:42.547695" elapsed="0.000045"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:42.548039" elapsed="0.000071"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:11:42.544436" elapsed="0.003801"/>
</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-20T23:11:37.291939" elapsed="5.256449"/>
</kw>
<msg time="2026-10-20T23:11:42.548487" 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-20T23:11:37.290730" elapsed="5.257895"/>
</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-20T23:11:37.289510" elapsed="5.259266"/>
</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-20T23:11:42.552698" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:42.552111" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:42.552042" elapsed="0.000821"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:42.553590" level="INFO">index=2
host=10.30.171.99
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-20T23:11:42.553802" level="INFO">${current_ssh_connection} = index=2
host=10.30.171.99
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>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:11:42.553326" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:42.554970" 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.99" 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-20T23:11:42.554318" elapsed="0.000774"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:42.556250" 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-20T23:11:42.555504" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:11:42.558058" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:42.558241" 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-20T23:11:42.557476" elapsed="0.000814"/>
</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-20T23:11:42.558646" elapsed="0.000672"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:42.561117" level="INFO">Logging into '10.30.171.99:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:42.959192" 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 Tue Oct 20 23:11:37 UTC 2026

  System load:  1.37               Processes:             133
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.171.99
  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: Tue Oct 20 23:11:37 2026 from 10.30.171.192
[?2004h[jenkins@releng-58598-79-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-20T23:11:42.560585" elapsed="0.398763"/>
</kw>
<msg time="2026-10-20T23:11:42.959415" 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-20T23:11:42.559710" elapsed="0.399779"/>
</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-20T23:11:42.556762" elapsed="0.402824"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:42.960016" 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-20T23:11:43.014889" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:11:43.015173" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:11:43.015262" 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-20T23:11:42.959828" elapsed="0.055480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:43.015683" elapsed="0.000454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:43.017252" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:43.016686" elapsed="0.000652"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:43.017745" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:43.017492" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:43.017443" elapsed="0.000441"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:11:43.018197" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-10-20T23:11:43.017986" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:43.017957" elapsed="0.000407"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:43.018429" elapsed="0.000028"/>
</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-20T23:11:43.021104" elapsed="0.000259"/>
</kw>
<msg time="2026-10-20T23:11:43.021447" 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-20T23:11:43.019923" elapsed="0.001668"/>
</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-20T23:11:43.021983" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:43.022356" elapsed="0.000041"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:11:43.019133" elapsed="0.003385"/>
</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-20T23:11:42.551229" elapsed="0.471459"/>
</kw>
<msg time="2026-10-20T23:11:43.022786" 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-20T23:11:42.550002" elapsed="0.472899"/>
</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-20T23:11:42.549166" elapsed="0.473877"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:37.288902" elapsed="5.734281"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:43.023631" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:11:43.023463" elapsed="0.000314"/>
</kw>
<doc>Cleanup when workflow is interrupt</doc>
<status status="PASS" start="2026-10-20T23:11:37.280917" elapsed="5.742962"/>
</kw>
<doc>Test suite for finding out max number of Links</doc>
<status status="PASS" start="2026-10-20T23:11:00.786257" elapsed="42.237684"/>
</suite>
<status status="PASS" start="2026-10-20T23:11:00.748261" elapsed="42.277387"/>
</suite>
<statistics>
<total>
<stat pass="1" fail="0" skip="0">All Tests</stat>
</total>
<tag>
</tag>
<suite>
<stat name="openflowplugin-scale-link.txt" id="s1" pass="1" fail="0" skip="0">openflowplugin-scale-link.txt</stat>
<stat name="Finding Max Links" id="s1-s1" pass="1" fail="0" skip="0">openflowplugin-scale-link.txt.Finding Max Links</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
