<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-06-18T03:05:14.173239" 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-18T03:05:14.737456" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-06-18T03:05:14.737322" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-06-18T03:05:14.737293" elapsed="0.000277"/>
</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-18T03:05:14.737716" elapsed="0.000515"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-18T03:05:14.738747" level="INFO">Logging into '10.30.171.35:8101' as 'karaf'.</msg>
<msg time="2026-06-18T03:05:15.664552" 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-18T03:05:14.738406" elapsed="0.926382"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-18T03:05:15.716430" 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-18T03:05:15.665122" elapsed="0.051376"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-18T03:05:15.718511" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-18T03:05:15.718643" 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-18T03:05:15.716682" elapsed="0.001992"/>
</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-18T03:05:15.718835" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:05:15.719229" elapsed="0.000221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:05:15.719976" 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-18T03:05:15.719624" elapsed="0.000412"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T03:05:15.720095" elapsed="0.000057"/>
</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.35
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-18T03:05:14.736923" elapsed="0.983354"/>
</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-18T03:05:14.733321" elapsed="0.987020"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T03:05:15.720941" 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-18T03:05:15.720559" elapsed="0.000439"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T03:05:15.721398" 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-18T03:05:15.721153" elapsed="0.000302"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-18T03:05:15.722024" 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-18T03:05:15.721634" elapsed="0.000417"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T03:05:15.722571" 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-18T03:05:15.722221" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-18T03:05:15.723147" 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-18T03:05:15.722762" elapsed="0.000411"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T03:05:15.723682" 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-18T03:05:15.723333" elapsed="0.000391"/>
</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-18T03:05:15.724029" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:05:15.723815" elapsed="0.000269"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T03:05:15.728665" 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-18T03:05:15.728236" elapsed="0.000456"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T03:05:15.729738" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T03:05:15.729820" 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-18T03:05:15.729254" elapsed="0.000590"/>
</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-18T03:05:15.729991" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T03:05:15.731387" level="INFO">Logging into '10.30.171.22:22' as 'jenkins'.</msg>
<msg time="2026-06-18T03:05:16.488451" 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 Thu Jun 18 03:05:16 UTC 2026

  System load:  0.03               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.22
  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-312-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-18T03:05:15.730869" elapsed="0.757757"/>
</kw>
<msg time="2026-06-18T03:05:16.488711" 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-18T03:05:15.730488" elapsed="0.758309"/>
</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-18T03:05:15.728898" elapsed="0.760017"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-18T03:05:16.496831" 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-18T03:05:16.489133" elapsed="0.009657"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:05:16.499043" elapsed="0.000405"/>
</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-18T03:05:15.727715" elapsed="0.771847"/>
</kw>
<status status="PASS" start="2026-06-18T03:05:15.724381" elapsed="0.775237"/>
</branch>
<status status="PASS" start="2026-06-18T03:05:15.723783" elapsed="0.775879"/>
</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-18T03:05:16.499878" elapsed="0.000707"/>
</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-18T03:05:16.506716" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-06-18T03:05:16.506528" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-06-18T03:05:16.506495" elapsed="0.000331"/>
</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-18T03:05:16.511014" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-18T03:05:16.510901" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-06-18T03:05:16.510881" elapsed="0.000204"/>
</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-18T03:05:16.511214" elapsed="0.000449"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-18T03:05:16.512072" level="INFO">Logging into '10.30.171.35:8101' as 'karaf'.</msg>
<msg time="2026-06-18T03:05:16.665165" 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-18T03:05:16.511810" elapsed="0.153445"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-18T03:05:16.755268" 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-18T03:05:16.665416" elapsed="0.089937"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-18T03:05:16.768445" 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-18T03:05:16.768631" 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-18T03:05:16.755516" elapsed="0.013147"/>
</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-18T03:05:16.768808" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:05:16.769157" elapsed="0.000205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:05:16.769801" 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-18T03:05:16.769503" elapsed="0.000353"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T03:05:16.769902" elapsed="0.000040"/>
</return>
<msg time="2026-06-18T03:05:16.770074" 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.35
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-18T03:05:16.510530" elapsed="0.259576"/>
</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-18T03:05:16.770252" elapsed="0.000531"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T03:05:16.770834" 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-18T03:05:16.506115" elapsed="0.264851"/>
</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-18T03:05:16.774656" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-06-18T03:05:16.774518" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-06-18T03:05:16.774497" elapsed="0.000230"/>
</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-18T03:05:16.774858" elapsed="0.000419"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-18T03:05:16.775696" level="INFO">Logging into '10.30.171.35:8101' as 'karaf'.</msg>
<msg time="2026-06-18T03:05:17.059128" 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-18T03:05:16.775426" elapsed="0.283792"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-18T03:05:17.086149" 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-18T03:05:17.059373" elapsed="0.026837"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-18T03:05:17.087986" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-18T03:05:17.088081" 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-18T03:05:17.086358" elapsed="0.001752"/>
</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-18T03:05:17.088242" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:05:17.088594" elapsed="0.000160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:05:17.089153" 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-18T03:05:17.088889" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T03:05:17.089249" elapsed="0.000036"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.35
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-18T03:05:16.774207" elapsed="0.315179"/>
</kw>
<status status="PASS" start="2026-06-18T03:05:14.731535" elapsed="2.357912"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:05:17.091565" 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-18T03:05:17.090281" elapsed="0.001354"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T03:05:17.093032" 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-18T03:05:17.092678" elapsed="0.000397"/>
</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-18T03:05:17.093371" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:05:17.093150" elapsed="0.000281"/>
</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-18T03:05:17.096458" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:05:17.096208" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-06-18T03:05:17.096175" elapsed="0.000380"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-18T03:05:17.096883" 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-18T03:05:17.097011" 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-18T03:05:17.096688" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:05:17.097643" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.35 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.22" 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-18T03:05:17.097172" elapsed="0.000536"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T03:05:17.098315" 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-18T03:05:17.097850" elapsed="0.000492"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T03:05:17.099248" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T03:05:17.099337" 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-18T03:05:17.098935" elapsed="0.000425"/>
</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-18T03:05:17.099502" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T03:05:17.100721" level="INFO">Logging into '10.30.171.22:22' as 'jenkins'.</msg>
<msg time="2026-06-18T03:05:17.414292" 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 Thu Jun 18 03:05:16 UTC 2026

  System load:  0.03               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.22
  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: Thu Jun 18 03:05:16 2026 from 10.30.170.29
[?2004h[jenkins@releng-63164-312-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-18T03:05:17.100351" elapsed="0.314078"/>
</kw>
<msg time="2026-06-18T03:05:17.414498" 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-18T03:05:17.100001" elapsed="0.314591"/>
</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-18T03:05:17.098559" elapsed="0.316134"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-18T03:05:17.415114" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.35 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-18T03:15:23.534113" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-18T03:15:23.534711" level="INFO">${stdout} = </msg>
<msg time="2026-06-18T03:15:23.534823" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</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-18T03:05:17.414869" elapsed="606.120022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:15:23.535349" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.537502" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35: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.35. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:06:22.615 16  switches: flows:  83056 81072 81818 82836 82080 81634 82566 80904 80539 81159 81507 80673 80983 81693 80589 81345  total = 21.740900 per ms 
03:07:22.716 16  switches: flows:  96964 95446 95588 96801 96805 95626 96323 95027 94333 95691 95709 96099 94663 96068 93673 93362  total = 25.427175 per ms 
03:08:22.816 16  switches: flows:  97024 93760 94195 94902 95331 93873 96697 95704 95249 93605 93217 93523 93731 94069 93857 92615  total = 25.147138 per ms 
03:09:22.917 16  switches: flows:  103342 101892 102066 102960 101259 99990 102956 102640 103011 101679 100755 100106 100290 100925 98948 100244  total = 27.005930 per ms 
03:10:23.017 16  switches: flows:  97095 97797 98805 98146 99013 96039 98927 97682 97878 95276 94858 97911 95411 98286 96790 95633  total = 25.882570 per ms 
03:11:23.117 16  switches: flows:  101021 102097 103462 103048 104501 100551 102115 101471 102108 99126 100185 103561 99665 101097 102090 100700  total = 27.068108 per ms 
03:12:23.217 16  switches: flows:  104339 106523 108659 103840 108508 105113 106753 104154 107255 104133 104125 106951 102946 106576 106061 103482  total = 28.110019 per ms 
03:13:23.318 16  switches: flows:  106314 104275 104191 105576 106107 103684 107039 102985 105359 103189 102859 105152 103244 104130 103256 103506  total = 27.801356 per ms 
03:14:23.418 16  switches: flows:  103186 103153 103376 101648 103007 99409 104779 101851 102699 100344 99808 103048 99891 102438 100028 101075  total = 27.117003 per ms 
03:15:23.518 16  switches: flows:  99415 99644 100917 99949 103128 99895 102084 100359 99569 97748 98329 100753 99817 101035 98227 101400  total = 26.659956 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25147.14/28110.02/26691.03/8948.72 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:15:23.536729" elapsed="0.001123"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-18T03:15:23.538445" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-06-18T03:15:23.538084" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-06-18T03:15:23.538017" elapsed="0.000679"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-18T03:15:23.538908" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-06-18T03:15:23.538827" elapsed="0.000169"/>
</branch>
<status status="NOT RUN" start="2026-06-18T03:15:23.538791" elapsed="0.000251"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-18T03:15:23.539114" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<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-18T03:15:23.544892" elapsed="0.000534"/>
</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-18T03:15:23.545598" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:15:23.545921" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-18T03:15:23.539831" elapsed="0.006246"/>
</kw>
<msg time="2026-06-18T03:15:23.546207" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</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-18T03:05:17.093879" elapsed="606.452355"/>
</kw>
<status status="PASS" start="2026-06-18T03:05:17.093458" elapsed="606.452825"/>
</branch>
<status status="PASS" start="2026-06-18T03:05:17.093128" elapsed="606.453180"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.546767" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35: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.35. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:06:22.615 16  switches: flows:  83056 81072 81818 82836 82080 81634 82566 80904 80539 81159 81507 80673 80983 81693 80589 81345  total = 21.740900 per ms 
03:07:22.716 16  switches: flows:  96964 95446 95588 96801 96805 95626 96323 95027 94333 95691 95709 96099 94663 96068 93673 93362  total = 25.427175 per ms 
03:08:22.816 16  switches: flows:  97024 93760 94195 94902 95331 93873 96697 95704 95249 93605 93217 93523 93731 94069 93857 92615  total = 25.147138 per ms 
03:09:22.917 16  switches: flows:  103342 101892 102066 102960 101259 99990 102956 102640 103011 101679 100755 100106 100290 100925 98948 100244  total = 27.005930 per ms 
03:10:23.017 16  switches: flows:  97095 97797 98805 98146 99013 96039 98927 97682 97878 95276 94858 97911 95411 98286 96790 95633  total = 25.882570 per ms 
03:11:23.117 16  switches: flows:  101021 102097 103462 103048 104501 100551 102115 101471 102108 99126 100185 103561 99665 101097 102090 100700  total = 27.068108 per ms 
03:12:23.217 16  switches: flows:  104339 106523 108659 103840 108508 105113 106753 104154 107255 104133 104125 106951 102946 106576 106061 103482  total = 28.110019 per ms 
03:13:23.318 16  switches: flows:  106314 104275 104191 105576 106107 103684 107039 102985 105359 103189 102859 105152 103244 104130 103256 103506  total = 27.801356 per ms 
03:14:23.418 16  switches: flows:  103186 103153 103376 101648 103007 99409 104779 101851 102699 100344 99808 103048 99891 102438 100028 101075  total = 27.117003 per ms 
03:15:23.518 16  switches: flows:  99415 99644 100917 99949 103128 99895 102084 100359 99569 97748 98329 100753 99817 101035 98227 101400  total = 26.659956 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25147.14/28110.02/26691.03/8948.72 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:15:23.546451" elapsed="0.000390"/>
</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-18T03:15:23.546991" elapsed="0.000375"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-18T03:15:23.547776" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-18T03:15:23.547868" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25147.14/28110.02/26691.03/8948.72 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-18T03:15:23.547527" elapsed="0.000366"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:15:23.548305" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25147.14/28110.02/26691.03/8948.72 | 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-18T03:15:23.548049" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.550775" 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-18T03:15:23.548476" elapsed="0.002364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.553205" level="INFO">25147.14/28110.02/26691.03/8948.72</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:15:23.550989" elapsed="0.002274"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:15:23.555614" 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-18T03:15:23.553415" elapsed="0.002227"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:15:23.558488" level="INFO">@{result_value_list} = [ 25147.14 | 28110.02 | 26691.03 | 8948.72 ]</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-18T03:15:23.555834" elapsed="0.002692"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.559191" level="INFO">Length is 4.</msg>
<msg time="2026-06-18T03:15:23.559313" 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-18T03:15:23.558765" elapsed="0.000581"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.566360" level="INFO">min :: 25147.14</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-18T03:15:23.559924" elapsed="0.006518"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-18T03:15:23.559737" elapsed="0.006754"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.571817" level="INFO">max :: 28110.02</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-18T03:15:23.566825" elapsed="0.005051"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-18T03:15:23.566645" elapsed="0.005266"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.576428" level="INFO">avg :: 26691.03</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-18T03:15:23.572135" elapsed="0.004349"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-18T03:15:23.572004" elapsed="0.004515"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.582667" level="INFO">stdev :: 8948.72</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-18T03:15:23.576816" elapsed="0.005932"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-18T03:15:23.576685" elapsed="0.006112"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-18T03:15:23.559441" elapsed="0.023402"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.588247" level="INFO">${min} = 25147.14</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-18T03:15:23.583063" elapsed="0.005220"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.592820" level="INFO">${max} = 28110.02</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-18T03:15:23.588779" elapsed="0.004068"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.596843" level="INFO">${average} = 26691.03</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-18T03:15:23.593000" elapsed="0.003870"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.600754" level="INFO">${stdev} = 8948.72</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-18T03:15:23.597023" elapsed="0.003758"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.601297" level="INFO">${date} = 2026-06-18 03:15:23</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-18T03:15:23.600943" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.601906" level="INFO">CBench Result: 2026-06-18 03:15:23,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25147.14,28110.02,26691.03,8948.72</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-18T03:15:23.601469" elapsed="0.000493"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T03:15:23.603059" 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-18T03:15:23.602646" elapsed="0.000480"/>
</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-18T03:15:23.603282" elapsed="0.000487"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-18T03:15:23.602107" elapsed="0.001729"/>
</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-18T03:05:17.092033" elapsed="606.511865"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.604367" 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-18T03:15:23.604049" elapsed="0.000377"/>
</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-18T03:15:23.604974" elapsed="0.000268"/>
</kw>
<status status="PASS" start="2026-06-18T03:15:23.604671" elapsed="0.000641"/>
</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-18T03:05:17.089636" elapsed="606.515713"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.606684" 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-18T03:15:23.606281" elapsed="0.000460"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.607988" 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-18T03:15:23.607656" elapsed="0.000374"/>
</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-18T03:15:23.608363" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:15:23.608143" elapsed="0.000278"/>
</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-18T03:15:23.611384" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:15:23.611137" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-06-18T03:15:23.611118" elapsed="0.000346"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-18T03:15:23.611818" 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-18T03:15:23.611936" 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-18T03:15:23.611612" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.612558" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.35 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.22" 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-18T03:15:23.612095" elapsed="0.000524"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T03:15:23.613153" 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-18T03:15:23.612759" elapsed="0.000420"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T03:15:23.614071" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T03:15:23.614158" 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-18T03:15:23.613763" elapsed="0.000419"/>
</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-18T03:15:23.614322" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T03:15:23.615585" level="INFO">Logging into '10.30.171.22:22' as 'jenkins'.</msg>
<msg time="2026-06-18T03:15:24.209175" 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 Thu Jun 18 03:15:23 UTC 2026

  System load:  1.03               Processes:             103
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.22
  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: Thu Jun 18 03:05:17 2026 from 10.30.170.29
[?2004h[jenkins@releng-63164-312-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-18T03:15:23.615216" elapsed="0.594151"/>
</kw>
<msg time="2026-06-18T03:15:24.209454" 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-18T03:15:23.614867" elapsed="0.594690"/>
</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-18T03:15:23.613377" elapsed="0.596297"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-18T03:15:24.210183" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.35 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-18T03:25:30.514803" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-18T03:25:30.515323" level="INFO">${stdout} = </msg>
<msg time="2026-06-18T03:25:30.515429" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.35: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-18T03:15:24.209889" elapsed="606.305597"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:25:30.516043" elapsed="0.000772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.518076" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.35: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.35. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:16:29.321 16  switches: flows:  439331 453061 453981 455792 455566 451178 450534 453012 448681 434294 441143 435436 440456 450423 440614 438534  total = 119.033933 per ms 
03:17:29.422 16  switches: flows:  496823 493561 490776 488328 494895 500383 492231 490233 491661 493102 494322 489525 494357 497303 494047 496329  total = 131.410512 per ms 
03:18:29.523 16  switches: flows:  526349 539466 530809 528370 525984 532847 529952 529772 529305 529491 530161 529335 529675 532957 531500 528811  total = 141.175222 per ms 
03:19:29.840 16  switches: flows:  463764 427085 451258 449155 444569 469265 460966 436912 468267 467862 466662 440377 467485 461407 445331 461767  total = 120.732766 per ms 
03:20:29.942 16  switches: flows:  495859 495943 484240 485599 487661 488686 485585 499377 486420 484623 495183 499339 493462 493785 497688 481826  total = 130.702016 per ms 
03:21:30.086 16  switches: flows:  491166 501572 497772 496057 494730 497111 500899 494872 491852 501136 493752 500495 492460 500115 504459 503489  total = 132.380229 per ms 
03:22:30.187 16  switches: flows:  502534 497667 502895 501036 504111 494301 496477 498048 496612 497555 487769 495037 502829 492667 499177 492623  total = 132.465495 per ms 
03:23:30.289 16  switches: flows:  547465 538550 537442 539820 538737 550010 544119 538880 537419 536317 537572 542670 541235 537937 535726 533781  total = 143.718165 per ms 
03:24:30.391 16  switches: flows:  496916 497290 495224 499768 496815 499321 484983 502561 488023 488018 507026 484969 494843 497151 501013 496463  total = 131.951182 per ms 
03:25:30.492 16  switches: flows:  578919 579100 586039 579380 586274 584440 577331 578527 573923 580790 575885 579996 580529 573346 583559 580455  total = 154.381862 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 120732.77/154381.86/135435.27/46053.47 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:25:30.517217" elapsed="0.001180"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-18T03:25:30.518926" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-06-18T03:25:30.518616" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-06-18T03:25:30.518530" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-18T03:25:30.519354" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-06-18T03:25:30.519272" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-06-18T03:25:30.519234" elapsed="0.000261"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-18T03:25:30.519597" elapsed="0.000034"/>
</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-18T03:25:30.525286" elapsed="0.000819"/>
</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-18T03:25:30.526279" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:25:30.526645" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-18T03:25:30.520295" elapsed="0.006509"/>
</kw>
<msg time="2026-06-18T03:25:30.526933" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.35: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-18T03:15:23.608803" elapsed="606.918156"/>
</kw>
<status status="PASS" start="2026-06-18T03:15:23.608446" elapsed="606.918562"/>
</branch>
<status status="PASS" start="2026-06-18T03:15:23.608122" elapsed="606.918910"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.527468" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.35: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.35. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:16:29.321 16  switches: flows:  439331 453061 453981 455792 455566 451178 450534 453012 448681 434294 441143 435436 440456 450423 440614 438534  total = 119.033933 per ms 
03:17:29.422 16  switches: flows:  496823 493561 490776 488328 494895 500383 492231 490233 491661 493102 494322 489525 494357 497303 494047 496329  total = 131.410512 per ms 
03:18:29.523 16  switches: flows:  526349 539466 530809 528370 525984 532847 529952 529772 529305 529491 530161 529335 529675 532957 531500 528811  total = 141.175222 per ms 
03:19:29.840 16  switches: flows:  463764 427085 451258 449155 444569 469265 460966 436912 468267 467862 466662 440377 467485 461407 445331 461767  total = 120.732766 per ms 
03:20:29.942 16  switches: flows:  495859 495943 484240 485599 487661 488686 485585 499377 486420 484623 495183 499339 493462 493785 497688 481826  total = 130.702016 per ms 
03:21:30.086 16  switches: flows:  491166 501572 497772 496057 494730 497111 500899 494872 491852 501136 493752 500495 492460 500115 504459 503489  total = 132.380229 per ms 
03:22:30.187 16  switches: flows:  502534 497667 502895 501036 504111 494301 496477 498048 496612 497555 487769 495037 502829 492667 499177 492623  total = 132.465495 per ms 
03:23:30.289 16  switches: flows:  547465 538550 537442 539820 538737 550010 544119 538880 537419 536317 537572 542670 541235 537937 535726 533781  total = 143.718165 per ms 
03:24:30.391 16  switches: flows:  496916 497290 495224 499768 496815 499321 484983 502561 488023 488018 507026 484969 494843 497151 501013 496463  total = 131.951182 per ms 
03:25:30.492 16  switches: flows:  578919 579100 586039 579380 586274 584440 577331 578527 573923 580790 575885 579996 580529 573346 583559 580455  total = 154.381862 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 120732.77/154381.86/135435.27/46053.47 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:25:30.527174" elapsed="0.000383"/>
</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-18T03:25:30.527708" elapsed="0.000368"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-18T03:25:30.528458" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-18T03:25:30.528562" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 120732.77/154381.86/135435.27/46053.47 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-18T03:25:30.528237" elapsed="0.000351"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:25:30.528999" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 120732.77/154381.86/135435.27/46053.47 | 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-18T03:25:30.528745" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.531443" 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-18T03:25:30.529175" elapsed="0.002325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.533993" level="INFO">120732.77/154381.86/135435.27/46053.47</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:25:30.531664" elapsed="0.002386"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:25:30.536431" 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-18T03:25:30.534202" elapsed="0.002257"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:25:30.538942" level="INFO">@{result_value_list} = [ 120732.77 | 154381.86 | 135435.27 | 46053.47 ]</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-18T03:25:30.536666" elapsed="0.002303"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.539435" level="INFO">Length is 4.</msg>
<msg time="2026-06-18T03:25:30.539523" 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-18T03:25:30.539125" elapsed="0.000437"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.544599" level="INFO">min :: 120732.77</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-18T03:25:30.539954" elapsed="0.004704"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-18T03:25:30.539823" elapsed="0.004871"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.549392" level="INFO">max :: 154381.86</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-18T03:25:30.544938" elapsed="0.004517"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-18T03:25:30.544799" elapsed="0.004693"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.554218" level="INFO">avg :: 135435.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-18T03:25:30.549731" elapsed="0.004544"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-18T03:25:30.549601" elapsed="0.004710"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.559199" level="INFO">stdev :: 46053.47</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-18T03:25:30.554777" elapsed="0.004493"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-18T03:25:30.554637" elapsed="0.004790"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-18T03:25:30.539630" elapsed="0.019832"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.563696" level="INFO">${min} = 120732.77</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-18T03:25:30.559662" elapsed="0.004062"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.567787" level="INFO">${max} = 154381.86</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-18T03:25:30.563882" elapsed="0.003936"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.571871" level="INFO">${average} = 135435.27</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-18T03:25:30.567986" elapsed="0.003912"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.575853" level="INFO">${stdev} = 46053.47</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-18T03:25:30.572052" elapsed="0.003828"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.576395" level="INFO">${date} = 2026-06-18 03:25:30</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-18T03:25:30.576041" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.577009" level="INFO">CBench Result: 2026-06-18 03:25:30,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,120732.77,154381.86,135435.27,46053.47</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-18T03:25:30.576590" elapsed="0.000475"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T03:25:30.578235" 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-18T03:25:30.577784" elapsed="0.000520"/>
</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-18T03:25:30.578458" elapsed="0.000507"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-18T03:25:30.577218" elapsed="0.001819"/>
</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-18T03:15:23.607058" elapsed="606.972049"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.579683" 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-18T03:25:30.579276" elapsed="0.000470"/>
</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-18T03:25:30.580271" elapsed="0.000305"/>
</kw>
<status status="PASS" start="2026-06-18T03:25:30.579962" elapsed="0.000689"/>
</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-18T03:15:23.605707" elapsed="606.974985"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.581935" 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-18T03:25:30.581494" elapsed="0.000497"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.583558" 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-18T03:25:30.583209" elapsed="0.000393"/>
</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-18T03:25:30.583936" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:25:30.583718" elapsed="0.000276"/>
</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-18T03:25:30.587198" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:25:30.586933" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-06-18T03:25:30.586913" elapsed="0.000606"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-18T03:25:30.587866" 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-18T03:25:30.588011" 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-18T03:25:30.587676" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.588697" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.35 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.22" 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-18T03:25:30.588219" elapsed="0.000538"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T03:25:30.589326" 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-18T03:25:30.588899" elapsed="0.000455"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T03:25:30.590328" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T03:25:30.590429" 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-18T03:25:30.590000" elapsed="0.000454"/>
</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-18T03:25:30.590629" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T03:25:30.591902" level="INFO">Logging into '10.30.171.22:22' as 'jenkins'.</msg>
<msg time="2026-06-18T03:25:31.206325" 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 Thu Jun 18 03:25:30 UTC 2026

  System load:  0.34               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.22
  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: Thu Jun 18 03:15:24 2026 from 10.30.170.29
[?2004h[jenkins@releng-63164-312-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-18T03:25:30.591524" elapsed="0.615042"/>
</kw>
<msg time="2026-06-18T03:25:31.206654" 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-18T03:25:30.591156" elapsed="0.615582"/>
</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-18T03:25:30.589576" elapsed="0.617285"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-18T03:25:31.207414" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.35 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-18T03:35:37.259318" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-18T03:35:37.259930" level="INFO">${stdout} = </msg>
<msg time="2026-06-18T03:35:37.260038" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</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-18T03:25:31.207089" elapsed="606.053609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:35:37.261191" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.263116" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35: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.35. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:26:36.329 16  switches: flows:  106662 104385 106353 104112 106106 106256 106423 103317 104067 103612 102351 100360 105179 102703 102060 101356  total = 27.755033 per ms 
03:27:36.430 16  switches: flows:  119889 117191 117991 117700 115184 118836 118370 115883 116773 117487 114306 114453 117023 114309 113615 113844  total = 30.995793 per ms 
03:28:36.530 16  switches: flows:  118283 115714 117780 117518 116024 118157 118490 116389 113557 115942 113570 113811 116386 114313 112856 112745  total = 30.807458 per ms 
03:29:36.630 16  switches: flows:  118477 116333 118301 116668 115926 119109 117578 117676 115285 116481 113338 112798 117895 114422 113386 112735  total = 30.888538 per ms 
03:30:36.731 16  switches: flows:  118122 116673 119126 116015 117265 119415 117913 116824 113628 115806 113269 112544 116946 113245 114832 111849  total = 30.839682 per ms 
03:31:36.831 16  switches: flows:  120068 119409 120197 118343 115681 120923 119601 118237 115623 115933 116019 114849 116474 113969 114126 114354  total = 31.178037 per ms 
03:32:36.931 16  switches: flows:  120761 120377 121084 120327 118687 122529 121353 119775 116614 117035 116636 116069 120228 117501 117047 115571  total = 31.640404 per ms 
03:33:37.031 16  switches: flows:  119126 118996 119344 118183 117257 119699 120193 117502 115889 115180 115257 113446 117628 114592 114646 112908  total = 31.112152 per ms 
03:34:37.132 16  switches: flows:  118316 115918 117648 115736 115234 118903 117447 114806 113543 114507 112794 111025 116042 113209 111897 110694  total = 30.577408 per ms 
03:35:37.233 16  switches: flows:  118949 116334 116808 116037 114295 118392 117382 114999 114693 113690 112544 112450 114957 113053 112620 111683  total = 30.596830 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30577.41/31640.40/30959.59/10324.47 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:35:37.262302" elapsed="0.001136"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-18T03:35:37.263941" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-06-18T03:35:37.263647" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-06-18T03:35:37.263597" elapsed="0.000546"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-18T03:35:37.264416" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-06-18T03:35:37.264278" elapsed="0.000294"/>
</branch>
<status status="NOT RUN" start="2026-06-18T03:35:37.264237" elapsed="0.000397"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-18T03:35:37.264711" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<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-18T03:35:37.269036" elapsed="0.000344"/>
</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-18T03:35:37.269530" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T03:35:37.269858" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-18T03:35:37.265583" elapsed="0.004435"/>
</kw>
<msg time="2026-06-18T03:35:37.270149" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</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-18T03:25:30.584328" elapsed="606.685848"/>
</kw>
<status status="PASS" start="2026-06-18T03:25:30.584019" elapsed="606.686208"/>
</branch>
<status status="PASS" start="2026-06-18T03:25:30.583697" elapsed="606.686555"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.270713" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.35: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.35. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:26:36.329 16  switches: flows:  106662 104385 106353 104112 106106 106256 106423 103317 104067 103612 102351 100360 105179 102703 102060 101356  total = 27.755033 per ms 
03:27:36.430 16  switches: flows:  119889 117191 117991 117700 115184 118836 118370 115883 116773 117487 114306 114453 117023 114309 113615 113844  total = 30.995793 per ms 
03:28:36.530 16  switches: flows:  118283 115714 117780 117518 116024 118157 118490 116389 113557 115942 113570 113811 116386 114313 112856 112745  total = 30.807458 per ms 
03:29:36.630 16  switches: flows:  118477 116333 118301 116668 115926 119109 117578 117676 115285 116481 113338 112798 117895 114422 113386 112735  total = 30.888538 per ms 
03:30:36.731 16  switches: flows:  118122 116673 119126 116015 117265 119415 117913 116824 113628 115806 113269 112544 116946 113245 114832 111849  total = 30.839682 per ms 
03:31:36.831 16  switches: flows:  120068 119409 120197 118343 115681 120923 119601 118237 115623 115933 116019 114849 116474 113969 114126 114354  total = 31.178037 per ms 
03:32:36.931 16  switches: flows:  120761 120377 121084 120327 118687 122529 121353 119775 116614 117035 116636 116069 120228 117501 117047 115571  total = 31.640404 per ms 
03:33:37.031 16  switches: flows:  119126 118996 119344 118183 117257 119699 120193 117502 115889 115180 115257 113446 117628 114592 114646 112908  total = 31.112152 per ms 
03:34:37.132 16  switches: flows:  118316 115918 117648 115736 115234 118903 117447 114806 113543 114507 112794 111025 116042 113209 111897 110694  total = 30.577408 per ms 
03:35:37.233 16  switches: flows:  118949 116334 116808 116037 114295 118392 117382 114999 114693 113690 112544 112450 114957 113053 112620 111683  total = 30.596830 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30577.41/31640.40/30959.59/10324.47 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:35:37.270399" elapsed="0.000389"/>
</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-18T03:35:37.270957" elapsed="0.000383"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-18T03:35:37.271751" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-18T03:35:37.271845" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30577.41/31640.40/30959.59/10324.47 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-18T03:35:37.271505" elapsed="0.000365"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:35:37.272283" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30577.41/31640.40/30959.59/10324.47 | 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-18T03:35:37.272027" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.274703" 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-18T03:35:37.272458" elapsed="0.002301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.278007" level="INFO">30577.41/31640.40/30959.59/10324.47</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T03:35:37.274951" elapsed="0.003135"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:35:37.281394" 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-18T03:35:37.278298" elapsed="0.003134"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T03:35:37.284846" level="INFO">@{result_value_list} = [ 30577.41 | 31640.40 | 30959.59 | 10324.47 ]</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-18T03:35:37.281725" elapsed="0.003159"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.285552" level="INFO">Length is 4.</msg>
<msg time="2026-06-18T03:35:37.285680" 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-18T03:35:37.285101" elapsed="0.000611"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.290864" level="INFO">min :: 30577.41</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-18T03:35:37.286228" elapsed="0.004708"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-18T03:35:37.286049" elapsed="0.004923"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.295477" level="INFO">max :: 31640.40</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-18T03:35:37.291186" elapsed="0.004361"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-18T03:35:37.291059" elapsed="0.004525"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.300340" level="INFO">avg :: 30959.59</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-18T03:35:37.295795" elapsed="0.004603"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-18T03:35:37.295669" elapsed="0.004764"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.305326" level="INFO">stdev :: 10324.47</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-18T03:35:37.300667" elapsed="0.004722"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-18T03:35:37.300519" elapsed="0.004905"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-18T03:35:37.285800" elapsed="0.019656"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.309374" level="INFO">${min} = 30577.41</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-18T03:35:37.305645" elapsed="0.003757"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.313317" level="INFO">${max} = 31640.40</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-18T03:35:37.309573" elapsed="0.003771"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.317240" level="INFO">${average} = 30959.59</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-18T03:35:37.313499" elapsed="0.003768"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.321254" level="INFO">${stdev} = 10324.47</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-18T03:35:37.317444" elapsed="0.003836"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.321807" level="INFO">${date} = 2026-06-18 03:35:37</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-18T03:35:37.321442" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.322389" level="INFO">CBench Result: 2026-06-18 03:35:37,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30577.41,31640.40,30959.59,10324.47</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-18T03:35:37.321983" elapsed="0.000462"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T03:35:37.323653" 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-18T03:35:37.323157" elapsed="0.000565"/>
</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-18T03:35:37.323872" elapsed="0.000463"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-18T03:35:37.322617" elapsed="0.001782"/>
</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-18T03:25:30.582316" elapsed="606.742142"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.324934" 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-18T03:35:37.324622" elapsed="0.000369"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-18T03:35:37.326191" 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-18T03:35:37.325718" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-18T03:35:37.326442" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-06-18T03:35:37.326295" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-06-18T03:35:37.326275" elapsed="0.000290"/>
</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-18T03:35:37.326710" 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-18T03:35:37.326868" elapsed="0.000021"/>
</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-18T03:35:37.327097" elapsed="0.000033"/>
</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-18T03:35:37.327323" elapsed="0.000022"/>
</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-18T03:35:37.327476" elapsed="0.000021"/>
</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-18T03:35:37.327676" elapsed="0.000023"/>
</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-18T03:35:37.327836" 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-18T03:35:37.328062" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-18T03:35:37.327924" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-06-18T03:35:37.327907" elapsed="0.000232"/>
</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-18T03:35:37.325371" elapsed="0.002820"/>
</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-18T03:25:30.580987" elapsed="606.747252"/>
</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-18T03:05:14.174800" elapsed="1823.154073"/>
</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>
