<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-06-09T03:02:51.026022" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/test/csit/suites/openflowplugin/Performance/010_Cbench.robot">
<kw name="Cbench Suite Setup" type="SETUP">
<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-06-09T03:02:51.619038" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-06-09T03:02:51.618891" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-06-09T03:02:51.618861" elapsed="0.000280"/>
</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-06-09T03:02:51.619288" elapsed="0.000525"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-09T03:02:51.620290" level="INFO">Logging into '10.30.171.111:8101' as 'karaf'.</msg>
<msg time="2026-06-09T03:02:52.339401" 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-06-09T03:02:51.619988" elapsed="0.719604"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-09T03:02:52.388280" 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-06-09T03:02:52.339882" elapsed="0.048649"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-09T03:02:52.392878" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-09T03:02:52.393229" 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-06-09T03:02:52.389157" elapsed="0.004159"/>
</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-06-09T03:02:52.393726" elapsed="0.000472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:02:52.394461" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:02:52.395549" 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-06-09T03:02:52.395083" elapsed="0.000642"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-09T03:02:52.395808" elapsed="0.000075"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.111
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-09T03:02:51.618408" elapsed="0.777654"/>
</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-06-09T03:02:51.614725" elapsed="0.781429"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-09T03:02:52.397000" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-09T03:02:52.396410" elapsed="0.000680"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-09T03:02:52.397871" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-09T03:02:52.397384" elapsed="0.000586"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-09T03:02:52.398957" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-09T03:02:52.398202" elapsed="0.000797"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-09T03:02:52.399742" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-09T03:02:52.399240" elapsed="0.000564"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-09T03:02:52.400551" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-09T03:02:52.400018" elapsed="0.000573"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-09T03:02:52.401351" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-09T03:02:52.400886" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-06-09T03:02:52.401876" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:02:52.401534" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-09T03:02:52.406973" level="INFO">${conn_id} = 2</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-06-09T03:02:52.406510" elapsed="0.000491"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-09T03:02:52.408058" level="INFO">Length is 0.</msg>
<msg time="2026-06-09T03:02:52.408143" 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-06-09T03:02:52.407572" elapsed="0.000597"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-09T03:02:52.408318" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-09T03:02:52.409778" level="INFO">Logging into '10.30.170.202:22' as 'jenkins'.</msg>
<msg time="2026-06-09T03:02:53.088850" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Jun  9 03:02:52 UTC 2026

  System load:  0.12               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.202
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-63164-294-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-06-09T03:02:52.409233" elapsed="0.679768"/>
</kw>
<msg time="2026-06-09T03:02:53.089091" 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-06-09T03:02:52.408877" elapsed="0.680301"/>
</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-06-09T03:02:52.407210" elapsed="0.682083"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.096563" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-06-09T03:02:53.089600" elapsed="0.008647"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:02:53.098514" elapsed="0.000396"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-06-09T03:02:52.405928" elapsed="0.693073"/>
</kw>
<status status="PASS" start="2026-06-09T03:02:52.402373" elapsed="0.696681"/>
</branch>
<status status="PASS" start="2026-06-09T03:02:52.401499" elapsed="0.697601"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-09T03:02:53.099313" elapsed="0.000669"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-09T03:02:53.106439" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-06-09T03:02:53.106313" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-06-09T03:02:53.106289" elapsed="0.000230"/>
</if>
<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-06-09T03:02:53.110150" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-09T03:02:53.110034" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-06-09T03:02:53.110014" elapsed="0.000208"/>
</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-06-09T03:02:53.110355" elapsed="0.000455"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.111227" level="INFO">Logging into '10.30.171.111:8101' as 'karaf'.</msg>
<msg time="2026-06-09T03:02:53.297721" 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-06-09T03:02:53.110965" elapsed="0.186907"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.398757" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-09T03:02:53.298139" elapsed="0.100750"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.403847" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-09T03:02:53.404045" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</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-06-09T03:02:53.399138" elapsed="0.004941"/>
</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-06-09T03:02:53.404226" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:02:53.404631" elapsed="0.000195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:02:53.405280" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?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-06-09T03:02:53.404971" elapsed="0.000366"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-09T03:02:53.405387" elapsed="0.000050"/>
</return>
<msg time="2026-06-09T03:02:53.405661" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.111
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-09T03:02:53.109669" elapsed="0.296027"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-09T03:02:53.405846" elapsed="0.000549"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-09T03:02:53.406447" elapsed="0.000032"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-06-09T03:02:53.105987" elapsed="0.300593"/>
</kw>
<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-06-09T03:02:53.410436" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-09T03:02:53.410297" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-06-09T03:02:53.410274" elapsed="0.000236"/>
</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-06-09T03:02:53.410657" elapsed="0.000455"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.411785" level="INFO">Logging into '10.30.171.111:8101' as 'karaf'.</msg>
<msg time="2026-06-09T03:02:53.565949" 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-06-09T03:02:53.411260" elapsed="0.154831"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.591291" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-09T03:02:53.566336" elapsed="0.025021"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.593171" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-09T03:02:53.593275" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?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-06-09T03:02:53.591509" elapsed="0.001796"/>
</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-06-09T03:02:53.593443" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:02:53.593793" elapsed="0.000197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:02:53.594439" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?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-06-09T03:02:53.594127" elapsed="0.000363"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-09T03:02:53.594542" elapsed="0.000055"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.111
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-09T03:02:53.409962" elapsed="0.184780"/>
</kw>
<status status="PASS" start="2026-06-09T03:02:51.612711" elapsed="1.982096"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:02:53.597080" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:02:53.595977" elapsed="0.001169"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-09T03:02:53.598711" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-09T03:02:53.598337" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-09T03:02:53.599085" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:02:53.598839" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-09T03:02:53.602147" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:02:53.601886" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-06-09T03:02:53.601866" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.602568" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-09T03:02:53.602365" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:02:53.603321" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.111 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.202" 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-06-09T03:02:53.602871" elapsed="0.000513"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.604060" 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-06-09T03:02:53.603549" elapsed="0.000539"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-09T03:02:53.605022" level="INFO">Length is 0.</msg>
<msg time="2026-06-09T03:02:53.605115" 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-06-09T03:02:53.604691" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-09T03:02:53.605286" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.606576" level="INFO">Logging into '10.30.170.202:22' as 'jenkins'.</msg>
<msg time="2026-06-09T03:02:53.926978" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Jun  9 03:02:52 UTC 2026

  System load:  0.12               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.202
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Jun  9 03:02:53 2026 from 10.30.171.102
[?2004h[jenkins@releng-63164-294-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-06-09T03:02:53.606216" elapsed="0.320990"/>
</kw>
<msg time="2026-06-09T03:02:53.927313" 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-06-09T03:02:53.605854" elapsed="0.321561"/>
</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-06-09T03:02:53.604294" elapsed="0.323259"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-09T03:02:53.928601" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.111 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-09T03:13:00.058429" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-09T03:13:00.059099" level="INFO">${stdout} = </msg>
<msg time="2026-06-09T03:13:00.059221" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</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-06-09T03:02:53.927846" elapsed="606.131440"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:13:00.059784" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.061868" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.111. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:03:59.147 16  switches: flows:  117050 115670 113995 112260 113187 113192 111467 111902 109985 108298 109413 109428 107860 108616 107429 109187  total = 29.648983 per ms 
03:04:59.247 16  switches: flows:  127047 126817 125487 122771 122571 122509 122917 123239 118212 117525 121667 119152 117766 117517 119600 119600  total = 32.352605 per ms 
03:05:59.347 16  switches: flows:  126242 126304 123631 122492 121716 122169 122107 122127 117678 117539 117438 117680 117265 117439 117952 116760  total = 32.055484 per ms 
03:06:59.448 16  switches: flows:  127503 128055 125427 125748 123510 125088 126166 125572 120484 119469 120265 119713 118987 119726 119852 119647  total = 32.698787 per ms 
03:07:59.549 16  switches: flows:  129352 129371 126185 127311 125437 124815 127732 126641 120732 119148 123574 121921 122801 122981 120045 119473  total = 33.069978 per ms 
03:08:59.649 16  switches: flows:  129217 127034 123099 125645 122574 122891 126890 125085 118571 117538 122079 119336 121780 120750 120779 118564  total = 32.642663 per ms 
03:09:59.749 16  switches: flows:  131552 129494 123781 128452 125059 125580 128288 128212 120795 119972 123123 122392 123369 123063 121275 120112  total = 33.186564 per ms 
03:10:59.849 16  switches: flows:  131284 129395 125804 127266 123493 124223 126857 126934 120720 120725 122597 121403 122213 122250 121013 120266  total = 33.052192 per ms 
03:11:59.950 16  switches: flows:  131613 129711 126650 128829 126180 126575 128623 130253 122690 121014 125336 121554 123775 124120 121868 122129  total = 33.459499 per ms 
03:13:00.050 16  switches: flows:  130531 128818 124973 126869 125001 125529 126607 128804 122222 119548 123345 120520 123386 123076 121533 120345  total = 33.129784 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32055.48/33459.50/32849.73/10958.01 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.061002" elapsed="0.001186"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-09T03:13:00.062766" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-06-09T03:13:00.062400" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-06-09T03:13:00.062337" elapsed="0.000666"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-09T03:13:00.063265" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-06-09T03:13:00.063173" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-06-09T03:13:00.063133" elapsed="0.000288"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-09T03:13:00.063503" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-09T03:13:00.068581" elapsed="0.000375"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-09T03:13:00.069107" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:13:00.069413" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-09T03:13:00.064294" elapsed="0.005272"/>
</kw>
<msg time="2026-06-09T03:13:00.069717" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</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-06-09T03:02:53.599535" elapsed="606.470209"/>
</kw>
<status status="PASS" start="2026-06-09T03:02:53.599175" elapsed="606.470619"/>
</branch>
<status status="PASS" start="2026-06-09T03:02:53.598815" elapsed="606.471003"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.070254" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.111. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:03:59.147 16  switches: flows:  117050 115670 113995 112260 113187 113192 111467 111902 109985 108298 109413 109428 107860 108616 107429 109187  total = 29.648983 per ms 
03:04:59.247 16  switches: flows:  127047 126817 125487 122771 122571 122509 122917 123239 118212 117525 121667 119152 117766 117517 119600 119600  total = 32.352605 per ms 
03:05:59.347 16  switches: flows:  126242 126304 123631 122492 121716 122169 122107 122127 117678 117539 117438 117680 117265 117439 117952 116760  total = 32.055484 per ms 
03:06:59.448 16  switches: flows:  127503 128055 125427 125748 123510 125088 126166 125572 120484 119469 120265 119713 118987 119726 119852 119647  total = 32.698787 per ms 
03:07:59.549 16  switches: flows:  129352 129371 126185 127311 125437 124815 127732 126641 120732 119148 123574 121921 122801 122981 120045 119473  total = 33.069978 per ms 
03:08:59.649 16  switches: flows:  129217 127034 123099 125645 122574 122891 126890 125085 118571 117538 122079 119336 121780 120750 120779 118564  total = 32.642663 per ms 
03:09:59.749 16  switches: flows:  131552 129494 123781 128452 125059 125580 128288 128212 120795 119972 123123 122392 123369 123063 121275 120112  total = 33.186564 per ms 
03:10:59.849 16  switches: flows:  131284 129395 125804 127266 123493 124223 126857 126934 120720 120725 122597 121403 122213 122250 121013 120266  total = 33.052192 per ms 
03:11:59.950 16  switches: flows:  131613 129711 126650 128829 126180 126575 128623 130253 122690 121014 125336 121554 123775 124120 121868 122129  total = 33.459499 per ms 
03:13:00.050 16  switches: flows:  130531 128818 124973 126869 125001 125529 126607 128804 122222 119548 123345 120520 123386 123076 121533 120345  total = 33.129784 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32055.48/33459.50/32849.73/10958.01 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.069961" elapsed="0.000367"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-09T03:13:00.070479" elapsed="0.000420"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-09T03:13:00.071343" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-09T03:13:00.071442" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 32055.48/33459.50/32849.73/10958.01 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-09T03:13:00.071070" elapsed="0.000399"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:13:00.071935" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 32055.48/33459.50/32849.73/10958.01 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:13:00.071647" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.074646" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.072114" elapsed="0.002595"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.077145" level="INFO">32055.48/33459.50/32849.73/10958.01</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.074868" elapsed="0.002336"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:13:00.079597" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:13:00.077357" elapsed="0.002283"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:13:00.082067" level="INFO">@{result_value_list} = [ 32055.48 | 33459.50 | 32849.73 | 10958.01 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:13:00.079835" elapsed="0.002259"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.082560" level="INFO">Length is 4.</msg>
<msg time="2026-06-09T03:13:00.082672" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-09T03:13:00.082251" elapsed="0.000448"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.087537" level="INFO">min :: 32055.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.083100" elapsed="0.004495"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-09T03:13:00.082963" elapsed="0.004684"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.092279" level="INFO">max :: 33459.50</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.087873" elapsed="0.004466"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-09T03:13:00.087743" elapsed="0.004633"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.096974" level="INFO">avg :: 32849.73</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.092599" elapsed="0.004477"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-09T03:13:00.092468" elapsed="0.004650"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.101816" level="INFO">stdev :: 10958.01</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.097362" elapsed="0.004513"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-09T03:13:00.097216" elapsed="0.004696"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-09T03:13:00.082769" elapsed="0.019177"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.106014" level="INFO">${min} = 32055.48</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:13:00.102107" elapsed="0.003944"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.110230" level="INFO">${max} = 33459.50</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:13:00.106229" elapsed="0.004030"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.114444" level="INFO">${average} = 32849.73</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:13:00.110418" elapsed="0.004055"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.118476" level="INFO">${stdev} = 10958.01</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:13:00.114647" elapsed="0.003857"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.119055" level="INFO">${date} = 2026-06-09 03:13:00</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-09T03:13:00.118686" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.119700" level="INFO">CBench Result: 2026-06-09 03:13:00,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,32055.48,33459.50,32849.73,10958.01</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.119233" elapsed="0.000532"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-09T03:13:00.120807" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-09T03:13:00.120385" elapsed="0.000491"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-09T03:13:00.121032" elapsed="0.000466"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-09T03:13:00.119911" elapsed="0.001654"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-06-09T03:02:53.597577" elapsed="606.524068"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.122125" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-09T03:13:00.121802" elapsed="0.000381"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-09T03:13:00.122731" elapsed="0.000281"/>
</kw>
<status status="PASS" start="2026-06-09T03:13:00.122409" elapsed="0.000679"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-09T03:02:53.594998" elapsed="606.528128"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.124779" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:13:00.124366" elapsed="0.000471"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.126099" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-09T03:13:00.125752" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-09T03:13:00.126484" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:13:00.126255" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-09T03:13:00.129538" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:13:00.129253" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-06-09T03:13:00.129234" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-09T03:13:00.129971" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-09T03:13:00.129773" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.130859" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.111 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.202" 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-06-09T03:13:00.130256" elapsed="0.000753"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-09T03:13:00.131700" 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-06-09T03:13:00.131266" elapsed="0.000462"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-09T03:13:00.132696" level="INFO">Length is 0.</msg>
<msg time="2026-06-09T03:13:00.132792" 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-06-09T03:13:00.132350" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-09T03:13:00.132963" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-09T03:13:00.134228" level="INFO">Logging into '10.30.170.202:22' as 'jenkins'.</msg>
<msg time="2026-06-09T03:13:00.712841" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Jun  9 03:13:00 UTC 2026

  System load:  1.0                Processes:             105
  Usage of /:   19.6% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.202
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Jun  9 03:02:53 2026 from 10.30.171.102
[?2004h[jenkins@releng-63164-294-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-06-09T03:13:00.133821" elapsed="0.579228"/>
</kw>
<msg time="2026-06-09T03:13:00.713142" 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-06-09T03:13:00.133451" elapsed="0.579786"/>
</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-06-09T03:13:00.131972" elapsed="0.581391"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-09T03:13:00.714118" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.111 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-09T03:23:06.761316" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-09T03:23:06.761956" level="INFO">${stdout} = </msg>
<msg time="2026-06-09T03:23:06.762096" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</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-06-09T03:13:00.713686" elapsed="606.048481"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:23:06.762611" elapsed="0.000740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.764499" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.111. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:14:05.841 16  switches: flows:  505653 512407 522219 515600 521159 512638 509286 510091 502495 499560 507928 496055 502804 495242 500157 502347  total = 135.260683 per ms 
03:15:05.943 16  switches: flows:  513124 513438 515149 519427 518790 513444 508692 514941 517159 511372 506259 513459 514880 508979 513426 517411  total = 136.769597 per ms 
03:16:06.044 16  switches: flows:  382293 384841 422757 382889 385240 419832 378895 404285 335160 389490 383763 391553 387113 400198 428707 379041  total = 104.092987 per ms 
03:17:06.144 16  switches: flows:  486159 480323 503823 490919 497412 491549 506065 494987 481338 492920 490608 490016 504994 503087 494264 487626  total = 131.380927 per ms 
03:18:06.246 16  switches: flows:  565229 557529 553193 557825 564517 554262 555338 558657 559021 563518 557711 556130 559550 560834 567327 561478  total = 148.952379 per ms 
03:19:06.352 16  switches: flows:  532587 538591 531553 514540 539611 541627 534997 535209 538865 537885 538035 533255 542288 530657 539799 551267  total = 142.760062 per ms 
03:20:06.453 16  switches: flows:  464726 424169 522334 450063 503512 440363 509226 473089 456215 502820 509254 429284 482227 451051 480160 438073  total = 125.398413 per ms 
03:21:06.555 16  switches: flows:  521060 515673 524167 525196 518895 523581 526307 522315 522600 532865 527464 525232 527829 524901 528156 525720  total = 139.630007 per ms 
03:22:06.656 16  switches: flows:  555777 576539 570371 563502 566604 569496 564352 561765 581679 563896 570517 572751 572552 579189 568629 571128  total = 151.558410 per ms 
03:23:06.757 16  switches: flows:  573027 564988 572397 581212 576162 584674 576635 571742 569657 575236 575972 580968 569542 572569 581187 579269  total = 153.162533 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 104092.99/153162.53/137078.37/47953.27 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.763747" elapsed="0.001074"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-09T03:23:06.765307" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-06-09T03:23:06.765002" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-06-09T03:23:06.764950" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-09T03:23:06.765793" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-06-09T03:23:06.765707" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-06-09T03:23:06.765668" elapsed="0.000267"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-09T03:23:06.766017" elapsed="0.000082"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-09T03:23:06.769858" elapsed="0.000508"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-09T03:23:06.770575" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:23:06.771007" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-09T03:23:06.766778" elapsed="0.004447"/>
</kw>
<msg time="2026-06-09T03:23:06.771404" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</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-06-09T03:13:00.126909" elapsed="606.644533"/>
</kw>
<status status="PASS" start="2026-06-09T03:13:00.126570" elapsed="606.644941"/>
</branch>
<status status="PASS" start="2026-06-09T03:13:00.126233" elapsed="606.645311"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.772178" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.111. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:14:05.841 16  switches: flows:  505653 512407 522219 515600 521159 512638 509286 510091 502495 499560 507928 496055 502804 495242 500157 502347  total = 135.260683 per ms 
03:15:05.943 16  switches: flows:  513124 513438 515149 519427 518790 513444 508692 514941 517159 511372 506259 513459 514880 508979 513426 517411  total = 136.769597 per ms 
03:16:06.044 16  switches: flows:  382293 384841 422757 382889 385240 419832 378895 404285 335160 389490 383763 391553 387113 400198 428707 379041  total = 104.092987 per ms 
03:17:06.144 16  switches: flows:  486159 480323 503823 490919 497412 491549 506065 494987 481338 492920 490608 490016 504994 503087 494264 487626  total = 131.380927 per ms 
03:18:06.246 16  switches: flows:  565229 557529 553193 557825 564517 554262 555338 558657 559021 563518 557711 556130 559550 560834 567327 561478  total = 148.952379 per ms 
03:19:06.352 16  switches: flows:  532587 538591 531553 514540 539611 541627 534997 535209 538865 537885 538035 533255 542288 530657 539799 551267  total = 142.760062 per ms 
03:20:06.453 16  switches: flows:  464726 424169 522334 450063 503512 440363 509226 473089 456215 502820 509254 429284 482227 451051 480160 438073  total = 125.398413 per ms 
03:21:06.555 16  switches: flows:  521060 515673 524167 525196 518895 523581 526307 522315 522600 532865 527464 525232 527829 524901 528156 525720  total = 139.630007 per ms 
03:22:06.656 16  switches: flows:  555777 576539 570371 563502 566604 569496 564352 561765 581679 563896 570517 572751 572552 579189 568629 571128  total = 151.558410 per ms 
03:23:06.757 16  switches: flows:  573027 564988 572397 581212 576162 584674 576635 571742 569657 575236 575972 580968 569542 572569 581187 579269  total = 153.162533 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 104092.99/153162.53/137078.37/47953.27 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.771769" elapsed="0.000513"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-09T03:23:06.772489" elapsed="0.000533"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-09T03:23:06.773548" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-09T03:23:06.773698" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 104092.99/153162.53/137078.37/47953.27 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-09T03:23:06.773247" elapsed="0.000489"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:23:06.774341" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 104092.99/153162.53/137078.37/47953.27 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:23:06.773953" elapsed="0.000427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.776923" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.774584" elapsed="0.002395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.779351" level="INFO">104092.99/153162.53/137078.37/47953.27</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.777125" elapsed="0.002281"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:23:06.781809" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:23:06.779555" elapsed="0.002281"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:23:06.784293" level="INFO">@{result_value_list} = [ 104092.99 | 153162.53 | 137078.37 | 47953.27 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:23:06.782033" elapsed="0.002287"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.784799" level="INFO">Length is 4.</msg>
<msg time="2026-06-09T03:23:06.784886" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-09T03:23:06.784477" elapsed="0.000433"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.789611" level="INFO">min :: 104092.99</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.785298" elapsed="0.004399"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-09T03:23:06.785169" elapsed="0.004572"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.794601" level="INFO">max :: 153162.53</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.790025" elapsed="0.004653"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-09T03:23:06.789855" elapsed="0.004860"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.799260" level="INFO">avg :: 137078.37</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.794934" elapsed="0.004382"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-09T03:23:06.794805" elapsed="0.004546"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.804023" level="INFO">stdev :: 47953.27</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.799583" elapsed="0.004497"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-09T03:23:06.799439" elapsed="0.004676"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-09T03:23:06.784984" elapsed="0.019163"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.808072" level="INFO">${min} = 104092.99</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:23:06.804308" elapsed="0.003791"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.812040" level="INFO">${max} = 153162.53</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:23:06.808254" elapsed="0.003813"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.816205" level="INFO">${average} = 137078.37</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:23:06.812220" elapsed="0.004012"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.820149" level="INFO">${stdev} = 47953.27</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:23:06.816386" elapsed="0.003789"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.820699" level="INFO">${date} = 2026-06-09 03:23:06</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-09T03:23:06.820336" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.821279" level="INFO">CBench Result: 2026-06-09 03:23:06,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,104092.99,153162.53,137078.37,47953.27</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.820873" elapsed="0.000461"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-09T03:23:06.822490" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-09T03:23:06.822051" elapsed="0.000505"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-09T03:23:06.822727" elapsed="0.000457"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-09T03:23:06.821471" elapsed="0.001777"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-06-09T03:13:00.125153" elapsed="606.698155"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.823788" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-09T03:23:06.823457" elapsed="0.000388"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-09T03:23:06.824357" elapsed="0.000277"/>
</kw>
<status status="PASS" start="2026-06-09T03:23:06.824059" elapsed="0.000648"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-09T03:13:00.123687" elapsed="606.701058"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.826326" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:23:06.825896" elapsed="0.000498"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.827628" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-09T03:23:06.827287" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-09T03:23:06.828197" elapsed="0.000113"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:23:06.827964" elapsed="0.000396"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-09T03:23:06.831386" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:23:06.831138" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-06-09T03:23:06.831119" elapsed="0.000349"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-09T03:23:06.831797" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-09T03:23:06.831599" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.832498" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.111 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.202" 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-06-09T03:23:06.832076" elapsed="0.000481"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-09T03:23:06.833113" level="INFO">${conn_id} = 9</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-06-09T03:23:06.832718" elapsed="0.000423"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-09T03:23:06.834226" level="INFO">Length is 0.</msg>
<msg time="2026-06-09T03:23:06.834324" 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-06-09T03:23:06.833731" elapsed="0.000619"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-09T03:23:06.834495" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-09T03:23:06.835710" level="INFO">Logging into '10.30.170.202:22' as 'jenkins'.</msg>
<msg time="2026-06-09T03:23:07.403609" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Jun  9 03:23:07 UTC 2026

  System load:  0.29               Processes:             105
  Usage of /:   19.6% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.202
  Swap usage:   0%

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Jun  9 03:13:00 2026 from 10.30.171.102
[?2004h[jenkins@releng-63164-294-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-06-09T03:23:06.835340" elapsed="0.568455"/>
</kw>
<msg time="2026-06-09T03:23:07.403876" 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-06-09T03:23:06.834993" elapsed="0.568964"/>
</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-06-09T03:23:06.833342" elapsed="0.570739"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-09T03:23:07.404774" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.111 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-09T03:33:14.009882" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-09T03:33:14.010574" level="INFO">${stdout} = </msg>
<msg time="2026-06-09T03:33:14.010714" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</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-06-09T03:23:07.404291" elapsed="606.606493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:33:14.011265" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.013344" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.111. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:24:13.098 16  switches: flows:  123014 125415 124262 124980 126609 130489 123960 124571 123630 121158 122372 121973 120126 123488 123482 122852  total = 33.039683 per ms 
03:25:13.199 16  switches: flows:  123754 127233 124638 126059 127076 125735 124101 125903 122837 122094 123576 119752 118687 125179 123554 122627  total = 32.991429 per ms 
03:26:13.300 16  switches: flows:  123888 127829 121739 126186 127890 123005 122677 124574 122262 120096 121495 120200 119499 122141 121518 119400  total = 32.685403 per ms 
03:27:13.401 16  switches: flows:  124192 128094 124824 128250 127594 124246 123823 123499 122949 120795 121541 120098 120087 123012 122409 119816  total = 32.865596 per ms 
03:28:13.502 16  switches: flows:  126179 130926 125151 128738 128690 125308 124634 126442 123874 122412 122584 123179 119460 123494 123016 123158  total = 33.231933 per ms 
03:29:13.603 16  switches: flows:  120360 119520 117580 117315 119898 119820 117989 117036 114340 115534 115608 114339 113851 115710 115929 114089  total = 31.096699 per ms 
03:30:13.704 16  switches: flows:  124396 125334 124456 123213 123712 124408 123712 121910 120575 122541 119994 122129 118150 118241 120746 119816  total = 32.501281 per ms 
03:31:13.805 16  switches: flows:  124632 127464 125619 125555 126284 126692 123106 121474 121214 122798 119498 121898 121353 119140 122555 121495  total = 32.791504 per ms 
03:32:13.907 16  switches: flows:  120107 119817 120084 118921 116487 119461 115727 116349 114421 115299 112864 113880 114357 113745 115320 114616  total = 30.972462 per ms 
03:33:14.007 16  switches: flows:  125016 127336 125497 124358 124276 127266 121936 125930 122341 123363 118594 121164 116832 118845 119992 120128  total = 32.660031 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30972.46/33231.93/32421.82/10834.50 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.012553" elapsed="0.001150"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-09T03:33:14.014195" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-06-09T03:33:14.013890" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-06-09T03:33:14.013836" elapsed="0.000594"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-09T03:33:14.014675" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-06-09T03:33:14.014560" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-06-09T03:33:14.014523" elapsed="0.000297"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-09T03:33:14.014938" elapsed="0.000058"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-09T03:33:14.020920" elapsed="0.000594"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-09T03:33:14.021806" elapsed="0.000257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-09T03:33:14.022249" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-09T03:33:14.015798" elapsed="0.006666"/>
</kw>
<msg time="2026-06-09T03:33:14.022669" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</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-06-09T03:23:06.828818" elapsed="607.193892"/>
</kw>
<status status="PASS" start="2026-06-09T03:23:06.828388" elapsed="607.194393"/>
</branch>
<status status="PASS" start="2026-06-09T03:23:06.827760" elapsed="607.195055"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.023457" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.111:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.111. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:24:13.098 16  switches: flows:  123014 125415 124262 124980 126609 130489 123960 124571 123630 121158 122372 121973 120126 123488 123482 122852  total = 33.039683 per ms 
03:25:13.199 16  switches: flows:  123754 127233 124638 126059 127076 125735 124101 125903 122837 122094 123576 119752 118687 125179 123554 122627  total = 32.991429 per ms 
03:26:13.300 16  switches: flows:  123888 127829 121739 126186 127890 123005 122677 124574 122262 120096 121495 120200 119499 122141 121518 119400  total = 32.685403 per ms 
03:27:13.401 16  switches: flows:  124192 128094 124824 128250 127594 124246 123823 123499 122949 120795 121541 120098 120087 123012 122409 119816  total = 32.865596 per ms 
03:28:13.502 16  switches: flows:  126179 130926 125151 128738 128690 125308 124634 126442 123874 122412 122584 123179 119460 123494 123016 123158  total = 33.231933 per ms 
03:29:13.603 16  switches: flows:  120360 119520 117580 117315 119898 119820 117989 117036 114340 115534 115608 114339 113851 115710 115929 114089  total = 31.096699 per ms 
03:30:13.704 16  switches: flows:  124396 125334 124456 123213 123712 124408 123712 121910 120575 122541 119994 122129 118150 118241 120746 119816  total = 32.501281 per ms 
03:31:13.805 16  switches: flows:  124632 127464 125619 125555 126284 126692 123106 121474 121214 122798 119498 121898 121353 119140 122555 121495  total = 32.791504 per ms 
03:32:13.907 16  switches: flows:  120107 119817 120084 118921 116487 119461 115727 116349 114421 115299 112864 113880 114357 113745 115320 114616  total = 30.972462 per ms 
03:33:14.007 16  switches: flows:  125016 127336 125497 124358 124276 127266 121936 125930 122341 123363 118594 121164 116832 118845 119992 120128  total = 32.660031 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30972.46/33231.93/32421.82/10834.50 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.023025" elapsed="0.000557"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-09T03:33:14.023822" elapsed="0.000532"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-09T03:33:14.024952" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-09T03:33:14.025088" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30972.46/33231.93/32421.82/10834.50 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-09T03:33:14.024586" elapsed="0.000538"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:33:14.025728" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30972.46/33231.93/32421.82/10834.50 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:33:14.025345" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.029190" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.025975" elapsed="0.003298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.032660" level="INFO">30972.46/33231.93/32421.82/10834.50</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.029481" elapsed="0.003236"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:33:14.035081" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:33:14.032870" elapsed="0.002239"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-09T03:33:14.037574" level="INFO">@{result_value_list} = [ 30972.46 | 33231.93 | 32421.82 | 10834.50 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-09T03:33:14.035300" elapsed="0.002302"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.038093" level="INFO">Length is 4.</msg>
<msg time="2026-06-09T03:33:14.038183" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-09T03:33:14.037781" elapsed="0.000426"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.042984" level="INFO">min :: 30972.46</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.038606" elapsed="0.004439"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-09T03:33:14.038474" elapsed="0.004609"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.047709" level="INFO">max :: 33231.93</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.043302" elapsed="0.004465"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-09T03:33:14.043173" elapsed="0.004630"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.052470" level="INFO">avg :: 32421.82</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.048017" elapsed="0.004511"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-09T03:33:14.047888" elapsed="0.004675"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.057238" level="INFO">stdev :: 10834.50</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.052802" elapsed="0.004494"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-09T03:33:14.052670" elapsed="0.004662"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-09T03:33:14.038284" elapsed="0.019080"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.061304" level="INFO">${min} = 30972.46</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:33:14.057530" elapsed="0.003802"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.065558" level="INFO">${max} = 33231.93</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:33:14.061489" elapsed="0.004097"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.069562" level="INFO">${average} = 32421.82</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:33:14.065760" elapsed="0.003829"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.073547" level="INFO">${stdev} = 10834.50</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-09T03:33:14.069761" elapsed="0.003814"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.074132" level="INFO">${date} = 2026-06-09 03:33:14</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-09T03:33:14.073753" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.074739" level="INFO">CBench Result: 2026-06-09 03:33:14,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30972.46,33231.93,32421.82,10834.50</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-09T03:33:14.074307" elapsed="0.000490"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-09T03:33:14.076008" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-09T03:33:14.075494" elapsed="0.000584"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-09T03:33:14.076231" elapsed="0.000485"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-09T03:33:14.074949" elapsed="0.001833"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-06-09T03:23:06.826729" elapsed="607.250113"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.077306" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-09T03:33:14.076991" elapsed="0.000372"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-09T03:33:14.078577" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-09T03:33:14.078107" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-09T03:33:14.078850" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-06-09T03:33:14.078699" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-06-09T03:33:14.078678" elapsed="0.000265"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.079093" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.079251" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.079423" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.079632" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.079786" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.079931" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.080079" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-06-09T03:33:14.080300" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-09T03:33:14.080162" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-06-09T03:33:14.080144" elapsed="0.000231"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-06-09T03:33:14.077769" elapsed="0.002658"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-09T03:23:06.825262" elapsed="607.255211"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-06-09T03:02:51.027756" elapsed="1823.053400"/>
</suite>
<statistics>
<total>
<stat pass="3" fail="0" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="3" fail="0" skip="0">cbench</stat>
<stat pass="2" fail="0" skip="0">latency</stat>
<stat pass="1" fail="0" skip="0">throughput</stat>
</tag>
<suite>
<stat name="openflowplugin-cbench.txt" id="s1" pass="3" fail="0" skip="0">openflowplugin-cbench.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
