<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-02T00:47:23.634267" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/test/csit/suites/openflowplugin/Performance/010_Cbench.robot">
<kw name="Cbench Suite Setup" type="SETUP">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-02T00:47:24.186392" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-10-02T00:47:24.186250" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-10-02T00:47:24.186217" elapsed="0.000288"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-02T00:47:24.186676" elapsed="0.000491"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-02T00:47:24.187679" level="INFO">Logging into '10.30.171.33:8101' as 'karaf'.</msg>
<msg time="2026-10-02T00:47:24.797258" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-10-02T00:47:24.187367" elapsed="0.610133"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-02T00:47:24.846689" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-02T00:47:24.797884" elapsed="0.048872"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-02T00:47:24.848556" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-02T00:47:24.848677" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-10-02T00:47:24.846958" elapsed="0.001747"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-02T00:47:24.848898" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T00:47:24.849263" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:47:24.850103" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:47:24.849703" elapsed="0.000451"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-02T00:47:24.850206" elapsed="0.000068"/>
</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.33
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-02T00:47:24.185927" elapsed="0.664531"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-10-02T00:47:24.184095" elapsed="0.666437"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-02T00:47:24.851118" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-02T00:47:24.850730" elapsed="0.000441"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-02T00:47:24.851554" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-02T00:47:24.851320" elapsed="0.000286"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-02T00:47:24.852267" 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-10-02T00:47:24.851778" elapsed="0.000515"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-02T00:47:24.852853" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-02T00:47:24.852521" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-02T00:47:24.853403" 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-10-02T00:47:24.853059" elapsed="0.000370"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-02T00:47:24.853909" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-02T00:47:24.853609" elapsed="0.000340"/>
</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-10-02T00:47:24.854225" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-02T00:47:24.854034" elapsed="0.000241"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-02T00:47:24.856536" 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-10-02T00:47:24.856147" elapsed="0.000414"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-02T00:47:24.857749" level="INFO">Length is 0.</msg>
<msg time="2026-10-02T00:47:24.857842" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-02T00:47:24.857073" elapsed="0.000793"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T00:47:24.858006" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-02T00:47:24.859151" level="INFO">Logging into '10.30.171.102:22' as 'jenkins'.</msg>
<msg time="2026-10-02T00:47:25.360875" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Oct  2 00:46:52 UTC 2026

  System load:  0.13               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.102
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


[?2004h[jenkins@releng-63164-414-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-02T00:47:24.858905" elapsed="0.502143"/>
</kw>
<msg time="2026-10-02T00:47:25.361146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T00:47:24.858498" elapsed="0.502756"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-02T00:47:24.856746" elapsed="0.504673"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-10-02T00:47:25.372005" 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-10-02T00:47:25.361667" elapsed="0.012318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T00:47:25.374175" elapsed="0.000307"/>
</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-10-02T00:47:24.855664" elapsed="0.518878"/>
</kw>
<status status="PASS" start="2026-10-02T00:47:24.854353" elapsed="0.520223"/>
</branch>
<status status="PASS" start="2026-10-02T00:47:24.854006" elapsed="0.520609"/>
</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-10-02T00:47:25.374789" elapsed="0.000528"/>
</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-10-02T00:47:25.377382" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-10-02T00:47:25.377262" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-10-02T00:47:25.377234" elapsed="0.000226"/>
</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-10-02T00:47:25.378950" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-02T00:47:25.378856" elapsed="0.000137"/>
</branch>
<status status="PASS" start="2026-10-02T00:47:25.378837" elapsed="0.000176"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-02T00:47:25.379172" elapsed="0.000399"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-02T00:47:25.379970" level="INFO">Logging into '10.30.171.33:8101' as 'karaf'.</msg>
<msg time="2026-10-02T00:47:25.687328" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-10-02T00:47:25.379746" elapsed="0.307697"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-02T00:47:25.775563" 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-10-02T00:47:25.687646" elapsed="0.088041"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-02T00:47:25.779856" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           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-10-02T00:47:25.780064" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           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-10-02T00:47:25.775950" elapsed="0.004144"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-02T00:47:25.780237" elapsed="0.000265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T00:47:25.780651" elapsed="0.000224"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:47:25.781421" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           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-10-02T00:47:25.781056" elapsed="0.000419"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-02T00:47:25.781525" elapsed="0.000064"/>
</return>
<msg time="2026-10-02T00:47:25.781734" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           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.33
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-02T00:47:25.378550" elapsed="0.403213"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-02T00:47:25.781937" elapsed="0.000618"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-02T00:47:25.782604" elapsed="0.000031"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-10-02T00:47:25.376964" elapsed="0.405784"/>
</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-10-02T00:47:25.784579" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-02T00:47:25.784460" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-10-02T00:47:25.784436" elapsed="0.000211"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-02T00:47:25.784807" elapsed="0.000439"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-02T00:47:25.785648" level="INFO">Logging into '10.30.171.33:8101' as 'karaf'.</msg>
<msg time="2026-10-02T00:47:25.995453" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-10-02T00:47:25.785441" elapsed="0.210101"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-02T00:47:26.018101" 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-10-02T00:47:25.995705" elapsed="0.022453"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-02T00:47:26.020153" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-02T00:47:26.020245" 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-10-02T00:47:26.018313" elapsed="0.001959"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-02T00:47:26.020434" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T00:47:26.020749" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:47:26.021342" 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-10-02T00:47:26.021102" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-02T00:47:26.021455" elapsed="0.000036"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.33
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-02T00:47:25.784132" elapsed="0.237438"/>
</kw>
<status status="PASS" start="2026-10-02T00:47:24.181882" elapsed="1.839743"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:47:26.023659" 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-10-02T00:47:26.022742" elapsed="0.000978"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-02T00:47:26.025168" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-02T00:47:26.024848" elapsed="0.000360"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-02T00:47:26.025516" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-02T00:47:26.025277" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-02T00:47:26.026656" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-02T00:47:26.026435" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-10-02T00:47:26.026417" elapsed="0.000315"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-02T00:47:26.027114" 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-10-02T00:47:26.027225" 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-10-02T00:47:26.026926" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:47:26.027774" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.33 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.102" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:47:26.027445" elapsed="0.000402"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-02T00:47:26.028432" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-02T00:47:26.028011" elapsed="0.000445"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-02T00:47:26.029296" level="INFO">Length is 0.</msg>
<msg time="2026-10-02T00:47:26.029391" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-02T00:47:26.029004" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T00:47:26.029555" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-02T00:47:26.030700" level="INFO">Logging into '10.30.171.102:22' as 'jenkins'.</msg>
<msg time="2026-10-02T00:47:26.395616" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Oct  2 00:46:52 UTC 2026

  System load:  0.13               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.102
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Fri Oct  2 00:47:25 2026 from 10.30.170.170
[?2004h[jenkins@releng-63164-414-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-02T00:47:26.030430" elapsed="0.365481"/>
</kw>
<msg time="2026-10-02T00:47:26.396054" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T00:47:26.030049" elapsed="0.366161"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-02T00:47:26.028639" elapsed="0.367812"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-02T00:47:26.397451" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.33 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-02T00:57:32.526818" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-02T00:57:32.527293" level="INFO">${stdout} = </msg>
<msg time="2026-10-02T00:57:32.527431" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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-10-02T00:47:26.396937" elapsed="606.130552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T00:57:32.527931" elapsed="0.000683"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.529786" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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.33. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:48:31.613 16  switches: flows:  88548 90174 88905 91878 87017 85742 91015 90965 87375 82843 88224 84980 86533 85466 84969 83424  total = 23.300967 per ms 
00:49:31.714 16  switches: flows:  93386 93633 93097 97381 92458 92626 96854 95536 91874 91600 90570 91824 92357 91731 90382 90500  total = 24.722233 per ms 
00:50:31.814 16  switches: flows:  97662 97125 97055 99184 95462 94959 99616 98447 94705 95730 93982 93015 94879 94329 93367 91793  total = 25.479317 per ms 
00:51:31.914 16  switches: flows:  100095 98184 98902 100962 96195 96980 100482 100408 97258 97065 97376 93943 97920 94651 94024 93913  total = 25.929351 per ms 
00:52:32.015 16  switches: flows:  104304 102602 101627 103527 99032 99527 103385 102109 100464 99690 99663 98860 100950 97116 96563 96633  total = 26.722926 per ms 
00:53:32.115 16  switches: flows:  100973 99986 98894 103982 98265 97497 103241 102296 99720 98367 98909 96036 98297 97245 96333 95258  total = 26.377642 per ms 
00:54:32.216 16  switches: flows:  99802 98844 97158 102059 97716 96934 100771 101172 96597 95710 97478 94693 97888 94605 94594 93253  total = 25.944602 per ms 
00:55:32.316 16  switches: flows:  100673 98961 99556 102052 96280 96305 101489 101352 96923 96909 99868 97322 96184 96435 94661 94149  total = 26.108415 per ms 
00:56:32.417 16  switches: flows:  101721 100437 100526 102552 98944 100163 101757 102912 98787 99667 100243 96321 97505 95671 96080 96599  total = 26.453942 per ms 
00:57:32.518 16  switches: flows:  101814 98318 98619 99396 94625 96379 100461 100220 96825 95223 96057 96047 95232 95076 94138 95310  total = 25.852525 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24722.23/26722.93/25954.55/8669.47 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.529083" elapsed="0.000955"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-02T00:57:32.530503" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-10-02T00:57:32.530229" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-10-02T00:57:32.530176" elapsed="0.000525"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-02T00:57:32.530893" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-10-02T00:57:32.530819" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-10-02T00:57:32.530786" elapsed="0.000233"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-02T00:57:32.531108" elapsed="0.000029"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T00:57:32.532704" elapsed="0.000698"/>
</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-10-02T00:57:32.533784" elapsed="0.000347"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T00:57:32.534442" elapsed="0.000205"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-02T00:57:32.531796" elapsed="0.002959"/>
</kw>
<msg time="2026-10-02T00:57:32.534979" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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-10-02T00:47:26.025921" elapsed="606.509113"/>
</kw>
<status status="PASS" start="2026-10-02T00:47:26.025598" elapsed="606.509556"/>
</branch>
<status status="PASS" start="2026-10-02T00:47:26.025257" elapsed="606.509947"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.536245" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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.33. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:48:31.613 16  switches: flows:  88548 90174 88905 91878 87017 85742 91015 90965 87375 82843 88224 84980 86533 85466 84969 83424  total = 23.300967 per ms 
00:49:31.714 16  switches: flows:  93386 93633 93097 97381 92458 92626 96854 95536 91874 91600 90570 91824 92357 91731 90382 90500  total = 24.722233 per ms 
00:50:31.814 16  switches: flows:  97662 97125 97055 99184 95462 94959 99616 98447 94705 95730 93982 93015 94879 94329 93367 91793  total = 25.479317 per ms 
00:51:31.914 16  switches: flows:  100095 98184 98902 100962 96195 96980 100482 100408 97258 97065 97376 93943 97920 94651 94024 93913  total = 25.929351 per ms 
00:52:32.015 16  switches: flows:  104304 102602 101627 103527 99032 99527 103385 102109 100464 99690 99663 98860 100950 97116 96563 96633  total = 26.722926 per ms 
00:53:32.115 16  switches: flows:  100973 99986 98894 103982 98265 97497 103241 102296 99720 98367 98909 96036 98297 97245 96333 95258  total = 26.377642 per ms 
00:54:32.216 16  switches: flows:  99802 98844 97158 102059 97716 96934 100771 101172 96597 95710 97478 94693 97888 94605 94594 93253  total = 25.944602 per ms 
00:55:32.316 16  switches: flows:  100673 98961 99556 102052 96280 96305 101489 101352 96923 96909 99868 97322 96184 96435 94661 94149  total = 26.108415 per ms 
00:56:32.417 16  switches: flows:  101721 100437 100526 102552 98944 100163 101757 102912 98787 99667 100243 96321 97505 95671 96080 96599  total = 26.453942 per ms 
00:57:32.518 16  switches: flows:  101814 98318 98619 99396 94625 96379 100461 100220 96825 95223 96057 96047 95232 95076 94138 95310  total = 25.852525 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24722.23/26722.93/25954.55/8669.47 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.535628" elapsed="0.000801"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-02T00:57:32.536774" elapsed="0.000793"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-02T00:57:32.538419" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-02T00:57:32.538616" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24722.23/26722.93/25954.55/8669.47 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given `string` that contain the `pattern`.</doc>
<status status="PASS" start="2026-10-02T00:57:32.537943" elapsed="0.000725"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T00:57:32.539558" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24722.23/26722.93/25954.55/8669.47 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-02T00:57:32.539020" elapsed="0.000596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.540798" 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-10-02T00:57:32.540024" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.542143" level="INFO">24722.23/26722.93/25954.55/8669.47</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.541422" elapsed="0.000835"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T00:57:32.543433" 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-10-02T00:57:32.542647" elapsed="0.000845"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T00:57:32.544604" level="INFO">@{result_value_list} = [ 24722.23 | 26722.93 | 25954.55 | 8669.47 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-02T00:57:32.543907" elapsed="0.000754"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.545692" level="INFO">Length is 4.</msg>
<msg time="2026-10-02T00:57:32.545870" 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-10-02T00:57:32.545030" elapsed="0.000890"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.547829" level="INFO">min :: 24722.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-10-02T00:57:32.546855" elapsed="0.001091"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-02T00:57:32.546470" elapsed="0.001546"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.549563" level="INFO">max :: 26722.93</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.548620" elapsed="0.001057"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-02T00:57:32.548224" elapsed="0.001521"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.551254" level="INFO">avg :: 25954.55</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.550317" elapsed="0.001050"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-02T00:57:32.549923" elapsed="0.001543"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.552948" level="INFO">stdev :: 8669.47</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.552014" elapsed="0.001068"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-02T00:57:32.551648" elapsed="0.001505"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-02T00:57:32.546044" elapsed="0.007178"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.554509" level="INFO">${min} = 24722.23</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T00:57:32.553599" elapsed="0.000967"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.555787" level="INFO">${max} = 26722.93</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T00:57:32.554899" elapsed="0.000943"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.557078" level="INFO">${average} = 25954.55</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T00:57:32.556193" elapsed="0.000943"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.558334" level="INFO">${stdev} = 8669.47</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T00:57:32.557494" elapsed="0.000925"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.559600" level="INFO">${date} = 2026-10-02 00:57:32</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-02T00:57:32.558831" elapsed="0.000822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.560828" level="INFO">CBench Result: 2026-10-02 00:57:32,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24722.23,26722.93,25954.55,8669.47</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.560081" elapsed="0.000862"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-02T00:57:32.563167" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-02T00:57:32.562145" elapsed="0.001255"/>
</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-10-02T00:57:32.563773" elapsed="0.000931"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-02T00:57:32.561232" elapsed="0.003602"/>
</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-10-02T00:47:26.024288" elapsed="606.540664"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.566170" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-02T00:57:32.565351" elapsed="0.000957"/>
</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-10-02T00:57:32.567766" elapsed="0.000599"/>
</kw>
<status status="PASS" start="2026-10-02T00:57:32.566929" elapsed="0.001615"/>
</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-10-02T00:47:26.021771" elapsed="606.546843"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.570737" 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-10-02T00:57:32.570189" elapsed="0.000633"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.572744" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-02T00:57:32.572218" elapsed="0.000590"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-02T00:57:32.573340" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-02T00:57:32.572918" elapsed="0.000535"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-02T00:57:32.575189" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-02T00:57:32.574830" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-10-02T00:57:32.574801" elapsed="0.000491"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-02T00:57:32.575826" 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-10-02T00:57:32.575978" 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-10-02T00:57:32.575563" elapsed="0.000451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.576761" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.33 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.102" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T00:57:32.576274" elapsed="0.000563"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-02T00:57:32.577574" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-02T00:57:32.577094" elapsed="0.000516"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-02T00:57:32.578777" level="INFO">Length is 0.</msg>
<msg time="2026-10-02T00:57:32.578889" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-02T00:57:32.578361" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T00:57:32.579128" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-02T00:57:32.580692" level="INFO">Logging into '10.30.171.102:22' as 'jenkins'.</msg>
<msg time="2026-10-02T00:57:33.247453" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Oct  2 00:57:32 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Fri Oct  2 00:47:26 2026 from 10.30.170.170
[?2004h[jenkins@releng-63164-414-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-02T00:57:32.580294" elapsed="0.667341"/>
</kw>
<msg time="2026-10-02T00:57:33.247720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T00:57:32.579771" elapsed="0.668035"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-02T00:57:32.577862" elapsed="0.670049"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-02T00:57:33.248463" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.33 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-02T01:07:39.300304" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-02T01:07:39.300972" level="INFO">${stdout} = </msg>
<msg time="2026-10-02T01:07:39.301071" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.33:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-02T00:57:33.248174" elapsed="606.052962"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T01:07:39.301685" elapsed="0.000645"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.303609" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.33: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.33. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:58:38.376 16  switches: flows:  573431 572212 563341 572858 563717 568393 573386 569064 553646 556221 567448 550986 575610 568563 568876 562677  total = 151.007150 per ms 
00:59:38.478 16  switches: flows:  620300 627469 612978 622737 606191 620958 621247 617987 618274 624637 615320 627207 614708 623118 616218 619185  total = 164.864505 per ms 
01:00:38.579 16  switches: flows:  626935 626301 628855 624154 629421 631578 634509 616549 638188 631516 625324 625516 632348 640487 631973 618618  total = 167.423142 per ms 
01:01:38.680 16  switches: flows:  629146 629892 626441 625053 634414 638499 619264 626580 618913 627030 627246 622891 632938 635740 628344 617300  total = 167.047263 per ms 
01:02:38.781 16  switches: flows:  620512 618097 615141 623578 622157 615118 620399 611896 616463 616233 610434 616210 623040 631729 620742 611464  total = 164.610374 per ms 
01:03:38.883 16  switches: flows:  631763 621174 621577 610225 625302 631738 632351 625702 620052 628085 627049 618616 632278 622221 624511 626510  total = 166.372833 per ms 
01:04:38.988 16  switches: flows:  633010 625206 626801 624625 622486 642554 625869 629051 630710 627631 619522 630339 623718 637246 619069 628485  total = 167.147457 per ms 
01:05:39.090 16  switches: flows:  684249 668603 671506 679431 673427 680119 663260 675057 665947 676770 669767 673221 679964 677019 668332 676444  total = 179.416537 per ms 
01:06:39.191 16  switches: flows:  730408 716621 719573 719697 716878 737389 725016 723073 729136 739031 723678 726790 730779 733712 715277 724699  total = 193.203272 per ms 
01:07:39.292 16  switches: flows:  687058 704290 699519 691248 688712 698872 692473 688890 686899 705535 697641 689260 695136 698644 694737 696464  total = 184.945324 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 164610.37/193203.27/172781.19/58429.66 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:07:39.302857" elapsed="0.001041"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-02T01:07:39.304353" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-10-02T01:07:39.304074" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-10-02T01:07:39.304026" elapsed="0.000573"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-02T01:07:39.304790" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-02T01:07:39.304716" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-10-02T01:07:39.304683" elapsed="0.000235"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-02T01:07:39.304981" elapsed="0.000027"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T01:07:39.306558" elapsed="0.000674"/>
</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-10-02T01:07:39.307656" elapsed="0.000321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T01:07:39.308254" elapsed="0.000255"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-02T01:07:39.305654" elapsed="0.002960"/>
</kw>
<msg time="2026-10-02T01:07:39.308835" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.33:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-02T00:57:32.573999" elapsed="606.734892"/>
</kw>
<status status="PASS" start="2026-10-02T00:57:32.573496" elapsed="606.735490"/>
</branch>
<status status="PASS" start="2026-10-02T00:57:32.572887" elapsed="606.736146"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.310044" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.33: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.33. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:58:38.376 16  switches: flows:  573431 572212 563341 572858 563717 568393 573386 569064 553646 556221 567448 550986 575610 568563 568876 562677  total = 151.007150 per ms 
00:59:38.478 16  switches: flows:  620300 627469 612978 622737 606191 620958 621247 617987 618274 624637 615320 627207 614708 623118 616218 619185  total = 164.864505 per ms 
01:00:38.579 16  switches: flows:  626935 626301 628855 624154 629421 631578 634509 616549 638188 631516 625324 625516 632348 640487 631973 618618  total = 167.423142 per ms 
01:01:38.680 16  switches: flows:  629146 629892 626441 625053 634414 638499 619264 626580 618913 627030 627246 622891 632938 635740 628344 617300  total = 167.047263 per ms 
01:02:38.781 16  switches: flows:  620512 618097 615141 623578 622157 615118 620399 611896 616463 616233 610434 616210 623040 631729 620742 611464  total = 164.610374 per ms 
01:03:38.883 16  switches: flows:  631763 621174 621577 610225 625302 631738 632351 625702 620052 628085 627049 618616 632278 622221 624511 626510  total = 166.372833 per ms 
01:04:38.988 16  switches: flows:  633010 625206 626801 624625 622486 642554 625869 629051 630710 627631 619522 630339 623718 637246 619069 628485  total = 167.147457 per ms 
01:05:39.090 16  switches: flows:  684249 668603 671506 679431 673427 680119 663260 675057 665947 676770 669767 673221 679964 677019 668332 676444  total = 179.416537 per ms 
01:06:39.191 16  switches: flows:  730408 716621 719573 719697 716878 737389 725016 723073 729136 739031 723678 726790 730779 733712 715277 724699  total = 193.203272 per ms 
01:07:39.292 16  switches: flows:  687058 704290 699519 691248 688712 698872 692473 688890 686899 705535 697641 689260 695136 698644 694737 696464  total = 184.945324 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 164610.37/193203.27/172781.19/58429.66 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:07:39.309467" elapsed="0.000729"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-02T01:07:39.310579" elapsed="0.000698"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-02T01:07:39.312099" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-02T01:07:39.312282" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 164610.37/193203.27/172781.19/58429.66 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-10-02T01:07:39.311684" elapsed="0.000648"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T01:07:39.313201" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 164610.37/193203.27/172781.19/58429.66 | 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-10-02T01:07:39.312720" elapsed="0.000537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.314491" 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-10-02T01:07:39.313756" elapsed="0.000847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.315779" level="INFO">164610.37/193203.27/172781.19/58429.66</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:07:39.315043" elapsed="0.000848"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T01:07:39.316882" 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-10-02T01:07:39.316223" elapsed="0.000715"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T01:07:39.318012" level="INFO">@{result_value_list} = [ 164610.37 | 193203.27 | 172781.19 | 58429.66 ]</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-10-02T01:07:39.317348" elapsed="0.000720"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.319040" level="INFO">Length is 4.</msg>
<msg time="2026-10-02T01:07:39.319210" 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-10-02T01:07:39.318442" elapsed="0.000817"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.321036" level="INFO">min :: 164610.37</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:07:39.320113" elapsed="0.001033"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-02T01:07:39.319747" elapsed="0.001466"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.322730" level="INFO">max :: 193203.27</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:07:39.321794" elapsed="0.001047"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-02T01:07:39.321430" elapsed="0.001480"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.324475" level="INFO">avg :: 172781.19</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-10-02T01:07:39.323480" elapsed="0.001107"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-02T01:07:39.323077" elapsed="0.001577"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.326105" level="INFO">stdev :: 58429.66</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-10-02T01:07:39.325184" elapsed="0.001030"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-02T01:07:39.324821" elapsed="0.001461"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-02T01:07:39.319417" elapsed="0.006926"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.327603" level="INFO">${min} = 164610.37</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:07:39.326728" elapsed="0.000928"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.328828" level="INFO">${max} = 193203.27</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:07:39.327979" elapsed="0.000904"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.330410" level="INFO">${average} = 172781.19</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:07:39.329206" elapsed="0.001272"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.331747" level="INFO">${stdev} = 58429.66</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:07:39.330836" elapsed="0.000965"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.333017" level="INFO">${date} = 2026-10-02 01:07:39</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-02T01:07:39.332210" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.334260" level="INFO">CBench Result: 2026-10-02 01:07:39,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,164610.37,193203.27,172781.19,58429.66</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-10-02T01:07:39.333526" elapsed="0.000890"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-02T01:07:39.336338" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-02T01:07:39.335647" elapsed="0.000881"/>
</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-10-02T01:07:39.336912" elapsed="0.001446"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-02T01:07:39.334695" elapsed="0.003844"/>
</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-10-02T00:57:32.571310" elapsed="606.767350"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.339687" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-02T01:07:39.339006" elapsed="0.000794"/>
</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-10-02T01:07:39.340889" elapsed="0.000601"/>
</kw>
<status status="PASS" start="2026-10-02T01:07:39.340195" elapsed="0.001441"/>
</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-10-02T00:57:32.569410" elapsed="606.772297"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.345262" 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-10-02T01:07:39.344433" elapsed="0.001117"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.347976" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-02T01:07:39.347269" elapsed="0.000792"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-02T01:07:39.348807" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-02T01:07:39.348293" elapsed="0.000633"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-02T01:07:39.351270" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-02T01:07:39.350798" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-10-02T01:07:39.350761" elapsed="0.000717"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-02T01:07:39.352239" 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-10-02T01:07:39.352514" 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-10-02T01:07:39.351871" elapsed="0.000699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.353720" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.33 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.102" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:07:39.352949" elapsed="0.000888"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-02T01:07:39.354995" 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-10-02T01:07:39.354194" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-02T01:07:39.356906" level="INFO">Length is 0.</msg>
<msg time="2026-10-02T01:07:39.357080" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-02T01:07:39.356243" elapsed="0.000886"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T01:07:39.357470" elapsed="0.000635"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-02T01:07:39.359928" level="INFO">Logging into '10.30.171.102:22' as 'jenkins'.</msg>
<msg time="2026-10-02T01:07:39.965209" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Oct  2 01:07:39 UTC 2026

  System load:  0.71               Processes:             105
  Usage of /:   20.4% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.102
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Fri Oct  2 00:57:33 2026 from 10.30.170.170
[?2004h[jenkins@releng-63164-414-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-02T01:07:39.359275" elapsed="0.606185"/>
</kw>
<msg time="2026-10-02T01:07:39.965589" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T01:07:39.358476" elapsed="0.607208"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-02T01:07:39.355493" elapsed="0.610322"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-02T01:07:39.966516" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.33 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-02T01:17:46.004956" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-02T01:17:46.005639" level="INFO">${stdout} = </msg>
<msg time="2026-10-02T01:17:46.005739" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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-10-02T01:07:39.966129" elapsed="606.039676"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T01:17:46.006274" elapsed="0.000703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.008161" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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.33. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:08:45.090 16  switches: flows:  100046 100466 99258 99582 99302 99159 99893 99645 99360 97612 98840 99273 96713 95599 98058 98952  total = 26.362633 per ms 
01:09:45.190 16  switches: flows:  99132 97808 99320 95806 96233 96898 97006 100111 96680 94983 97085 94726 94183 96612 95290 97229  total = 25.775315 per ms 
01:10:45.291 16  switches: flows:  102623 99588 101730 97377 96264 98276 97799 98329 96429 96664 97522 97155 96535 97812 95883 98202  total = 26.092915 per ms 
01:11:45.391 16  switches: flows:  103438 99737 101599 98724 98262 98164 100956 99714 98761 97972 98589 98275 97975 99049 97513 98799  total = 26.414690 per ms 
01:12:45.491 16  switches: flows:  101360 98595 99678 96965 94540 97635 98934 97915 96923 96028 96542 97425 96007 97529 94190 99793  total = 25.957654 per ms 
01:13:45.591 16  switches: flows:  104773 100265 103436 99365 99200 100220 101372 101887 100146 101526 99558 100684 99326 100733 99311 102606  total = 26.861954 per ms 
01:14:45.692 16  switches: flows:  102917 98772 101684 97505 97177 98106 99528 99587 98466 97652 98733 98240 97993 98136 97837 99617  total = 26.321899 per ms 
01:15:45.792 16  switches: flows:  99690 98096 102657 95991 95328 99976 98423 98073 94400 93952 94960 95231 94229 98575 93414 98227  total = 25.810625 per ms 
01:16:45.892 16  switches: flows:  102239 99767 101669 96797 97032 98634 99501 97792 95062 93688 93368 96387 94556 98357 93612 98035  total = 25.898391 per ms 
01:17:45.993 16  switches: flows:  100455 97138 99104 96768 94839 95399 96863 95731 93847 93094 93300 95377 93089 96386 91076 95635  total = 25.425926 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25425.93/26861.95/26062.15/8696.46 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:17:46.007467" elapsed="0.001030"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-02T01:17:46.008926" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-10-02T01:17:46.008662" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-10-02T01:17:46.008615" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-02T01:17:46.009333" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-10-02T01:17:46.009236" elapsed="0.000211"/>
</branch>
<status status="NOT RUN" start="2026-10-02T01:17:46.009204" elapsed="0.000288"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-02T01:17:46.009555" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-02T01:17:46.011127" elapsed="0.000704"/>
</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-10-02T01:17:46.012205" elapsed="0.000443"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-02T01:17:46.012943" elapsed="0.000204"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-02T01:17:46.010197" elapsed="0.003056"/>
</kw>
<msg time="2026-10-02T01:17:46.013688" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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-10-02T01:07:39.349673" elapsed="606.664072"/>
</kw>
<status status="PASS" start="2026-10-02T01:07:39.348982" elapsed="606.664861"/>
</branch>
<status status="PASS" start="2026-10-02T01:07:39.348246" elapsed="606.665646"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.014995" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.33: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.33. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:08:45.090 16  switches: flows:  100046 100466 99258 99582 99302 99159 99893 99645 99360 97612 98840 99273 96713 95599 98058 98952  total = 26.362633 per ms 
01:09:45.190 16  switches: flows:  99132 97808 99320 95806 96233 96898 97006 100111 96680 94983 97085 94726 94183 96612 95290 97229  total = 25.775315 per ms 
01:10:45.291 16  switches: flows:  102623 99588 101730 97377 96264 98276 97799 98329 96429 96664 97522 97155 96535 97812 95883 98202  total = 26.092915 per ms 
01:11:45.391 16  switches: flows:  103438 99737 101599 98724 98262 98164 100956 99714 98761 97972 98589 98275 97975 99049 97513 98799  total = 26.414690 per ms 
01:12:45.491 16  switches: flows:  101360 98595 99678 96965 94540 97635 98934 97915 96923 96028 96542 97425 96007 97529 94190 99793  total = 25.957654 per ms 
01:13:45.591 16  switches: flows:  104773 100265 103436 99365 99200 100220 101372 101887 100146 101526 99558 100684 99326 100733 99311 102606  total = 26.861954 per ms 
01:14:45.692 16  switches: flows:  102917 98772 101684 97505 97177 98106 99528 99587 98466 97652 98733 98240 97993 98136 97837 99617  total = 26.321899 per ms 
01:15:45.792 16  switches: flows:  99690 98096 102657 95991 95328 99976 98423 98073 94400 93952 94960 95231 94229 98575 93414 98227  total = 25.810625 per ms 
01:16:45.892 16  switches: flows:  102239 99767 101669 96797 97032 98634 99501 97792 95062 93688 93368 96387 94556 98357 93612 98035  total = 25.898391 per ms 
01:17:45.993 16  switches: flows:  100455 97138 99104 96768 94839 95399 96863 95731 93847 93094 93300 95377 93089 96386 91076 95635  total = 25.425926 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25425.93/26861.95/26062.15/8696.46 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:17:46.014397" elapsed="0.000748"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-02T01:17:46.015542" elapsed="0.000707"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-02T01:17:46.017121" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-02T01:17:46.017334" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25425.93/26861.95/26062.15/8696.46 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-10-02T01:17:46.016671" elapsed="0.000745"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T01:17:46.018263" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25425.93/26861.95/26062.15/8696.46 | 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-10-02T01:17:46.017769" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.019509" 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-10-02T01:17:46.018776" elapsed="0.000844"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.020747" level="INFO">25425.93/26861.95/26062.15/8696.46</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:17:46.020018" elapsed="0.000838"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T01:17:46.021966" 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-10-02T01:17:46.021221" elapsed="0.000801"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-02T01:17:46.023115" level="INFO">@{result_value_list} = [ 25425.93 | 26861.95 | 26062.15 | 8696.46 ]</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-10-02T01:17:46.022495" elapsed="0.000675"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.024169" level="INFO">Length is 4.</msg>
<msg time="2026-10-02T01:17:46.024396" 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-10-02T01:17:46.023564" elapsed="0.000886"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.026205" level="INFO">min :: 25425.93</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:17:46.025268" elapsed="0.001072"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-02T01:17:46.024899" elapsed="0.001548"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.027913" level="INFO">max :: 26861.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-10-02T01:17:46.026987" elapsed="0.001037"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-02T01:17:46.026626" elapsed="0.001465"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.029591" level="INFO">avg :: 26062.15</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:17:46.028666" elapsed="0.001037"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-02T01:17:46.028253" elapsed="0.001518"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.031226" level="INFO">stdev :: 8696.46</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-02T01:17:46.030315" elapsed="0.001047"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-02T01:17:46.029933" elapsed="0.001527"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-02T01:17:46.024574" elapsed="0.006944"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.032805" level="INFO">${min} = 25425.93</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:17:46.031914" elapsed="0.000945"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.034078" level="INFO">${max} = 26861.95</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:17:46.033191" elapsed="0.000941"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.035405" level="INFO">${average} = 26062.15</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:17:46.034520" elapsed="0.000941"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.036656" level="INFO">${stdev} = 8696.46</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-02T01:17:46.035789" elapsed="0.000921"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.037925" level="INFO">${date} = 2026-10-02 01:17:46</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-02T01:17:46.037108" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.039166" level="INFO">CBench Result: 2026-10-02 01:17:46,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25425.93,26861.95,26062.15,8696.46</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-10-02T01:17:46.038460" elapsed="0.000817"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-02T01:17:46.041238" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-02T01:17:46.040480" elapsed="0.000959"/>
</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-10-02T01:17:46.041793" elapsed="0.001289"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-02T01:17:46.039584" elapsed="0.003635"/>
</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-10-02T01:07:39.346180" elapsed="606.697186"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.044420" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-02T01:17:46.043750" elapsed="0.000810"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-02T01:17:46.047183" 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-10-02T01:17:46.046157" elapsed="0.001082"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-10-02T01:17:46.047704" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-10-02T01:17:46.047451" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-10-02T01:17:46.047409" elapsed="0.000417"/>
</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-10-02T01:17:46.048080" elapsed="0.000029"/>
</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-10-02T01:17:46.048308" elapsed="0.000028"/>
</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-10-02T01:17:46.048581" elapsed="0.000027"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-02T01:17:46.048791" elapsed="0.000026"/>
</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-10-02T01:17:46.049070" elapsed="0.000027"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="NOT RUN" start="2026-10-02T01:17:46.049277" elapsed="0.000044"/>
</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-10-02T01:17:46.049567" elapsed="0.000026"/>
</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 The given `tags` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-10-02T01:17:46.049884" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-02T01:17:46.049673" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-10-02T01:17:46.049651" elapsed="0.000328"/>
</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-10-02T01:17:46.045408" elapsed="0.004635"/>
</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-10-02T01:07:39.342709" elapsed="606.707390"/>
</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-10-02T00:47:23.635985" elapsed="1822.414668"/>
</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>
