<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-08-01T03:13:19.867524" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-08-01T03:13:20.412782" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-08-01T03:13:20.412644" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-08-01T03:13:20.412615" elapsed="0.000266"/>
</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-08-01T03:13:20.413025" elapsed="0.000511"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-01T03:13:20.414008" level="INFO">Logging into '10.30.170.182:8101' as 'karaf'.</msg>
<msg time="2026-08-01T03:13:21.014962" 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-08-01T03:13:20.413709" elapsed="0.601410"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-01T03:13:21.063568" 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-08-01T03:13:21.015373" elapsed="0.048262"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-01T03:13:21.065271" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-01T03:13:21.065389" 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-08-01T03:13:21.063798" elapsed="0.001622"/>
</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-08-01T03:13:21.065576" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:13:21.065924" elapsed="0.000190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:13:21.066620" 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-08-01T03:13:21.066262" elapsed="0.000415"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T03:13:21.066727" elapsed="0.000054"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.182
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-01T03:13:20.412253" elapsed="0.654648"/>
</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-08-01T03:13:20.408615" elapsed="0.658349"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T03:13:21.067546" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-08-01T03:13:21.067133" elapsed="0.000471"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T03:13:21.068001" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-08-01T03:13:21.067756" elapsed="0.000306"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-01T03:13:21.068623" 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-08-01T03:13:21.068214" elapsed="0.000438"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T03:13:21.069186" 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-08-01T03:13:21.068820" elapsed="0.000411"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-01T03:13:21.069771" 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-08-01T03:13:21.069398" elapsed="0.000400"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T03:13:21.070270" 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-08-01T03:13:21.069960" elapsed="0.000369"/>
</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-08-01T03:13:21.070619" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:13:21.070409" elapsed="0.000265"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T03:13:21.075002" 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-08-01T03:13:21.074609" elapsed="0.000420"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T03:13:21.076027" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T03:13:21.076110" 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-08-01T03:13:21.075611" elapsed="0.000524"/>
</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-08-01T03:13:21.076294" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T03:13:21.077809" level="INFO">Logging into '10.30.170.180:22' as 'jenkins'.</msg>
<msg time="2026-08-01T03:13:21.772326" 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 Sat Aug  1 03:13:21 UTC 2026

  System load:  0.09               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.180
  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-00446-43-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-08-01T03:13:21.077334" elapsed="0.695163"/>
</kw>
<msg time="2026-08-01T03:13:21.772597" 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-08-01T03:13:21.076964" elapsed="0.695732"/>
</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-08-01T03:13:21.075248" elapsed="0.697576"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-01T03:13:21.780803" 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-08-01T03:13:21.773039" elapsed="0.009281"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:13:21.782626" elapsed="0.000561"/>
</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-08-01T03:13:21.074070" elapsed="0.709236"/>
</kw>
<status status="PASS" start="2026-08-01T03:13:21.070757" elapsed="0.712609"/>
</branch>
<status status="PASS" start="2026-08-01T03:13:21.070386" elapsed="0.713025"/>
</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-08-01T03:13:21.783655" elapsed="0.000726"/>
</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-08-01T03:13:21.790907" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-08-01T03:13:21.790733" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-08-01T03:13:21.790700" elapsed="0.000321"/>
</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-08-01T03:13:21.794894" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-08-01T03:13:21.794780" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-08-01T03:13:21.794760" elapsed="0.000209"/>
</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-08-01T03:13:21.795104" elapsed="0.000485"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-01T03:13:21.796003" level="INFO">Logging into '10.30.170.182:8101' as 'karaf'.</msg>
<msg time="2026-08-01T03:13:21.983341" 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-08-01T03:13:21.795737" elapsed="0.187759"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.086446" 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-08-01T03:13:21.983742" elapsed="0.102831"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.094503" 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-08-01T03:13:22.094720" 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-08-01T03:13:22.086817" elapsed="0.007936"/>
</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-08-01T03:13:22.094900" elapsed="0.000255"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:13:22.095323" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:13:22.095994" 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-08-01T03:13:22.095691" elapsed="0.000359"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T03:13:22.096100" elapsed="0.000051"/>
</return>
<msg time="2026-08-01T03:13:22.096321" 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.170.182
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-01T03:13:21.794423" elapsed="0.301932"/>
</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-08-01T03:13:22.096502" elapsed="0.000490"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T03:13:22.097044" elapsed="0.000031"/>
</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-08-01T03:13:21.790292" elapsed="0.306883"/>
</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-08-01T03:13:22.100931" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-08-01T03:13:22.100796" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-08-01T03:13:22.100773" elapsed="0.000232"/>
</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-08-01T03:13:22.101136" elapsed="0.000453"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.102033" level="INFO">Logging into '10.30.170.182:8101' as 'karaf'.</msg>
<msg time="2026-08-01T03:13:22.324388" 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-08-01T03:13:22.101737" elapsed="0.222793"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.350932" 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-08-01T03:13:22.324762" elapsed="0.026236"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.352787" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-01T03:13:22.352888" 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-08-01T03:13:22.351157" elapsed="0.001761"/>
</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-08-01T03:13:22.353059" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:13:22.353409" elapsed="0.000186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:13:22.354026" 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-08-01T03:13:22.353732" elapsed="0.000344"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T03:13:22.354127" elapsed="0.000048"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.182
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-01T03:13:22.100471" elapsed="0.253839"/>
</kw>
<status status="PASS" start="2026-08-01T03:13:20.406831" elapsed="1.947545"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:13:22.356522" 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-08-01T03:13:22.355204" elapsed="0.001384"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T03:13:22.358022" 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-08-01T03:13:22.357676" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-01T03:13:22.358403" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:13:22.358145" elapsed="0.000318"/>
</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-08-01T03:13:22.361399" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:13:22.361134" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-08-01T03:13:22.361114" elapsed="0.000368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.361823" 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-08-01T03:13:22.361947" 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-08-01T03:13:22.361617" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:13:22.362551" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.180" 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-08-01T03:13:22.362110" elapsed="0.000502"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.363216" 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-08-01T03:13:22.362752" elapsed="0.000491"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T03:13:22.364177" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T03:13:22.364269" 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-08-01T03:13:22.363856" elapsed="0.000481"/>
</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-08-01T03:13:22.364485" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.365700" level="INFO">Logging into '10.30.170.180:22' as 'jenkins'.</msg>
<msg time="2026-08-01T03:13:22.698528" 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 Sat Aug  1 03:13:21 UTC 2026

  System load:  0.09               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.180
  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: Sat Aug  1 03:13:21 2026 from 10.30.170.143
[?2004h[jenkins@releng-00446-43-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-08-01T03:13:22.365345" elapsed="0.333370"/>
</kw>
<msg time="2026-08-01T03:13:22.698800" 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-08-01T03:13:22.364986" elapsed="0.333899"/>
</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-08-01T03:13:22.363461" elapsed="0.335544"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-01T03:13:22.699545" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-01T03:23:29.192545" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-01T03:23:29.213984" level="INFO">${stdout} = </msg>
<msg time="2026-08-01T03:23:29.214139" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-01T03:13:22.699235" elapsed="606.515398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:23:29.220722" elapsed="0.003636"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.229093" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182: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.170.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:14:27.880 16  switches: flows:  104034 103180 102840 102295 102047 101830 100577 98925 100488 98769 98348 99398 100857 98318 97464 97289  total = 26.777650 per ms 
03:15:27.981 16  switches: flows:  111021 109669 110586 108545 106670 108175 108102 107658 104531 105166 104376 104609 105723 104082 104465 105853  total = 28.439712 per ms 
03:16:28.082 16  switches: flows:  113094 112892 111605 111018 109389 110629 110283 107239 106908 107731 106432 106101 108534 104304 105974 106970  total = 28.936752 per ms 
03:17:28.184 16  switches: flows:  114788 113452 113957 113571 111631 112884 111830 110691 109790 111316 109379 107932 110313 108520 108864 109568  total = 29.591456 per ms 
03:18:28.285 16  switches: flows:  112244 110955 110982 110848 110021 110330 112009 109838 108846 110437 109700 107423 109426 106246 107584 108214  total = 29.202787 per ms 
03:19:28.725 16  switches: flows:  102891 102325 99943 98544 98491 100233 98931 98159 97428 97483 99051 98332 96724 100947 95714 95760  total = 26.157952 per ms 
03:20:28.826 16  switches: flows:  108627 108414 108361 106930 106374 106224 106281 105470 103680 104542 106489 103100 102861 103272 103143 103418  total = 28.072931 per ms 
03:21:28.926 16  switches: flows:  112482 110459 111478 112252 111569 109612 109023 111590 106180 108586 108812 107085 106990 107787 108691 107202  total = 29.114727 per ms 
03:22:29.027 16  switches: flows:  90848 89230 89941 90168 89873 88342 88154 88913 87044 87896 87637 85825 86842 86621 86944 85131  total = 23.451013 per ms 
03:23:29.127 16  switches: flows:  102826 103154 103464 104191 104317 100647 102213 101859 100995 100150 101305 99413 101105 101034 99176 100401  total = 27.059006 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23451.01/29591.46/27780.70/9443.43 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:23:29.224673" elapsed="0.009832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-01T03:23:29.234971" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-08-01T03:23:29.234720" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-08-01T03:23:29.234672" elapsed="0.000428"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-01T03:23:29.235675" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-08-01T03:23:29.235636" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-08-01T03:23:29.235616" elapsed="0.000124"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-01T03:23:29.235774" elapsed="0.000013"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<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-08-01T03:23:29.240533" elapsed="0.000441"/>
</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-08-01T03:23:29.241143" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:23:29.241513" elapsed="0.000109"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-01T03:23:29.237548" elapsed="0.004129"/>
</kw>
<msg time="2026-08-01T03:23:29.241821" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-01T03:13:22.358807" elapsed="606.883042"/>
</kw>
<status status="PASS" start="2026-08-01T03:13:22.358491" elapsed="606.883409"/>
</branch>
<status status="PASS" start="2026-08-01T03:13:22.358122" elapsed="606.883807"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.242504" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182: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.170.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:14:27.880 16  switches: flows:  104034 103180 102840 102295 102047 101830 100577 98925 100488 98769 98348 99398 100857 98318 97464 97289  total = 26.777650 per ms 
03:15:27.981 16  switches: flows:  111021 109669 110586 108545 106670 108175 108102 107658 104531 105166 104376 104609 105723 104082 104465 105853  total = 28.439712 per ms 
03:16:28.082 16  switches: flows:  113094 112892 111605 111018 109389 110629 110283 107239 106908 107731 106432 106101 108534 104304 105974 106970  total = 28.936752 per ms 
03:17:28.184 16  switches: flows:  114788 113452 113957 113571 111631 112884 111830 110691 109790 111316 109379 107932 110313 108520 108864 109568  total = 29.591456 per ms 
03:18:28.285 16  switches: flows:  112244 110955 110982 110848 110021 110330 112009 109838 108846 110437 109700 107423 109426 106246 107584 108214  total = 29.202787 per ms 
03:19:28.725 16  switches: flows:  102891 102325 99943 98544 98491 100233 98931 98159 97428 97483 99051 98332 96724 100947 95714 95760  total = 26.157952 per ms 
03:20:28.826 16  switches: flows:  108627 108414 108361 106930 106374 106224 106281 105470 103680 104542 106489 103100 102861 103272 103143 103418  total = 28.072931 per ms 
03:21:28.926 16  switches: flows:  112482 110459 111478 112252 111569 109612 109023 111590 106180 108586 108812 107085 106990 107787 108691 107202  total = 29.114727 per ms 
03:22:29.027 16  switches: flows:  90848 89230 89941 90168 89873 88342 88154 88913 87044 87896 87637 85825 86842 86621 86944 85131  total = 23.451013 per ms 
03:23:29.127 16  switches: flows:  102826 103154 103464 104191 104317 100647 102213 101859 100995 100150 101305 99413 101105 101034 99176 100401  total = 27.059006 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23451.01/29591.46/27780.70/9443.43 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:23:29.242111" elapsed="0.000471"/>
</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-08-01T03:23:29.242735" elapsed="0.001486"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-01T03:23:29.244649" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-01T03:23:29.244744" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 23451.01/29591.46/27780.70/9443.43 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-08-01T03:23:29.244407" elapsed="0.000363"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:23:29.245193" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 23451.01/29591.46/27780.70/9443.43 | 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-08-01T03:23:29.244929" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.253488" 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-08-01T03:23:29.245384" elapsed="0.008200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.256548" level="INFO">23451.01/29591.46/27780.70/9443.43</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:23:29.253906" elapsed="0.002719"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:23:29.259126" 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-08-01T03:23:29.256843" elapsed="0.002314"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:23:29.261712" level="INFO">@{result_value_list} = [ 23451.01 | 29591.46 | 27780.70 | 9443.43 ]</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-08-01T03:23:29.259420" elapsed="0.002334"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.262535" level="INFO">Length is 4.</msg>
<msg time="2026-08-01T03:23:29.262671" 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-08-01T03:23:29.261997" elapsed="0.000713"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.271082" level="INFO">min :: 23451.01</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:23:29.264349" elapsed="0.006841"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-01T03:23:29.264122" elapsed="0.007132"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.276431" level="INFO">max :: 29591.46</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:23:29.271637" elapsed="0.004856"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-01T03:23:29.271427" elapsed="0.005102"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.281143" level="INFO">avg :: 27780.70</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-08-01T03:23:29.276755" elapsed="0.004446"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-01T03:23:29.276622" elapsed="0.004615"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.285813" level="INFO">stdev :: 9443.43</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-08-01T03:23:29.281483" elapsed="0.004391"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-01T03:23:29.281354" elapsed="0.004557"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-01T03:23:29.263322" elapsed="0.022625"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.289876" level="INFO">${min} = 23451.01</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-08-01T03:23:29.286114" elapsed="0.003791"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.294037" level="INFO">${max} = 29591.46</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-08-01T03:23:29.290064" elapsed="0.004002"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.297999" level="INFO">${average} = 27780.70</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-08-01T03:23:29.294224" elapsed="0.003803"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.301918" level="INFO">${stdev} = 9443.43</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-08-01T03:23:29.298185" elapsed="0.003760"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.302493" level="INFO">${date} = 2026-08-01 03:23:29</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-01T03:23:29.302108" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.303082" level="INFO">CBench Result: 2026-08-01 03:23:29,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,23451.01,29591.46,27780.70,9443.43</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-08-01T03:23:29.302669" elapsed="0.000470"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T03:23:29.305246" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-08-01T03:23:29.303800" elapsed="0.001566"/>
</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-08-01T03:23:29.305587" elapsed="0.000677"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-01T03:23:29.303311" elapsed="0.003070"/>
</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-08-01T03:13:22.357024" elapsed="606.949445"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.307127" 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-08-01T03:23:29.306680" elapsed="0.000527"/>
</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-08-01T03:23:29.308001" elapsed="0.000408"/>
</kw>
<status status="PASS" start="2026-08-01T03:23:29.307535" elapsed="0.000973"/>
</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-08-01T03:13:22.354515" elapsed="606.954047"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.313715" 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-08-01T03:23:29.313126" elapsed="0.000665"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.315155" 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-08-01T03:23:29.314811" elapsed="0.000387"/>
</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-08-01T03:23:29.316457" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:23:29.316163" elapsed="0.000355"/>
</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-08-01T03:23:29.321717" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:23:29.321358" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-08-01T03:23:29.321301" elapsed="0.000516"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-01T03:23:29.322267" 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-08-01T03:23:29.322421" 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-08-01T03:23:29.321972" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.323054" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.182 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.180" 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-08-01T03:23:29.322587" elapsed="0.000525"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T03:23:29.323680" 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-08-01T03:23:29.323253" elapsed="0.000454"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T03:23:29.324734" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T03:23:29.324824" 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-08-01T03:23:29.324406" elapsed="0.000444"/>
</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-08-01T03:23:29.324996" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T03:23:29.326214" level="INFO">Logging into '10.30.170.180:22' as 'jenkins'.</msg>
<msg time="2026-08-01T03:23:29.893390" 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 Sat Aug  1 03:23:29 UTC 2026

  System load:  1.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.180
  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: Sat Aug  1 03:13:22 2026 from 10.30.170.143
[?2004h[jenkins@releng-00446-43-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-08-01T03:23:29.325859" elapsed="0.567819"/>
</kw>
<msg time="2026-08-01T03:23:29.893796" 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-08-01T03:23:29.325510" elapsed="0.568411"/>
</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-08-01T03:23:29.323984" elapsed="0.570094"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-01T03:23:29.894772" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.182 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-01T03:33:35.955460" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-01T03:33:35.956141" level="INFO">${stdout} = </msg>
<msg time="2026-08-01T03:33:35.956258" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.182: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-08-01T03:23:29.894396" elapsed="606.061957"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:33:35.957422" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.959575" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.182: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.170.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:24:35.021 16  switches: flows:  422980 430819 427435 427339 425312 398419 428586 425556 420528 422789 405117 419943 412137 425962 412688 377999  total = 111.393483 per ms 
03:25:35.122 16  switches: flows:  432832 432370 435846 432388 436740 437278 437578 441730 430886 429843 426092 433657 421282 434451 439498 432621  total = 115.391010 per ms 
03:26:35.225 16  switches: flows:  488122 525384 506958 503332 456229 466716 455436 495787 526947 498486 513811 565631 552775 523700 579893 568254  total = 136.894201 per ms 
03:27:35.337 16  switches: flows:  492991 495066 498128 501976 511311 510744 494449 507758 506871 506805 497632 503764 498280 501592 509358 504499  total = 133.771255 per ms 
03:28:35.441 16  switches: flows:  532059 532139 536262 526309 530647 534366 534246 534436 530032 536232 511450 520950 523432 520092 517532 527955  total = 140.560833 per ms 
03:29:35.542 16  switches: flows:  503834 502347 500471 497178 502084 515499 509118 484206 488993 492991 491021 511053 484318 494177 500804 501664  total = 132.772888 per ms 
03:30:35.644 16  switches: flows:  526526 532895 533305 525854 543350 544236 545235 536446 520719 535070 530231 541594 523804 529475 526485 537814  total = 141.978294 per ms 
03:31:35.745 16  switches: flows:  560616 563557 569865 577376 577212 575694 565514 583019 571374 572831 566267 572927 564654 561416 569665 568866  total = 151.758612 per ms 
03:32:35.847 16  switches: flows:  495329 498569 499933 406614 455800 488029 455877 499568 409622 493408 490401 496672 489055 494087 491813 492943  total = 127.412662 per ms 
03:33:35.950 16  switches: flows:  534842 526186 524823 533582 538730 533426 524306 538287 531847 535228 517270 528043 526276 538628 535037 520894  total = 141.218345 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 115391.01/151758.61/135750.90/46277.55 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:33:35.958681" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-01T03:33:35.960364" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-08-01T03:33:35.960097" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-08-01T03:33:35.960043" elapsed="0.000460"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-01T03:33:35.960645" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-08-01T03:33:35.960594" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-08-01T03:33:35.960571" elapsed="0.000160"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-01T03:33:35.960774" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<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-08-01T03:33:35.964329" elapsed="0.000481"/>
</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-08-01T03:33:35.965020" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:33:35.965458" elapsed="0.000146"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-01T03:33:35.961228" elapsed="0.004451"/>
</kw>
<msg time="2026-08-01T03:33:35.965858" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.182: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-08-01T03:23:29.316874" elapsed="606.649021"/>
</kw>
<status status="PASS" start="2026-08-01T03:23:29.316546" elapsed="606.649417"/>
</branch>
<status status="PASS" start="2026-08-01T03:23:29.316115" elapsed="606.649880"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.966634" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.182: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.170.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:24:35.021 16  switches: flows:  422980 430819 427435 427339 425312 398419 428586 425556 420528 422789 405117 419943 412137 425962 412688 377999  total = 111.393483 per ms 
03:25:35.122 16  switches: flows:  432832 432370 435846 432388 436740 437278 437578 441730 430886 429843 426092 433657 421282 434451 439498 432621  total = 115.391010 per ms 
03:26:35.225 16  switches: flows:  488122 525384 506958 503332 456229 466716 455436 495787 526947 498486 513811 565631 552775 523700 579893 568254  total = 136.894201 per ms 
03:27:35.337 16  switches: flows:  492991 495066 498128 501976 511311 510744 494449 507758 506871 506805 497632 503764 498280 501592 509358 504499  total = 133.771255 per ms 
03:28:35.441 16  switches: flows:  532059 532139 536262 526309 530647 534366 534246 534436 530032 536232 511450 520950 523432 520092 517532 527955  total = 140.560833 per ms 
03:29:35.542 16  switches: flows:  503834 502347 500471 497178 502084 515499 509118 484206 488993 492991 491021 511053 484318 494177 500804 501664  total = 132.772888 per ms 
03:30:35.644 16  switches: flows:  526526 532895 533305 525854 543350 544236 545235 536446 520719 535070 530231 541594 523804 529475 526485 537814  total = 141.978294 per ms 
03:31:35.745 16  switches: flows:  560616 563557 569865 577376 577212 575694 565514 583019 571374 572831 566267 572927 564654 561416 569665 568866  total = 151.758612 per ms 
03:32:35.847 16  switches: flows:  495329 498569 499933 406614 455800 488029 455877 499568 409622 493408 490401 496672 489055 494087 491813 492943  total = 127.412662 per ms 
03:33:35.950 16  switches: flows:  534842 526186 524823 533582 538730 533426 524306 538287 531847 535228 517270 528043 526276 538628 535037 520894  total = 141.218345 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 115391.01/151758.61/135750.90/46277.55 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:33:35.966186" elapsed="0.000551"/>
</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-08-01T03:33:35.966957" elapsed="0.000571"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-01T03:33:35.968055" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-01T03:33:35.968180" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 115391.01/151758.61/135750.90/46277.55 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-08-01T03:33:35.967752" elapsed="0.000462"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:33:35.968810" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 115391.01/151758.61/135750.90/46277.55 | 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-08-01T03:33:35.968452" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.972339" 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-08-01T03:33:35.969048" elapsed="0.003356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.974780" level="INFO">115391.01/151758.61/135750.90/46277.55</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:33:35.972559" elapsed="0.002280"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:33:35.977256" 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-08-01T03:33:35.974989" elapsed="0.002311"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:33:35.979794" level="INFO">@{result_value_list} = [ 115391.01 | 151758.61 | 135750.90 | 46277.55 ]</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-08-01T03:33:35.977504" elapsed="0.002317"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.980301" level="INFO">Length is 4.</msg>
<msg time="2026-08-01T03:33:35.980393" 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-08-01T03:33:35.979976" elapsed="0.000441"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.985323" level="INFO">min :: 115391.01</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:33:35.980809" elapsed="0.004573"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-01T03:33:35.980681" elapsed="0.004737"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.989942" level="INFO">max :: 151758.61</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-08-01T03:33:35.985639" elapsed="0.004360"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-01T03:33:35.985510" elapsed="0.004524"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.994533" level="INFO">avg :: 135750.90</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-08-01T03:33:35.990252" elapsed="0.004338"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-01T03:33:35.990122" elapsed="0.004504"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:35.999233" level="INFO">stdev :: 46277.55</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-08-01T03:33:35.994844" elapsed="0.004469"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-01T03:33:35.994714" elapsed="0.004640"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-01T03:33:35.980491" elapsed="0.018902"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.003628" level="INFO">${min} = 115391.01</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-08-01T03:33:35.999804" elapsed="0.003851"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.007530" level="INFO">${max} = 151758.61</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-08-01T03:33:36.003810" elapsed="0.003747"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.011481" level="INFO">${average} = 135750.90</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-08-01T03:33:36.007709" elapsed="0.003799"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.015429" level="INFO">${stdev} = 46277.55</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-08-01T03:33:36.011660" elapsed="0.003796"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.015972" level="INFO">${date} = 2026-08-01 03:33:36</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-01T03:33:36.015615" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.016568" level="INFO">CBench Result: 2026-08-01 03:33:36,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,115391.01,151758.61,135750.90,46277.55</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-08-01T03:33:36.016144" elapsed="0.000480"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T03:33:36.017737" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-08-01T03:33:36.017291" elapsed="0.000513"/>
</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-08-01T03:33:36.017955" elapsed="0.000497"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-01T03:33:36.016788" elapsed="0.001733"/>
</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-08-01T03:23:29.314180" elapsed="606.704403"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.019057" 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-08-01T03:33:36.018735" elapsed="0.000406"/>
</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-08-01T03:33:36.019748" elapsed="0.000269"/>
</kw>
<status status="PASS" start="2026-08-01T03:33:36.019437" elapsed="0.000650"/>
</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-08-01T03:23:29.312164" elapsed="606.707963"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.021597" 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-08-01T03:33:36.021175" elapsed="0.000481"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.022978" 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-08-01T03:33:36.022627" elapsed="0.000394"/>
</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-08-01T03:33:36.023537" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:33:36.023258" elapsed="0.000342"/>
</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-08-01T03:33:36.026824" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:33:36.026566" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-08-01T03:33:36.026544" elapsed="0.000362"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-01T03:33:36.027330" 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-08-01T03:33:36.027465" 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-08-01T03:33:36.027046" elapsed="0.000447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.028098" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.180" 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-08-01T03:33:36.027630" elapsed="0.000528"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T03:33:36.028780" 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-08-01T03:33:36.028324" elapsed="0.000484"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T03:33:36.029786" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T03:33:36.029876" 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-08-01T03:33:36.029415" elapsed="0.000485"/>
</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-08-01T03:33:36.030044" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T03:33:36.031464" level="INFO">Logging into '10.30.170.180:22' as 'jenkins'.</msg>
<msg time="2026-08-01T03:33:36.654228" 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 Sat Aug  1 03:33:36 UTC 2026

  System load:  0.12               Processes:             107
  Usage of /:   19.4% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.180
  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: Sat Aug  1 03:23:29 2026 from 10.30.170.143
[?2004h[jenkins@releng-00446-43-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-08-01T03:33:36.030957" elapsed="0.623481"/>
</kw>
<msg time="2026-08-01T03:33:36.654525" 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-08-01T03:33:36.030605" elapsed="0.623999"/>
</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-08-01T03:33:36.029015" elapsed="0.625707"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-01T03:33:36.655305" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-01T03:43:42.713800" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-01T03:43:42.714559" level="INFO">${stdout} = </msg>
<msg time="2026-08-01T03:43:42.714679" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-01T03:33:36.654980" elapsed="606.059761"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:43:42.715259" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.717457" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182: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.170.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:34:41.800 16  switches: flows:  103712 101096 100590 102489 99857 100044 100861 101602 99552 99613 99793 99350 100252 97949 99133 99158  total = 26.750850 per ms 
03:35:41.900 16  switches: flows:  105978 105479 105852 106533 103213 104842 104557 106972 105324 104152 103484 102583 104382 101731 102366 103366  total = 27.800447 per ms 
03:36:42.001 16  switches: flows:  107548 108463 108599 108537 107346 108565 107211 109715 106785 104427 106472 104616 106777 104662 104683 105567  total = 28.451789 per ms 
03:37:42.102 16  switches: flows:  85616 86858 86082 85308 84382 85812 84236 86573 85527 84684 85561 85055 85903 82461 82951 84871  total = 22.660148 per ms 
03:38:42.202 16  switches: flows:  113721 112733 113126 112355 111744 112209 110713 109661 110284 109594 109309 111356 110528 107841 108869 110980  total = 29.534380 per ms 
03:39:42.302 16  switches: flows:  108218 106483 108194 106754 106932 107852 105960 107657 107067 106736 106254 107374 107403 104217 105801 106475  total = 28.442095 per ms 
03:40:42.403 16  switches: flows:  113963 111176 111630 113793 110533 110847 111502 112770 110725 109886 110025 109206 110198 108459 111644 109414  total = 29.546647 per ms 
03:41:42.504 16  switches: flows:  107375 105001 106127 107887 104899 106052 104447 107058 103903 103716 103153 103875 104618 103414 105163 103503  total = 27.956343 per ms 
03:42:42.604 16  switches: flows:  104366 106429 103615 104822 105187 104372 102298 104327 101932 101144 104731 104964 101702 100693 103620 101343  total = 27.546440 per ms 
03:43:42.704 16  switches: flows:  109633 108326 107387 107655 109248 107926 105760 109776 105556 103985 109603 107895 107982 103728 107306 104256  total = 28.552664 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 22660.15/29546.65/27832.33/9478.62 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:43:42.716530" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-01T03:43:42.718395" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-08-01T03:43:42.717997" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-08-01T03:43:42.717939" elapsed="0.000683"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-01T03:43:42.718866" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-08-01T03:43:42.718778" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-08-01T03:43:42.718738" elapsed="0.000280"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-01T03:43:42.719092" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T03:43:42.724861" elapsed="0.000509"/>
</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-08-01T03:43:42.725582" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T03:43:42.726021" elapsed="0.000186"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-01T03:43:42.719912" elapsed="0.006400"/>
</kw>
<msg time="2026-08-01T03:43:42.726500" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-01T03:33:36.023948" elapsed="606.702591"/>
</kw>
<status status="PASS" start="2026-08-01T03:33:36.023628" elapsed="606.702983"/>
</branch>
<status status="PASS" start="2026-08-01T03:33:36.023230" elapsed="606.703413"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.727296" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.182: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.170.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:34:41.800 16  switches: flows:  103712 101096 100590 102489 99857 100044 100861 101602 99552 99613 99793 99350 100252 97949 99133 99158  total = 26.750850 per ms 
03:35:41.900 16  switches: flows:  105978 105479 105852 106533 103213 104842 104557 106972 105324 104152 103484 102583 104382 101731 102366 103366  total = 27.800447 per ms 
03:36:42.001 16  switches: flows:  107548 108463 108599 108537 107346 108565 107211 109715 106785 104427 106472 104616 106777 104662 104683 105567  total = 28.451789 per ms 
03:37:42.102 16  switches: flows:  85616 86858 86082 85308 84382 85812 84236 86573 85527 84684 85561 85055 85903 82461 82951 84871  total = 22.660148 per ms 
03:38:42.202 16  switches: flows:  113721 112733 113126 112355 111744 112209 110713 109661 110284 109594 109309 111356 110528 107841 108869 110980  total = 29.534380 per ms 
03:39:42.302 16  switches: flows:  108218 106483 108194 106754 106932 107852 105960 107657 107067 106736 106254 107374 107403 104217 105801 106475  total = 28.442095 per ms 
03:40:42.403 16  switches: flows:  113963 111176 111630 113793 110533 110847 111502 112770 110725 109886 110025 109206 110198 108459 111644 109414  total = 29.546647 per ms 
03:41:42.504 16  switches: flows:  107375 105001 106127 107887 104899 106052 104447 107058 103903 103716 103153 103875 104618 103414 105163 103503  total = 27.956343 per ms 
03:42:42.604 16  switches: flows:  104366 106429 103615 104822 105187 104372 102298 104327 101932 101144 104731 104964 101702 100693 103620 101343  total = 27.546440 per ms 
03:43:42.704 16  switches: flows:  109633 108326 107387 107655 109248 107926 105760 109776 105556 103985 109603 107895 107982 103728 107306 104256  total = 28.552664 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 22660.15/29546.65/27832.33/9478.62 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:43:42.726847" elapsed="0.000557"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-01T03:43:42.727627" elapsed="0.000518"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-01T03:43:42.728737" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-01T03:43:42.728888" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 22660.15/29546.65/27832.33/9478.62 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-08-01T03:43:42.728415" elapsed="0.000521"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:43:42.729604" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 22660.15/29546.65/27832.33/9478.62 | 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-08-01T03:43:42.729197" elapsed="0.000446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.733262" 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-08-01T03:43:42.729850" elapsed="0.003562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.736421" level="INFO">22660.15/29546.65/27832.33/9478.62</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T03:43:42.733731" elapsed="0.002764"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:43:42.739134" 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-08-01T03:43:42.736672" elapsed="0.002493"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T03:43:42.741818" level="INFO">@{result_value_list} = [ 22660.15 | 29546.65 | 27832.33 | 9478.62 ]</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-08-01T03:43:42.739391" elapsed="0.002456"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.742449" level="INFO">Length is 4.</msg>
<msg time="2026-08-01T03:43:42.742541" 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-08-01T03:43:42.742075" elapsed="0.000490"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.747678" level="INFO">min :: 22660.15</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-08-01T03:43:42.742972" elapsed="0.004768"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-01T03:43:42.742843" elapsed="0.004937"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.752894" level="INFO">max :: 29546.65</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-08-01T03:43:42.748027" elapsed="0.004925"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-01T03:43:42.747889" elapsed="0.005099"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.758056" level="INFO">avg :: 27832.33</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-08-01T03:43:42.753202" elapsed="0.004915"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-01T03:43:42.753074" elapsed="0.005080"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.763083" level="INFO">stdev :: 9478.62</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-08-01T03:43:42.758411" elapsed="0.004733"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-01T03:43:42.758242" elapsed="0.004938"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-01T03:43:42.742652" elapsed="0.020559"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.767385" level="INFO">${min} = 22660.15</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-08-01T03:43:42.763409" elapsed="0.004008"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.771557" level="INFO">${max} = 29546.65</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-08-01T03:43:42.767587" elapsed="0.003998"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.775804" level="INFO">${average} = 27832.33</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-08-01T03:43:42.771744" elapsed="0.004088"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.779920" level="INFO">${stdev} = 9478.62</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-08-01T03:43:42.775989" elapsed="0.003958"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.780510" level="INFO">${date} = 2026-08-01 03:43:42</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-01T03:43:42.780113" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.781103" level="INFO">CBench Result: 2026-08-01 03:43:42,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,22660.15,29546.65,27832.33,9478.62</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-08-01T03:43:42.780685" elapsed="0.000474"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T03:43:42.782358" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-08-01T03:43:42.781843" elapsed="0.000598"/>
</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-08-01T03:43:42.782597" elapsed="0.000480"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-01T03:43:42.781342" elapsed="0.001802"/>
</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-08-01T03:33:36.021988" elapsed="606.761217"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.783777" 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-08-01T03:43:42.783386" elapsed="0.000454"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-01T03:43:42.785244" 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-08-01T03:43:42.784698" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-01T03:43:42.785552" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-08-01T03:43:42.785387" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-08-01T03:43:42.785364" 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-08-01T03:43:42.785876" elapsed="0.000026"/>
</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-08-01T03:43:42.786056" elapsed="0.000022"/>
</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-08-01T03:43:42.786218" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-08-01T03:43:42.786476" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-08-01T03:43:42.786630" 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-08-01T03:43:42.786777" elapsed="0.000026"/>
</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-08-01T03:43:42.786949" elapsed="0.000021"/>
</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-08-01T03:43:42.787173" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-01T03:43:42.787034" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-08-01T03:43:42.787017" elapsed="0.000233"/>
</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-08-01T03:43:42.784327" elapsed="0.002989"/>
</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-08-01T03:33:36.020619" elapsed="606.766755"/>
</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-08-01T03:13:19.869061" elapsed="1822.919130"/>
</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>
