<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-08-02T06:47:36.235160" 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-02T06:47:36.787560" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-08-02T06:47:36.787415" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-08-02T06:47:36.787382" elapsed="0.000284"/>
</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-02T06:47:36.787828" elapsed="0.000523"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-02T06:47:36.788841" level="INFO">Logging into '10.30.171.2:8101' as 'karaf'.</msg>
<msg time="2026-08-02T06:47:37.565893" 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-02T06:47:36.788521" elapsed="0.777534"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-02T06:47:37.613218" 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-02T06:47:37.566308" elapsed="0.046993"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-02T06:47:37.615094" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-02T06:47:37.615205" 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-02T06:47:37.613472" elapsed="0.001764"/>
</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-02T06:47:37.615389" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T06:47:37.615758" elapsed="0.000201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:47:37.616444" 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-02T06:47:37.616106" elapsed="0.000392"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-02T06:47:37.616553" elapsed="0.000058"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.2
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-02T06:47:36.787031" elapsed="0.829731"/>
</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-02T06:47:36.783410" elapsed="0.833418"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-02T06:47:37.617399" 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-02T06:47:37.617017" elapsed="0.000438"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-02T06:47:37.617875" 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-02T06:47:37.617606" elapsed="0.000332"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-02T06:47:37.618480" 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-02T06:47:37.618093" elapsed="0.000415"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-02T06:47:37.619060" 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-02T06:47:37.618676" elapsed="0.000427"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-02T06:47:37.619662" 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-02T06:47:37.619283" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-02T06:47:37.620185" 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-02T06:47:37.619873" elapsed="0.000353"/>
</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-02T06:47:37.620540" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-02T06:47:37.620319" elapsed="0.000275"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-02T06:47:37.625166" 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-02T06:47:37.624749" elapsed="0.000445"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-02T06:47:37.626275" level="INFO">Length is 0.</msg>
<msg time="2026-08-02T06:47:37.626358" 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-02T06:47:37.625771" elapsed="0.000611"/>
</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-02T06:47:37.626527" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-02T06:47:37.627928" level="INFO">Logging into '10.30.170.231:22' as 'jenkins'.</msg>
<msg time="2026-08-02T06:47:38.318283" 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 Sun Aug  2 06:47:37 UTC 2026

  System load:  0.01               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.231
  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-44-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-02T06:47:37.627398" elapsed="0.691010"/>
</kw>
<msg time="2026-08-02T06:47:38.318489" 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-02T06:47:37.627050" elapsed="0.691523"/>
</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-02T06:47:37.625400" elapsed="0.693285"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.326759" 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-02T06:47:38.318900" elapsed="0.009027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T06:47:38.328111" elapsed="0.000284"/>
</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-02T06:47:37.624199" elapsed="0.704257"/>
</kw>
<status status="PASS" start="2026-08-02T06:47:37.620821" elapsed="0.707674"/>
</branch>
<status status="PASS" start="2026-08-02T06:47:37.620290" elapsed="0.708238"/>
</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-02T06:47:38.328686" elapsed="0.000506"/>
</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-02T06:47:38.334285" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-08-02T06:47:38.334115" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-08-02T06:47:38.334082" elapsed="0.000311"/>
</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-02T06:47:38.339386" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-08-02T06:47:38.339213" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-08-02T06:47:38.339186" elapsed="0.000297"/>
</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-02T06:47:38.339667" elapsed="0.000631"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.340887" level="INFO">Logging into '10.30.171.2:8101' as 'karaf'.</msg>
<msg time="2026-08-02T06:47:38.544864" 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-02T06:47:38.340504" elapsed="0.204472"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.637605" 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-02T06:47:38.545167" elapsed="0.092542"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.645190" 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-02T06:47:38.645378" 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-02T06:47:38.637881" elapsed="0.007529"/>
</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-02T06:47:38.645552" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T06:47:38.645912" elapsed="0.000202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:47:38.646554" 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-02T06:47:38.646249" elapsed="0.000359"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-02T06:47:38.646657" elapsed="0.000076"/>
</return>
<msg time="2026-08-02T06:47:38.646884" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.2
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-02T06:47:38.338714" elapsed="0.308202"/>
</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-02T06:47:38.647061" elapsed="0.000534"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-02T06:47:38.647670" elapsed="0.000049"/>
</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-02T06:47:38.333674" elapsed="0.314149"/>
</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-02T06:47:38.651603" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-08-02T06:47:38.651469" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-08-02T06:47:38.651445" elapsed="0.000230"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-02T06:47:38.651825" elapsed="0.000455"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.652708" level="INFO">Logging into '10.30.171.2:8101' as 'karaf'.</msg>
<msg time="2026-08-02T06:47:38.804287" 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-02T06:47:38.652428" elapsed="0.151949"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.827474" 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-02T06:47:38.804537" elapsed="0.022996"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.829321" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-02T06:47:38.829413" 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-02T06:47:38.827707" elapsed="0.001735"/>
</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-02T06:47:38.829574" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T06:47:38.829911" elapsed="0.000160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:47:38.830467" 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-02T06:47:38.830205" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-02T06:47:38.830562" elapsed="0.000037"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.2
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-02T06:47:38.651135" elapsed="0.179585"/>
</kw>
<status status="PASS" start="2026-08-02T06:47:36.781272" elapsed="2.049511"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:47:38.832829" 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-02T06:47:38.831666" elapsed="0.001230"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-02T06:47:38.834400" 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-02T06:47:38.834052" elapsed="0.000392"/>
</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-02T06:47:38.834759" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-02T06:47:38.834516" elapsed="0.000301"/>
</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-02T06:47:38.837748" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-02T06:47:38.837485" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-08-02T06:47:38.837465" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.838157" 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-02T06:47:38.838278" 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-02T06:47:38.837962" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:47:38.838874" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.2 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.231" 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-02T06:47:38.838438" elapsed="0.000496"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.839566" 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-02T06:47:38.839073" elapsed="0.000519"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-02T06:47:38.840510" level="INFO">Length is 0.</msg>
<msg time="2026-08-02T06:47:38.840601" 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-02T06:47:38.840193" elapsed="0.000432"/>
</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-02T06:47:38.840783" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-02T06:47:38.841989" level="INFO">Logging into '10.30.170.231:22' as 'jenkins'.</msg>
<msg time="2026-08-02T06:47:39.167157" 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 Sun Aug  2 06:47:37 UTC 2026

  System load:  0.01               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.231
  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: Sun Aug  2 06:47:38 2026 from 10.30.170.194
[?2004h[jenkins@releng-00446-44-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-02T06:47:38.841619" elapsed="0.325734"/>
</kw>
<msg time="2026-08-02T06:47:39.167442" 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-02T06:47:38.841274" elapsed="0.326260"/>
</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-02T06:47:38.839814" elapsed="0.327850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-02T06:47:39.168266" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.2 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-02T06:57:45.356151" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-02T06:57:45.356645" level="INFO">${stdout} = </msg>
<msg time="2026-08-02T06:57:45.356828" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-02T06:47:39.167921" elapsed="606.188970"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T06:57:45.357352" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.359254" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.2. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
06:48:44.414 16  switches: flows:  106803 109858 109917 107595 111699 108432 108218 110957 107534 109248 108026 107668 111949 108996 108465 110397  total = 29.096033 per ms 
06:49:44.514 16  switches: flows:  110730 113522 112123 110963 113158 110295 112837 111760 111572 111273 106601 110271 110032 110853 107800 109346  total = 29.503025 per ms 
06:50:44.615 16  switches: flows:  117914 119814 119458 116967 119690 118084 120266 118934 118836 116302 114034 116498 116826 118264 114866 115717  total = 31.322082 per ms 
06:51:44.716 16  switches: flows:  117698 120095 120440 118322 120317 117453 119833 121001 119731 117090 115042 115690 116666 116135 115449 118100  total = 31.431863 per ms 
06:52:44.818 16  switches: flows:  118357 120938 122038 121148 121007 121174 123137 122388 119632 117365 116814 118305 117567 118644 117723 118041  total = 31.851100 per ms 
06:53:44.919 16  switches: flows:  117860 120577 121438 119537 119429 119159 120925 121306 119348 116331 115038 116527 116167 115796 115235 115999  total = 31.458673 per ms 
06:54:45.020 16  switches: flows:  118196 121259 121084 120265 121278 120755 121491 121990 120241 118267 116547 116114 117805 118172 116087 116627  total = 31.716660 per ms 
06:55:45.121 16  switches: flows:  114022 116696 117035 115944 117132 116228 117881 118394 116779 113538 111966 112519 114772 113892 111939 113170  total = 30.647316 per ms 
06:56:45.222 16  switches: flows:  112259 112609 113664 112822 112348 112484 115022 113593 112162 109557 109685 110539 111446 111302 110041 108197  total = 29.745853 per ms 
06:57:45.323 16  switches: flows:  118405 122025 119933 117941 120032 120828 122467 121281 118826 119544 119219 120077 121353 119270 118780 118028  total = 31.913569 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29503.03/31913.57/31065.57/10389.86 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T06:57:45.358502" elapsed="0.001042"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-02T06:57:45.360076" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-08-02T06:57:45.359769" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-08-02T06:57:45.359681" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-02T06:57:45.360508" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-08-02T06:57:45.360425" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-08-02T06:57:45.360390" elapsed="0.000256"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-02T06:57:45.360757" elapsed="0.000050"/>
</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-02T06:57:45.365994" elapsed="0.000345"/>
</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-02T06:57:45.366486" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T06:57:45.366804" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-02T06:57:45.361463" elapsed="0.005493"/>
</kw>
<msg time="2026-08-02T06:57:45.367084" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-02T06:47:38.835166" elapsed="606.531945"/>
</kw>
<status status="PASS" start="2026-08-02T06:47:38.834845" elapsed="606.532315"/>
</branch>
<status status="PASS" start="2026-08-02T06:47:38.834496" elapsed="606.532688"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.367615" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.2. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
06:48:44.414 16  switches: flows:  106803 109858 109917 107595 111699 108432 108218 110957 107534 109248 108026 107668 111949 108996 108465 110397  total = 29.096033 per ms 
06:49:44.514 16  switches: flows:  110730 113522 112123 110963 113158 110295 112837 111760 111572 111273 106601 110271 110032 110853 107800 109346  total = 29.503025 per ms 
06:50:44.615 16  switches: flows:  117914 119814 119458 116967 119690 118084 120266 118934 118836 116302 114034 116498 116826 118264 114866 115717  total = 31.322082 per ms 
06:51:44.716 16  switches: flows:  117698 120095 120440 118322 120317 117453 119833 121001 119731 117090 115042 115690 116666 116135 115449 118100  total = 31.431863 per ms 
06:52:44.818 16  switches: flows:  118357 120938 122038 121148 121007 121174 123137 122388 119632 117365 116814 118305 117567 118644 117723 118041  total = 31.851100 per ms 
06:53:44.919 16  switches: flows:  117860 120577 121438 119537 119429 119159 120925 121306 119348 116331 115038 116527 116167 115796 115235 115999  total = 31.458673 per ms 
06:54:45.020 16  switches: flows:  118196 121259 121084 120265 121278 120755 121491 121990 120241 118267 116547 116114 117805 118172 116087 116627  total = 31.716660 per ms 
06:55:45.121 16  switches: flows:  114022 116696 117035 115944 117132 116228 117881 118394 116779 113538 111966 112519 114772 113892 111939 113170  total = 30.647316 per ms 
06:56:45.222 16  switches: flows:  112259 112609 113664 112822 112348 112484 115022 113593 112162 109557 109685 110539 111446 111302 110041 108197  total = 29.745853 per ms 
06:57:45.323 16  switches: flows:  118405 122025 119933 117941 120032 120828 122467 121281 118826 119544 119219 120077 121353 119270 118780 118028  total = 31.913569 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29503.03/31913.57/31065.57/10389.86 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T06:57:45.367327" elapsed="0.000379"/>
</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-02T06:57:45.367855" elapsed="0.000375"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-02T06:57:45.368630" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-02T06:57:45.368737" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29503.03/31913.57/31065.57/10389.86 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-02T06:57:45.368392" elapsed="0.000371"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T06:57:45.369193" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29503.03/31913.57/31065.57/10389.86 | 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-02T06:57:45.368934" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.371628" 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-02T06:57:45.369365" elapsed="0.002487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.374258" level="INFO">29503.03/31913.57/31065.57/10389.86</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T06:57:45.372010" elapsed="0.002305"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T06:57:45.376641" 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-02T06:57:45.374463" elapsed="0.002205"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T06:57:45.379085" level="INFO">@{result_value_list} = [ 29503.03 | 31913.57 | 31065.57 | 10389.86 ]</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-02T06:57:45.376894" elapsed="0.002219"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.379572" level="INFO">Length is 4.</msg>
<msg time="2026-08-02T06:57:45.379660" 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-02T06:57:45.379265" elapsed="0.000419"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.384371" level="INFO">min :: 29503.03</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T06:57:45.380104" elapsed="0.004323"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-02T06:57:45.379973" elapsed="0.004489"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.389235" level="INFO">max :: 31913.57</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-02T06:57:45.384679" elapsed="0.004612"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-02T06:57:45.384553" elapsed="0.004772"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.393825" level="INFO">avg :: 31065.57</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-02T06:57:45.389542" elapsed="0.004340"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-02T06:57:45.389414" elapsed="0.004502"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.398421" level="INFO">stdev :: 10389.86</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T06:57:45.394134" elapsed="0.004343"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-02T06:57:45.394006" elapsed="0.004505"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-02T06:57:45.379772" elapsed="0.018771"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.402666" level="INFO">${min} = 29503.03</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-02T06:57:45.398715" elapsed="0.003994"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.406774" level="INFO">${max} = 31913.57</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-02T06:57:45.402865" elapsed="0.003936"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.410706" level="INFO">${average} = 31065.57</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-02T06:57:45.406952" elapsed="0.003782"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.414590" level="INFO">${stdev} = 10389.86</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-02T06:57:45.410886" elapsed="0.003729"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.415149" level="INFO">${date} = 2026-08-02 06:57:45</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-02T06:57:45.414791" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.415748" level="INFO">CBench Result: 2026-08-02 06:57:45,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29503.03,31913.57,31065.57,10389.86</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-02T06:57:45.415320" elapsed="0.000485"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-02T06:57:45.416850" 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-02T06:57:45.416431" elapsed="0.000707"/>
</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-02T06:57:45.417319" elapsed="0.000510"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-02T06:57:45.415953" elapsed="0.001946"/>
</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-02T06:47:38.833413" elapsed="606.584547"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.418440" 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-02T06:57:45.418114" elapsed="0.000382"/>
</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-02T06:57:45.419052" elapsed="0.000271"/>
</kw>
<status status="PASS" start="2026-08-02T06:57:45.418737" elapsed="0.000657"/>
</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-02T06:47:38.830936" elapsed="606.588497"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.420918" 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-02T06:57:45.420498" elapsed="0.000479"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.422264" 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-02T06:57:45.421930" elapsed="0.000376"/>
</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-02T06:57:45.422644" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-02T06:57:45.422425" elapsed="0.000294"/>
</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-02T06:57:45.425563" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-02T06:57:45.425318" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-08-02T06:57:45.425299" elapsed="0.000343"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-02T06:57:45.425989" 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-02T06:57:45.426108" 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-02T06:57:45.425794" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.426680" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.2 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.231" 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-02T06:57:45.426267" elapsed="0.000487"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-02T06:57:45.427307" 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-02T06:57:45.426891" elapsed="0.000443"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-02T06:57:45.428248" level="INFO">Length is 0.</msg>
<msg time="2026-08-02T06:57:45.428337" 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-02T06:57:45.427947" elapsed="0.000413"/>
</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-02T06:57:45.428499" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-02T06:57:45.429716" level="INFO">Logging into '10.30.170.231:22' as 'jenkins'.</msg>
<msg time="2026-08-02T06:57:46.002973" 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 Sun Aug  2 06:57:45 UTC 2026

  System load:  1.0                Processes:             105
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.231
  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: Sun Aug  2 06:47:39 2026 from 10.30.170.194
[?2004h[jenkins@releng-00446-44-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-02T06:57:45.429350" elapsed="0.573832"/>
</kw>
<msg time="2026-08-02T06:57:46.003274" 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-02T06:57:45.429010" elapsed="0.574362"/>
</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-02T06:57:45.427532" elapsed="0.575965"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-02T06:57:46.004047" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.2 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-02T07:07:52.051483" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-02T07:07:52.051952" level="INFO">${stdout} = </msg>
<msg time="2026-08-02T07:07:52.052024" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 1...</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-02T06:57:46.003731" elapsed="606.048331"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T07:07:52.052437" elapsed="0.000521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.053771" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.2. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
06:58:51.133 16  switches: flows:  432981 437487 430403 434609 421500 440187 423760 432526 426180 404718 414299 416422 431581 414578 427033 407139  total = 113.256717 per ms 
06:59:51.235 16  switches: flows:  461212 461751 463223 463377 463066 464551 463132 464070 465690 471293 464861 466680 461684 464204 465145 460028  total = 123.525536 per ms 
07:00:51.336 16  switches: flows:  489174 493803 495203 490779 490163 487817 487790 495852 494246 490630 492793 493374 493804 488668 487944 490985  total = 130.830724 per ms 
07:01:51.438 16  switches: flows:  483803 481051 484275 479999 485591 489788 480853 488602 485251 481906 487493 485091 486590 483405 490601 488807  total = 129.167904 per ms 
07:02:51.539 16  switches: flows:  494936 492447 488414 489766 488718 492824 493913 493986 489943 484709 488684 488964 495590 493304 486639 490020  total = 130.661593 per ms 
07:03:51.641 16  switches: flows:  467537 469602 465177 465056 468170 468140 462594 467153 466887 465036 467679 468646 468476 466640 463678 458566  total = 124.108663 per ms 
07:04:51.743 16  switches: flows:  454900 451166 449133 455162 451610 449756 456426 462346 457627 456785 450961 457776 454745 453329 451114 451993  total = 120.877228 per ms 
07:05:51.844 16  switches: flows:  490072 483782 494720 485920 488359 489815 486817 486295 484447 487242 490233 492604 492347 486293 491610 485193  total = 130.043168 per ms 
07:06:51.946 16  switches: flows:  470014 467953 464907 460705 462528 470693 467898 464586 457715 464228 456989 463578 469185 451701 461363 457553  total = 123.318734 per ms 
07:07:52.048 16  switches: flows:  532538 528427 526986 528091 528150 527558 528429 528308 528771 528142 521689 533766 521880 532793 525751 525100  total = 140.536337 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 120877.23/140536.34/128118.88/43076.06 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:07:52.053250" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-02T07:07:52.054336" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-08-02T07:07:52.054125" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-08-02T07:07:52.054082" elapsed="0.000394"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-02T07:07:52.054615" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-08-02T07:07:52.054561" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-08-02T07:07:52.054538" elapsed="0.000190"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-02T07:07:52.054775" elapsed="0.000020"/>
</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-02T07:07:52.058553" elapsed="0.000513"/>
</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-02T07:07:52.059285" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T07:07:52.059748" elapsed="0.000155"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-02T07:07:52.055232" elapsed="0.004750"/>
</kw>
<msg time="2026-08-02T07:07:52.060171" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 1...</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-02T06:57:45.423055" elapsed="606.637157"/>
</kw>
<status status="PASS" start="2026-08-02T06:57:45.422744" elapsed="606.637540"/>
</branch>
<status status="PASS" start="2026-08-02T06:57:45.422404" elapsed="606.637914"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.060965" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.2. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
06:58:51.133 16  switches: flows:  432981 437487 430403 434609 421500 440187 423760 432526 426180 404718 414299 416422 431581 414578 427033 407139  total = 113.256717 per ms 
06:59:51.235 16  switches: flows:  461212 461751 463223 463377 463066 464551 463132 464070 465690 471293 464861 466680 461684 464204 465145 460028  total = 123.525536 per ms 
07:00:51.336 16  switches: flows:  489174 493803 495203 490779 490163 487817 487790 495852 494246 490630 492793 493374 493804 488668 487944 490985  total = 130.830724 per ms 
07:01:51.438 16  switches: flows:  483803 481051 484275 479999 485591 489788 480853 488602 485251 481906 487493 485091 486590 483405 490601 488807  total = 129.167904 per ms 
07:02:51.539 16  switches: flows:  494936 492447 488414 489766 488718 492824 493913 493986 489943 484709 488684 488964 495590 493304 486639 490020  total = 130.661593 per ms 
07:03:51.641 16  switches: flows:  467537 469602 465177 465056 468170 468140 462594 467153 466887 465036 467679 468646 468476 466640 463678 458566  total = 124.108663 per ms 
07:04:51.743 16  switches: flows:  454900 451166 449133 455162 451610 449756 456426 462346 457627 456785 450961 457776 454745 453329 451114 451993  total = 120.877228 per ms 
07:05:51.844 16  switches: flows:  490072 483782 494720 485920 488359 489815 486817 486295 484447 487242 490233 492604 492347 486293 491610 485193  total = 130.043168 per ms 
07:06:51.946 16  switches: flows:  470014 467953 464907 460705 462528 470693 467898 464586 457715 464228 456989 463578 469185 451701 461363 457553  total = 123.318734 per ms 
07:07:52.048 16  switches: flows:  532538 528427 526986 528091 528150 527558 528429 528308 528771 528142 521689 533766 521880 532793 525751 525100  total = 140.536337 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 120877.23/140536.34/128118.88/43076.06 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:07:52.060523" elapsed="0.000600"/>
</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-02T07:07:52.061342" elapsed="0.000545"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-02T07:07:52.062436" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-02T07:07:52.062569" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 120877.23/140536.34/128118.88/43076.06 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-02T07:07:52.062122" elapsed="0.000484"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T07:07:52.063218" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 120877.23/140536.34/128118.88/43076.06 | 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-02T07:07:52.062849" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.066799" 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-02T07:07:52.063467" elapsed="0.003415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.070323" level="INFO">120877.23/140536.34/128118.88/43076.06</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:07:52.067094" elapsed="0.003286"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T07:07:52.072717" 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-02T07:07:52.070527" elapsed="0.002218"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T07:07:52.075131" level="INFO">@{result_value_list} = [ 120877.23 | 140536.34 | 128118.88 | 43076.06 ]</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-02T07:07:52.072929" elapsed="0.002228"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.075610" level="INFO">Length is 4.</msg>
<msg time="2026-08-02T07:07:52.075711" 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-02T07:07:52.075308" elapsed="0.000429"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.080552" level="INFO">min :: 120877.23</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-02T07:07:52.076109" elapsed="0.004500"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-02T07:07:52.075983" elapsed="0.004661"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.085162" level="INFO">max :: 140536.34</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-02T07:07:52.080877" elapsed="0.004341"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-02T07:07:52.080748" elapsed="0.004505"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.089816" level="INFO">avg :: 128118.88</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-02T07:07:52.085466" elapsed="0.004405"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-02T07:07:52.085341" elapsed="0.004564"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.094423" level="INFO">stdev :: 43076.06</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-02T07:07:52.090141" elapsed="0.004338"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-02T07:07:52.089992" elapsed="0.004521"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-02T07:07:52.075803" elapsed="0.018741"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.098723" level="INFO">${min} = 120877.23</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-02T07:07:52.094712" elapsed="0.004041"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.102613" level="INFO">${max} = 140536.34</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-02T07:07:52.098919" elapsed="0.003721"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.106495" level="INFO">${average} = 128118.88</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-02T07:07:52.102806" elapsed="0.003716"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.110730" level="INFO">${stdev} = 43076.06</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-02T07:07:52.106671" elapsed="0.004089"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.111287" level="INFO">${date} = 2026-08-02 07:07:52</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-02T07:07:52.110928" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.111880" level="INFO">CBench Result: 2026-08-02 07:07:52,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,120877.23,140536.34,128118.88,43076.06</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-02T07:07:52.111458" elapsed="0.000479"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-02T07:07:52.113003" 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-02T07:07:52.112559" elapsed="0.000552"/>
</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-02T07:07:52.113263" elapsed="0.000481"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-02T07:07:52.112083" elapsed="0.001728"/>
</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-02T06:57:45.421288" elapsed="606.692583"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.114334" 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-02T07:07:52.114020" elapsed="0.000371"/>
</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-02T07:07:52.114913" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-08-02T07:07:52.114593" elapsed="0.000653"/>
</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-02T06:57:45.419928" elapsed="606.695357"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.116879" 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-02T07:07:52.116484" elapsed="0.000452"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.118399" 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-02T07:07:52.118068" elapsed="0.000372"/>
</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-02T07:07:52.118800" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-02T07:07:52.118560" elapsed="0.000298"/>
</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-02T07:07:52.121933" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-02T07:07:52.121666" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-08-02T07:07:52.121646" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-02T07:07:52.122334" 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-02T07:07:52.122452" 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-02T07:07:52.122144" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.123048" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.2 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.231" 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-02T07:07:52.122611" elapsed="0.000497"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-02T07:07:52.123639" 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-02T07:07:52.123247" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-02T07:07:52.124554" level="INFO">Length is 0.</msg>
<msg time="2026-08-02T07:07:52.124641" 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-02T07:07:52.124251" elapsed="0.000414"/>
</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-02T07:07:52.124820" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-02T07:07:52.126005" level="INFO">Logging into '10.30.170.231:22' as 'jenkins'.</msg>
<msg time="2026-08-02T07:07:52.712352" 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 Sun Aug  2 07:07:52 UTC 2026

  System load:  0.29               Processes:             104
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.231
  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: Sun Aug  2 06:57:45 2026 from 10.30.170.194
[?2004h[jenkins@releng-00446-44-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-02T07:07:52.125637" elapsed="0.586892"/>
</kw>
<msg time="2026-08-02T07:07:52.712604" 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-02T07:07:52.125299" elapsed="0.587381"/>
</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-02T07:07:52.123880" elapsed="0.588928"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-02T07:07:52.713308" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.2 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-02T07:17:58.775798" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-02T07:17:58.778033" level="INFO">${stdout} = </msg>
<msg time="2026-08-02T07:17:58.778094" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-02T07:07:52.713018" elapsed="606.065112"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T07:17:58.778965" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.780279" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.2. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
07:08:57.863 16  switches: flows:  107449 107336 103670 107158 106480 106609 106990 107741 105769 106501 103571 105775 104403 101617 105532 105472  total = 28.201217 per ms 
07:09:57.964 16  switches: flows:  114728 112343 111910 114559 112613 111248 113279 113252 111570 112394 109152 112893 112180 108885 112031 110804  total = 29.847517 per ms 
07:10:58.065 16  switches: flows:  114012 111144 114441 115180 109671 108936 109109 112752 111432 113557 107996 108338 110743 109310 111436 108371  total = 29.557777 per ms 
07:11:58.166 16  switches: flows:  109332 109448 111453 112134 107467 107128 107803 108953 105306 111583 105359 106996 107628 106204 110053 103613  total = 28.792947 per ms 
07:12:58.267 16  switches: flows:  110927 107372 110494 110738 107453 108256 106478 109466 105563 109212 104495 105061 108008 107726 108541 105727  total = 28.710661 per ms 
07:13:58.368 16  switches: flows:  112845 110108 113153 113956 108210 109326 108164 110845 107250 112167 106165 107826 110228 108775 109965 105970  total = 29.200440 per ms 
07:14:58.469 16  switches: flows:  119992 116323 120399 119609 115567 115104 115352 119690 115511 118299 114171 113650 116263 115719 116821 113369  total = 31.045478 per ms 
07:15:58.570 16  switches: flows:  112090 111029 112142 109150 106904 108078 106111 106865 105880 108431 106942 108005 108449 107760 107711 107713  total = 28.839513 per ms 
07:16:58.671 16  switches: flows:  109583 110289 111974 106413 106638 107095 105342 105512 104770 105694 104229 107705 109138 107922 107833 107888  total = 28.586030 per ms 
07:17:58.772 16  switches: flows:  114678 114723 114482 116467 114758 111755 112650 112270 109400 109818 112152 109901 113805 111805 110299 111986  total = 29.965700 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28586.03/31045.48/29394.01/9826.95 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:17:58.779810" elapsed="0.000686"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-02T07:17:58.780837" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-08-02T07:17:58.780621" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-08-02T07:17:58.780576" elapsed="0.000410"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-02T07:17:58.781110" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-08-02T07:17:58.781063" elapsed="0.000100"/>
</branch>
<status status="NOT RUN" start="2026-08-02T07:17:58.781042" elapsed="0.000150"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-02T07:17:58.781233" elapsed="0.000017"/>
</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-02T07:17:58.784853" elapsed="0.000439"/>
</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-02T07:17:58.785485" elapsed="0.000251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-02T07:17:58.785915" elapsed="0.000130"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-02T07:17:58.781650" elapsed="0.004468"/>
</kw>
<msg time="2026-08-02T07:17:58.786285" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-02T07:07:52.119198" elapsed="606.667123"/>
</kw>
<status status="PASS" start="2026-08-02T07:07:52.118885" elapsed="606.667503"/>
</branch>
<status status="PASS" start="2026-08-02T07:07:52.118537" elapsed="606.667883"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.786997" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.2:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.2. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
07:08:57.863 16  switches: flows:  107449 107336 103670 107158 106480 106609 106990 107741 105769 106501 103571 105775 104403 101617 105532 105472  total = 28.201217 per ms 
07:09:57.964 16  switches: flows:  114728 112343 111910 114559 112613 111248 113279 113252 111570 112394 109152 112893 112180 108885 112031 110804  total = 29.847517 per ms 
07:10:58.065 16  switches: flows:  114012 111144 114441 115180 109671 108936 109109 112752 111432 113557 107996 108338 110743 109310 111436 108371  total = 29.557777 per ms 
07:11:58.166 16  switches: flows:  109332 109448 111453 112134 107467 107128 107803 108953 105306 111583 105359 106996 107628 106204 110053 103613  total = 28.792947 per ms 
07:12:58.267 16  switches: flows:  110927 107372 110494 110738 107453 108256 106478 109466 105563 109212 104495 105061 108008 107726 108541 105727  total = 28.710661 per ms 
07:13:58.368 16  switches: flows:  112845 110108 113153 113956 108210 109326 108164 110845 107250 112167 106165 107826 110228 108775 109965 105970  total = 29.200440 per ms 
07:14:58.469 16  switches: flows:  119992 116323 120399 119609 115567 115104 115352 119690 115511 118299 114171 113650 116263 115719 116821 113369  total = 31.045478 per ms 
07:15:58.570 16  switches: flows:  112090 111029 112142 109150 106904 108078 106111 106865 105880 108431 106942 108005 108449 107760 107711 107713  total = 28.839513 per ms 
07:16:58.671 16  switches: flows:  109583 110289 111974 106413 106638 107095 105342 105512 104770 105694 104229 107705 109138 107922 107833 107888  total = 28.586030 per ms 
07:17:58.772 16  switches: flows:  114678 114723 114482 116467 114758 111755 112650 112270 109400 109818 112152 109901 113805 111805 110299 111986  total = 29.965700 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28586.03/31045.48/29394.01/9826.95 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:17:58.786609" elapsed="0.000486"/>
</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-02T07:17:58.787288" elapsed="0.000541"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-02T07:17:58.788329" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-02T07:17:58.788447" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28586.03/31045.48/29394.01/9826.95 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-02T07:17:58.788043" elapsed="0.000436"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T07:17:58.789033" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28586.03/31045.48/29394.01/9826.95 | 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-02T07:17:58.788683" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.792204" 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-02T07:17:58.789260" elapsed="0.003018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.795454" level="INFO">28586.03/31045.48/29394.01/9826.95</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:17:58.792471" elapsed="0.003092"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T07:17:58.798835" 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-02T07:17:58.795785" elapsed="0.003091"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-02T07:17:58.802036" level="INFO">@{result_value_list} = [ 28586.03 | 31045.48 | 29394.01 | 9826.95 ]</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-02T07:17:58.799125" elapsed="0.002948"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.802669" level="INFO">Length is 4.</msg>
<msg time="2026-08-02T07:17:58.802800" 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-02T07:17:58.802272" elapsed="0.000560"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.809052" level="INFO">min :: 28586.03</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:17:58.803332" elapsed="0.005796"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-02T07:17:58.803156" elapsed="0.006016"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.815290" level="INFO">max :: 31045.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-02T07:17:58.809451" elapsed="0.005916"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-02T07:17:58.809284" elapsed="0.006130"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.821760" level="INFO">avg :: 29394.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-02T07:17:58.815799" elapsed="0.006035"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-02T07:17:58.815525" elapsed="0.006354"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.827943" level="INFO">stdev :: 9826.95</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-02T07:17:58.822155" elapsed="0.005863"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-02T07:17:58.821984" elapsed="0.006078"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-02T07:17:58.802917" elapsed="0.025185"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.833248" level="INFO">${min} = 28586.03</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-02T07:17:58.828310" elapsed="0.004975"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.838492" level="INFO">${max} = 31045.48</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-02T07:17:58.833491" elapsed="0.005036"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.843761" level="INFO">${average} = 29394.01</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-02T07:17:58.838747" elapsed="0.005042"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.847667" level="INFO">${stdev} = 9826.95</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-02T07:17:58.843946" elapsed="0.003761"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.848220" level="INFO">${date} = 2026-08-02 07:17:58</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-02T07:17:58.847872" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.848833" level="INFO">CBench Result: 2026-08-02 07:17:58,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28586.03,31045.48,29394.01,9826.95</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-02T07:17:58.848391" elapsed="0.000508"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-02T07:17:58.850460" 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-02T07:17:58.849510" elapsed="0.001021"/>
</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-02T07:17:58.850682" elapsed="0.000478"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-02T07:17:58.849041" elapsed="0.002185"/>
</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-02T07:07:52.117290" elapsed="606.733996"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.851785" 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-02T07:17:58.851434" elapsed="0.000408"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-02T07:17:58.853061" 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-02T07:17:58.852555" elapsed="0.000534"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-02T07:17:58.853317" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-08-02T07:17:58.853168" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-08-02T07:17:58.853147" elapsed="0.000262"/>
</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-02T07:17:58.853552" elapsed="0.000023"/>
</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-02T07:17:58.853736" 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-02T07:17:58.853905" elapsed="0.000019"/>
</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-02T07:17:58.854100" elapsed="0.000021"/>
</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-02T07:17:58.854249" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-08-02T07:17:58.854393" elapsed="0.000025"/>
</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-02T07:17:58.854542" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-08-02T07:17:58.854778" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-02T07:17:58.854625" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-08-02T07:17:58.854609" elapsed="0.000246"/>
</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-02T07:17:58.852220" elapsed="0.002686"/>
</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-02T07:07:52.115899" elapsed="606.739054"/>
</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-02T06:47:36.236808" elapsed="1822.618685"/>
</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>
