<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-08-13T00:43:32.029481" 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-08-13T00:43:32.621696" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-08-13T00:43:32.621558" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-08-13T00:43:32.621529" elapsed="0.000264"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T00:43:32.621937" elapsed="0.000514"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-13T00:43:32.622916" level="INFO">Logging into '10.30.171.149:8101' as 'karaf'.</msg>
<msg time="2026-08-13T00:43:33.404172" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-13T00:43:32.622622" elapsed="0.781753"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-13T00:43:33.456205" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-13T00:43:33.404692" elapsed="0.051584"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-13T00:43:33.460938" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-13T00:43:33.461062" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-13T00:43:33.456481" elapsed="0.004612"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-13T00:43:33.461273" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T00:43:33.461686" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:43:33.462486" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:43:33.462085" elapsed="0.000462"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-13T00:43:33.462614" elapsed="0.000062"/>
</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.149
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-13T00:43:32.621165" elapsed="0.841643"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-08-13T00:43:32.617624" elapsed="0.845252"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-13T00:43:33.463529" 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-08-13T00:43:33.463086" elapsed="0.000515"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-13T00:43:33.464065" 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-08-13T00:43:33.463784" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-13T00:43:33.464777" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-13T00:43:33.464313" elapsed="0.000495"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-13T00:43:33.465350" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-13T00:43:33.464997" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-13T00:43:33.465989" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-13T00:43:33.465575" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-13T00:43:33.466554" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-13T00:43:33.466197" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-08-13T00:43:33.466938" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-08-13T00:43:33.466702" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-13T00:43:33.471768" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T00:43:33.471308" elapsed="0.000487"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-13T00:43:33.472897" level="INFO">Length is 0.</msg>
<msg time="2026-08-13T00:43:33.472992" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-13T00:43:33.472354" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T00:43:33.473178" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-13T00:43:33.474680" level="INFO">Logging into '10.30.170.233:22' as 'jenkins'.</msg>
<msg time="2026-08-13T00:43:33.976343" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 13 00:43:04 UTC 2026

  System load:  0.59               Processes:             113
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.233
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-63164-369-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-13T00:43:33.474122" elapsed="0.502411"/>
</kw>
<msg time="2026-08-13T00:43:33.976634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T00:43:33.473739" elapsed="0.502993"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-13T00:43:33.472003" elapsed="0.504870"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-13T00:43:33.984520" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-08-13T00:43:33.977127" elapsed="0.008857"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T00:43:33.986255" elapsed="0.000429"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-08-13T00:43:33.470778" elapsed="0.516001"/>
</kw>
<status status="PASS" start="2026-08-13T00:43:33.467280" elapsed="0.519555"/>
</branch>
<status status="PASS" start="2026-08-13T00:43:33.466675" elapsed="0.520211"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-13T00:43:33.987115" elapsed="0.000719"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-13T00:43:33.994050" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-08-13T00:43:33.993916" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-08-13T00:43:33.993889" elapsed="0.000244"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-13T00:43:33.997748" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-08-13T00:43:33.997623" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-08-13T00:43:33.997602" elapsed="0.000217"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T00:43:33.997953" elapsed="0.000462"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-13T00:43:33.998849" level="INFO">Logging into '10.30.171.149:8101' as 'karaf'.</msg>
<msg time="2026-08-13T00:43:34.233240" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-13T00:43:33.998584" elapsed="0.234799"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.331355" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-13T00:43:34.233672" elapsed="0.097789"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.353653" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-13T00:43:34.353936" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-13T00:43:34.331675" elapsed="0.022308"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-13T00:43:34.354236" elapsed="0.000324"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T00:43:34.354831" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:43:34.355729" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:43:34.355341" elapsed="0.000448"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-13T00:43:34.355843" elapsed="0.000056"/>
</return>
<msg time="2026-08-13T00:43:34.356057" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           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.149
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-13T00:43:33.997241" elapsed="0.358850"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-13T00:43:34.356242" elapsed="0.000532"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-13T00:43:34.356829" elapsed="0.000055"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-08-13T00:43:33.993596" elapsed="0.363396"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-13T00:43:34.360870" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-08-13T00:43:34.360712" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-08-13T00:43:34.360687" elapsed="0.000256"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T00:43:34.361077" elapsed="0.000499"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.362019" level="INFO">Logging into '10.30.171.149:8101' as 'karaf'.</msg>
<msg time="2026-08-13T00:43:34.548692" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-13T00:43:34.361727" elapsed="0.187116"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.573945" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-13T00:43:34.549102" elapsed="0.024950"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.576373" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-13T00:43:34.576518" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-13T00:43:34.574292" elapsed="0.002262"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-13T00:43:34.576728" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T00:43:34.577132" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:43:34.578049" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:43:34.577649" elapsed="0.000488"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-13T00:43:34.578201" elapsed="0.000069"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.149
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-13T00:43:34.360357" elapsed="0.218052"/>
</kw>
<status status="PASS" start="2026-08-13T00:43:32.615519" elapsed="1.962989"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:43:34.580831" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:43:34.579606" elapsed="0.001305"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-13T00:43:34.582706" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-13T00:43:34.582258" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-13T00:43:34.583152" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-08-13T00:43:34.582856" elapsed="0.000367"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-13T00:43:34.587154" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-08-13T00:43:34.586825" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-08-13T00:43:34.586799" elapsed="0.000457"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.587718" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-13T00:43:34.587424" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:43:34.588612" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.149 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.233" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:43:34.588076" elapsed="0.000608"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.589429" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T00:43:34.588862" elapsed="0.000616"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-13T00:43:34.590611" level="INFO">Length is 0.</msg>
<msg time="2026-08-13T00:43:34.590721" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-13T00:43:34.590207" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T00:43:34.590933" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.592402" level="INFO">Logging into '10.30.170.233:22' as 'jenkins'.</msg>
<msg time="2026-08-13T00:43:34.894005" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 13 00:43:04 UTC 2026

  System load:  0.59               Processes:             113
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.233
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Thu Aug 13 00:43:33 2026 from 10.30.170.103
[?2004h[jenkins@releng-63164-369-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-13T00:43:34.591980" elapsed="0.302256"/>
</kw>
<msg time="2026-08-13T00:43:34.894333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T00:43:34.591551" elapsed="0.302882"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-13T00:43:34.589744" elapsed="0.304843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-13T00:43:34.895187" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.149 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-13T00:53:41.009437" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-13T00:53:41.009963" level="INFO">${stdout} = </msg>
<msg time="2026-08-13T00:53:41.010067" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-13T00:43:34.894845" elapsed="606.115280"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T00:53:41.010580" elapsed="0.000751"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.012540" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149: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.149. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:44:40.097 16  switches: flows:  97641 100089 101980 100700 103154 99416 101163 99040 95209 96288 99688 100865 99276 98359 97050 96926  total = 26.447400 per ms 
00:45:40.198 16  switches: flows:  121419 123874 123046 121231 121875 121975 124432 121721 118875 117749 121247 119941 119441 119730 118980 118343  total = 32.177515 per ms 
00:46:40.298 16  switches: flows:  119466 124135 121190 122755 121444 124357 124885 122993 119751 119865 119247 118657 122112 121115 118318 117894  total = 32.249205 per ms 
00:47:40.398 16  switches: flows:  104876 105359 105481 106800 106446 108240 107714 105624 102835 102094 105271 103360 104974 102833 102914 102777  total = 27.913352 per ms 
00:48:40.499 16  switches: flows:  122929 123132 123976 123391 124149 122859 123641 122010 120493 119969 122611 122324 122043 120921 121358 122235  total = 32.579596 per ms 
00:49:40.599 16  switches: flows:  115614 116225 113493 115503 115503 115336 115138 114904 112970 113328 113643 114639 113487 113701 114172 113183  total = 30.463071 per ms 
00:50:40.699 16  switches: flows:  71160 71912 72286 71954 71058 70761 72391 70760 69104 69182 71127 70424 70242 70532 69618 69613  total = 18.837304 per ms 
00:51:40.800 16  switches: flows:  107936 108132 111218 111791 110431 108818 112291 108939 108846 109196 106906 106344 109672 107827 109559 109442  total = 29.073914 per ms 
00:52:40.900 16  switches: flows:  114340 115416 116832 114731 116590 115870 117129 114739 112326 114010 114956 115138 114086 113571 113757 112761  total = 30.553181 per ms 
00:53:41.000 16  switches: flows:  99606 101150 100071 100271 100513 100702 100280 100052 97527 99799 100194 98990 98814 98098 99414 97799  total = 26.510385 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 18837.30/32579.60/28928.61/10464.25 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.011729" elapsed="0.001120"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-13T00:53:41.013405" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-08-13T00:53:41.013046" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-08-13T00:53:41.012989" elapsed="0.000676"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-13T00:53:41.013902" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-08-13T00:53:41.013810" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-08-13T00:53:41.013773" elapsed="0.000278"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-13T00:53:41.014130" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T00:53:41.019076" elapsed="0.000365"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T00:53:41.019607" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T00:53:41.019922" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-13T00:53:41.014904" elapsed="0.005177"/>
</kw>
<msg time="2026-08-13T00:53:41.020217" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-13T00:43:34.583673" elapsed="606.436570"/>
</kw>
<status status="PASS" start="2026-08-13T00:43:34.583258" elapsed="606.437034"/>
</branch>
<status status="PASS" start="2026-08-13T00:43:34.582827" elapsed="606.437490"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.020787" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149: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.149. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:44:40.097 16  switches: flows:  97641 100089 101980 100700 103154 99416 101163 99040 95209 96288 99688 100865 99276 98359 97050 96926  total = 26.447400 per ms 
00:45:40.198 16  switches: flows:  121419 123874 123046 121231 121875 121975 124432 121721 118875 117749 121247 119941 119441 119730 118980 118343  total = 32.177515 per ms 
00:46:40.298 16  switches: flows:  119466 124135 121190 122755 121444 124357 124885 122993 119751 119865 119247 118657 122112 121115 118318 117894  total = 32.249205 per ms 
00:47:40.398 16  switches: flows:  104876 105359 105481 106800 106446 108240 107714 105624 102835 102094 105271 103360 104974 102833 102914 102777  total = 27.913352 per ms 
00:48:40.499 16  switches: flows:  122929 123132 123976 123391 124149 122859 123641 122010 120493 119969 122611 122324 122043 120921 121358 122235  total = 32.579596 per ms 
00:49:40.599 16  switches: flows:  115614 116225 113493 115503 115503 115336 115138 114904 112970 113328 113643 114639 113487 113701 114172 113183  total = 30.463071 per ms 
00:50:40.699 16  switches: flows:  71160 71912 72286 71954 71058 70761 72391 70760 69104 69182 71127 70424 70242 70532 69618 69613  total = 18.837304 per ms 
00:51:40.800 16  switches: flows:  107936 108132 111218 111791 110431 108818 112291 108939 108846 109196 106906 106344 109672 107827 109559 109442  total = 29.073914 per ms 
00:52:40.900 16  switches: flows:  114340 115416 116832 114731 116590 115870 117129 114739 112326 114010 114956 115138 114086 113571 113757 112761  total = 30.553181 per ms 
00:53:41.000 16  switches: flows:  99606 101150 100071 100271 100513 100702 100280 100052 97527 99799 100194 98990 98814 98098 99414 97799  total = 26.510385 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 18837.30/32579.60/28928.61/10464.25 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.020486" elapsed="0.000376"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-13T00:53:41.021014" elapsed="0.000425"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-13T00:53:41.021867" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-13T00:53:41.021962" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 18837.30/32579.60/28928.61/10464.25 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-13T00:53:41.021621" elapsed="0.000366"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T00:53:41.022414" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 18837.30/32579.60/28928.61/10464.25 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-13T00:53:41.022146" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.024887" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.022608" elapsed="0.002342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.027384" level="INFO">18837.30/32579.60/28928.61/10464.25</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.025100" elapsed="0.002346"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T00:53:41.029830" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-13T00:53:41.027612" elapsed="0.002246"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T00:53:41.032277" level="INFO">@{result_value_list} = [ 18837.30 | 32579.60 | 28928.61 | 10464.25 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-13T00:53:41.030067" elapsed="0.002238"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.032803" level="INFO">Length is 4.</msg>
<msg time="2026-08-13T00:53:41.032894" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-13T00:53:41.032481" elapsed="0.000437"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.037752" level="INFO">min :: 18837.30</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.033337" elapsed="0.004476"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-13T00:53:41.033200" elapsed="0.004649"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.042415" level="INFO">max :: 32579.60</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.038080" elapsed="0.004419"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-13T00:53:41.037945" elapsed="0.004589"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.047023" level="INFO">avg :: 28928.61</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.042758" elapsed="0.004321"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-13T00:53:41.042627" elapsed="0.004486"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.052117" level="INFO">stdev :: 10464.25</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.047332" elapsed="0.004843"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-13T00:53:41.047204" elapsed="0.005005"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-13T00:53:41.032992" elapsed="0.019251"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.056124" level="INFO">${min} = 18837.30</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T00:53:41.052405" elapsed="0.003745"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.060194" level="INFO">${max} = 32579.60</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T00:53:41.056314" elapsed="0.003907"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.064075" level="INFO">${average} = 28928.61</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T00:53:41.060373" elapsed="0.003728"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.067971" level="INFO">${stdev} = 10464.25</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T00:53:41.064252" elapsed="0.003745"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.068539" level="INFO">${date} = 2026-08-13 00:53:41</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-13T00:53:41.068161" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.069114" level="INFO">CBench Result: 2026-08-13 00:53:41,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,18837.30,32579.60,28928.61,10464.25</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.068712" elapsed="0.000456"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-13T00:53:41.070283" 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-08-13T00:53:41.069818" elapsed="0.000532"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-13T00:53:41.070517" elapsed="0.000463"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-13T00:53:41.069322" elapsed="0.001723"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-08-13T00:43:34.581421" elapsed="606.489684"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.071589" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-13T00:53:41.071254" elapsed="0.000391"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-13T00:53:41.072165" elapsed="0.000266"/>
</kw>
<status status="PASS" start="2026-08-13T00:53:41.071867" elapsed="0.000652"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-13T00:43:34.578683" elapsed="606.493875"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.073992" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.073610" elapsed="0.000438"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.075348" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-13T00:53:41.075017" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-13T00:53:41.075766" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-13T00:53:41.075538" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-13T00:53:41.078713" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-13T00:53:41.078450" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-08-13T00:53:41.078429" elapsed="0.000364"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-13T00:53:41.079127" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-13T00:53:41.078923" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.079844" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.149 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.233" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T00:53:41.079403" elapsed="0.000499"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-13T00:53:41.080499" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T00:53:41.080040" elapsed="0.000491"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-13T00:53:41.081486" level="INFO">Length is 0.</msg>
<msg time="2026-08-13T00:53:41.081578" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-13T00:53:41.081156" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T00:53:41.081746" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-13T00:53:41.082959" level="INFO">Logging into '10.30.170.233:22' as 'jenkins'.</msg>
<msg time="2026-08-13T00:53:41.651498" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 13 00:53:41 UTC 2026

  System load:  1.05               Processes:             105
  Usage of /:   20.2% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.233
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Thu Aug 13 00:43:34 2026 from 10.30.170.103
[?2004h[jenkins@releng-63164-369-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-13T00:53:41.082607" elapsed="0.569120"/>
</kw>
<msg time="2026-08-13T00:53:41.651821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T00:53:41.082248" elapsed="0.569673"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-13T00:53:41.080753" elapsed="0.571301"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-13T00:53:41.652693" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.149 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-13T01:03:48.688574" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-13T01:03:48.689103" level="INFO">${stdout} = </msg>
<msg time="2026-08-13T01:03:48.689190" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.149:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-13T00:53:41.652312" elapsed="607.036925"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T01:03:48.689613" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.690816" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.149: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.149. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:54:46.773 16  switches: flows:  660552 654726 658651 662971 653101 655883 651441 661395 640110 646368 641016 649838 645665 652029 653281 648910  total = 173.932283 per ms 
00:55:46.875 16  switches: flows:  608619 625436 585437 609558 609428 609010 600253 591686 593800 597031 600411 603626 604317 605605 606532 619394  total = 160.897945 per ms 
00:56:47.933 16  switches: flows:  598062 604266 595561 594586 594159 604139 582592 596936 588286 604676 604306 591067 604586 591849 602403 594758  total = 156.446805 per ms 
00:57:48.037 16  switches: flows:  674072 670383 655643 671229 657892 656022 653671 668539 650771 671087 661222 656833 672364 654849 661430 656050  total = 176.237901 per ms 
00:58:48.165 16  switches: flows:  491051 400432 554785 397930 528059 486726 488079 509874 507919 544510 504865 417549 492890 532549 400071 532344  total = 129.549271 per ms 
00:59:48.272 16  switches: flows:  386329 401830 399811 399888 315398 395348 409003 336425 406460 324621 393272 394451 411298 391503 407514 390775  total = 102.549408 per ms 
01:00:48.378 16  switches: flows:  706512 707243 693051 696063 687265 701395 702499 691834 693315 701248 711552 688570 703863 702065 702886 698435  total = 186.137077 per ms 
01:01:48.480 16  switches: flows:  674671 678258 663054 663095 677435 676700 667105 681552 675021 668907 676700 667537 661673 659619 670834 670108  total = 178.569246 per ms 
01:02:48.582 16  switches: flows:  578010 600485 583177 572802 581549 586403 584792 592034 585377 579480 590912 571889 578385 581742 589762 549665  total = 154.844067 per ms 
01:03:48.683 16  switches: flows:  513679 481729 543637 461736 538816 469315 443468 495764 548093 499671 464964 485089 532508 493888 470054 569981  total = 133.315328 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 102549.41/186137.08/153171.89/57070.68 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.690318" elapsed="0.000705"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-13T01:03:48.691353" elapsed="0.000049"/>
</return>
<status status="PASS" start="2026-08-13T01:03:48.691144" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-08-13T01:03:48.691111" elapsed="0.000399"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-13T01:03:48.691641" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-08-13T01:03:48.691591" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-08-13T01:03:48.691570" elapsed="0.000155"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-13T01:03:48.691767" elapsed="0.000017"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T01:03:48.695345" elapsed="0.000493"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T01:03:48.696039" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T01:03:48.696457" elapsed="0.000145"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-13T01:03:48.692206" elapsed="0.004469"/>
</kw>
<msg time="2026-08-13T01:03:48.696850" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.149:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-13T00:53:41.076168" elapsed="607.620719"/>
</kw>
<status status="PASS" start="2026-08-13T00:53:41.075851" elapsed="607.621102"/>
</branch>
<status status="PASS" start="2026-08-13T00:53:41.075514" elapsed="607.621470"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.697595" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.149: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.149. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:54:46.773 16  switches: flows:  660552 654726 658651 662971 653101 655883 651441 661395 640110 646368 641016 649838 645665 652029 653281 648910  total = 173.932283 per ms 
00:55:46.875 16  switches: flows:  608619 625436 585437 609558 609428 609010 600253 591686 593800 597031 600411 603626 604317 605605 606532 619394  total = 160.897945 per ms 
00:56:47.933 16  switches: flows:  598062 604266 595561 594586 594159 604139 582592 596936 588286 604676 604306 591067 604586 591849 602403 594758  total = 156.446805 per ms 
00:57:48.037 16  switches: flows:  674072 670383 655643 671229 657892 656022 653671 668539 650771 671087 661222 656833 672364 654849 661430 656050  total = 176.237901 per ms 
00:58:48.165 16  switches: flows:  491051 400432 554785 397930 528059 486726 488079 509874 507919 544510 504865 417549 492890 532549 400071 532344  total = 129.549271 per ms 
00:59:48.272 16  switches: flows:  386329 401830 399811 399888 315398 395348 409003 336425 406460 324621 393272 394451 411298 391503 407514 390775  total = 102.549408 per ms 
01:00:48.378 16  switches: flows:  706512 707243 693051 696063 687265 701395 702499 691834 693315 701248 711552 688570 703863 702065 702886 698435  total = 186.137077 per ms 
01:01:48.480 16  switches: flows:  674671 678258 663054 663095 677435 676700 667105 681552 675021 668907 676700 667537 661673 659619 670834 670108  total = 178.569246 per ms 
01:02:48.582 16  switches: flows:  578010 600485 583177 572802 581549 586403 584792 592034 585377 579480 590912 571889 578385 581742 589762 549665  total = 154.844067 per ms 
01:03:48.683 16  switches: flows:  513679 481729 543637 461736 538816 469315 443468 495764 548093 499671 464964 485089 532508 493888 470054 569981  total = 133.315328 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 102549.41/186137.08/153171.89/57070.68 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.697177" elapsed="0.000523"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-13T01:03:48.697912" elapsed="0.000511"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-13T01:03:48.698980" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-13T01:03:48.699105" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 102549.41/186137.08/153171.89/57070.68 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-13T01:03:48.698679" elapsed="0.000460"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T01:03:48.699725" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 102549.41/186137.08/153171.89/57070.68 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-13T01:03:48.699349" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.703073" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.699970" elapsed="0.003181"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.706545" level="INFO">102549.41/186137.08/153171.89/57070.68</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.703350" elapsed="0.003305"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T01:03:48.709203" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-13T01:03:48.706864" elapsed="0.002367"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T01:03:48.711680" level="INFO">@{result_value_list} = [ 102549.41 | 186137.08 | 153171.89 | 57070.68 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-13T01:03:48.709415" elapsed="0.002293"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.712164" level="INFO">Length is 4.</msg>
<msg time="2026-08-13T01:03:48.712252" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-13T01:03:48.711863" elapsed="0.000412"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.717104" level="INFO">min :: 102549.41</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.712669" elapsed="0.004492"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-13T01:03:48.712541" elapsed="0.004655"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.721707" level="INFO">max :: 186137.08</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.717414" elapsed="0.004349"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-13T01:03:48.717285" elapsed="0.004513"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.726277" level="INFO">avg :: 153171.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.722012" elapsed="0.004321"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-13T01:03:48.721885" elapsed="0.004483"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.730961" level="INFO">stdev :: 57070.68</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.726610" elapsed="0.004407"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-13T01:03:48.726468" elapsed="0.004584"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-13T01:03:48.712339" elapsed="0.018744"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.735035" level="INFO">${min} = 102549.41</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:03:48.731239" elapsed="0.003823"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.739121" level="INFO">${max} = 186137.08</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:03:48.735216" elapsed="0.003932"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.743018" level="INFO">${average} = 153171.89</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:03:48.739301" elapsed="0.003743"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.746952" level="INFO">${stdev} = 57070.68</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:03:48.743194" elapsed="0.003785"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.747503" level="INFO">${date} = 2026-08-13 01:03:48</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-13T01:03:48.747138" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.748080" level="INFO">CBench Result: 2026-08-13 01:03:48,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,102549.41,186137.08,153171.89,57070.68</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.747676" elapsed="0.000459"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-13T01:03:48.749209" 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-08-13T01:03:48.748786" elapsed="0.000489"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-13T01:03:48.749429" elapsed="0.000477"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-13T01:03:48.748295" elapsed="0.001676"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-08-13T00:53:41.074396" elapsed="607.675633"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.750501" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-13T01:03:48.750175" elapsed="0.000382"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-13T01:03:48.751077" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-08-13T01:03:48.750778" elapsed="0.000634"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-13T00:53:41.072873" elapsed="607.678592"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.752660" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.752263" elapsed="0.000454"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.754100" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-13T01:03:48.753769" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-13T01:03:48.754502" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-13T01:03:48.754264" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-13T01:03:48.757615" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-08-13T01:03:48.757349" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-08-13T01:03:48.757330" elapsed="0.000363"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-13T01:03:48.758015" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-13T01:03:48.757825" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.758735" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.149 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.233" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:03:48.758289" elapsed="0.000505"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-13T01:03:48.759326" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T01:03:48.758934" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-13T01:03:48.760249" level="INFO">Length is 0.</msg>
<msg time="2026-08-13T01:03:48.760337" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-13T01:03:48.759941" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T01:03:48.760515" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-13T01:03:48.761687" level="INFO">Logging into '10.30.170.233:22' as 'jenkins'.</msg>
<msg time="2026-08-13T01:03:49.354367" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 13 01:03:48 UTC 2026

  System load:  0.28               Processes:             105
  Usage of /:   20.2% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.233
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Thu Aug 13 00:53:41 2026 from 10.30.170.103
[?2004h[jenkins@releng-63164-369-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-13T01:03:48.761321" elapsed="0.593290"/>
</kw>
<msg time="2026-08-13T01:03:49.354705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T01:03:48.760985" elapsed="0.593806"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-13T01:03:48.759567" elapsed="0.595344"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-13T01:03:49.355453" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.149 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-13T01:13:55.381882" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-13T01:13:55.383763" level="INFO">${stdout} = </msg>
<msg time="2026-08-13T01:13:55.383844" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-13T01:03:49.355138" elapsed="606.028749"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T01:13:55.384224" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.385666" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149: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.149. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:04:54.474 16  switches: flows:  109212 109010 109577 108169 109113 109379 109663 108667 106291 107268 109018 108389 106747 106633 108192 104162  total = 28.824833 per ms 
01:05:54.575 16  switches: flows:  120110 121347 120818 120213 119486 120360 120660 121445 117107 117958 118033 120107 118238 117943 119641 116957  total = 31.787254 per ms 
01:06:54.675 16  switches: flows:  122070 124567 124939 123262 121964 122268 124855 123684 118941 119810 120937 122852 119503 122096 120840 120038  total = 32.489442 per ms 
01:07:54.776 16  switches: flows:  120194 120286 123026 120417 120305 119174 121575 120465 118485 117752 118787 120001 118138 118695 119922 115937  total = 31.832814 per ms 
01:08:54.876 16  switches: flows:  120246 119626 120170 120545 119496 118396 118189 119101 115636 117546 117061 118146 115521 117637 118505 115374  total = 31.467393 per ms 
01:09:54.976 16  switches: flows:  123648 123767 124084 123588 123091 123714 122487 123047 119862 120869 121532 123009 119327 120506 123497 119779  total = 32.542296 per ms 
01:10:55.077 16  switches: flows:  122328 123579 123834 122399 121443 121865 121191 122055 117447 120748 120272 122764 117224 117260 121995 118527  total = 32.195098 per ms 
01:11:55.177 16  switches: flows:  121789 122710 123694 121498 120802 121620 119843 120380 116938 120731 119264 119242 117676 117767 122418 118312  total = 32.024277 per ms 
01:12:55.278 16  switches: flows:  109501 109041 110143 108781 109214 108585 108672 108045 106348 107618 107636 108364 107173 106626 109441 107554  total = 28.830884 per ms 
01:13:55.378 16  switches: flows:  121883 121317 121131 123411 118721 119814 120937 119960 118626 120345 123015 120521 120583 121072 122626 117686  total = 32.140499 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28830.88/32542.30/31701.11/10620.46 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.385046" elapsed="0.000882"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-13T01:13:55.386295" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-08-13T01:13:55.386077" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-08-13T01:13:55.386040" elapsed="0.000393"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-13T01:13:55.386593" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-08-13T01:13:55.386540" elapsed="0.000118"/>
</branch>
<status status="NOT RUN" start="2026-08-13T01:13:55.386517" elapsed="0.000184"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-13T01:13:55.386759" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-13T01:13:55.390863" elapsed="0.000547"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-13T01:13:55.391664" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-13T01:13:55.392109" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-13T01:13:55.387287" elapsed="0.005050"/>
</kw>
<msg time="2026-08-13T01:13:55.392550" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-13T01:03:48.754931" elapsed="606.637656"/>
</kw>
<status status="PASS" start="2026-08-13T01:03:48.754611" elapsed="606.638047"/>
</branch>
<status status="PASS" start="2026-08-13T01:03:48.754242" elapsed="606.638448"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.393386" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.149: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.149. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:04:54.474 16  switches: flows:  109212 109010 109577 108169 109113 109379 109663 108667 106291 107268 109018 108389 106747 106633 108192 104162  total = 28.824833 per ms 
01:05:54.575 16  switches: flows:  120110 121347 120818 120213 119486 120360 120660 121445 117107 117958 118033 120107 118238 117943 119641 116957  total = 31.787254 per ms 
01:06:54.675 16  switches: flows:  122070 124567 124939 123262 121964 122268 124855 123684 118941 119810 120937 122852 119503 122096 120840 120038  total = 32.489442 per ms 
01:07:54.776 16  switches: flows:  120194 120286 123026 120417 120305 119174 121575 120465 118485 117752 118787 120001 118138 118695 119922 115937  total = 31.832814 per ms 
01:08:54.876 16  switches: flows:  120246 119626 120170 120545 119496 118396 118189 119101 115636 117546 117061 118146 115521 117637 118505 115374  total = 31.467393 per ms 
01:09:54.976 16  switches: flows:  123648 123767 124084 123588 123091 123714 122487 123047 119862 120869 121532 123009 119327 120506 123497 119779  total = 32.542296 per ms 
01:10:55.077 16  switches: flows:  122328 123579 123834 122399 121443 121865 121191 122055 117447 120748 120272 122764 117224 117260 121995 118527  total = 32.195098 per ms 
01:11:55.177 16  switches: flows:  121789 122710 123694 121498 120802 121620 119843 120380 116938 120731 119264 119242 117676 117767 122418 118312  total = 32.024277 per ms 
01:12:55.278 16  switches: flows:  109501 109041 110143 108781 109214 108585 108672 108045 106348 107618 107636 108364 107173 106626 109441 107554  total = 28.830884 per ms 
01:13:55.378 16  switches: flows:  121883 121317 121131 123411 118721 119814 120937 119960 118626 120345 123015 120521 120583 121072 122626 117686  total = 32.140499 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28830.88/32542.30/31701.11/10620.46 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.392906" elapsed="0.000605"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-13T01:13:55.393752" elapsed="0.000563"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-13T01:13:55.394929" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-13T01:13:55.395058" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28830.88/32542.30/31701.11/10620.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-08-13T01:13:55.394589" elapsed="0.000503"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T01:13:55.395765" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28830.88/32542.30/31701.11/10620.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-08-13T01:13:55.395353" elapsed="0.000450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.399420" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.396033" elapsed="0.003502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.402201" level="INFO">28830.88/32542.30/31701.11/10620.46</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.399764" elapsed="0.002507"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T01:13:55.404726" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-13T01:13:55.402425" elapsed="0.002329"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-13T01:13:55.407155" level="INFO">@{result_value_list} = [ 28830.88 | 32542.30 | 31701.11 | 10620.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-08-13T01:13:55.404945" elapsed="0.002238"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.407667" level="INFO">Length is 4.</msg>
<msg time="2026-08-13T01:13:55.407755" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-13T01:13:55.407339" elapsed="0.000439"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.412468" level="INFO">min :: 28830.88</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.408169" elapsed="0.004357"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-13T01:13:55.408039" elapsed="0.004523"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.417104" level="INFO">max :: 32542.30</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.412774" elapsed="0.004419"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-13T01:13:55.412648" elapsed="0.004582"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.421921" level="INFO">avg :: 31701.11</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.417469" elapsed="0.004508"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-13T01:13:55.417319" elapsed="0.004693"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.426894" level="INFO">stdev :: 10620.46</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-13T01:13:55.422223" elapsed="0.004759"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-13T01:13:55.422096" elapsed="0.004923"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-13T01:13:55.407849" elapsed="0.019200"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.431305" level="INFO">${min} = 28830.88</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:13:55.427237" elapsed="0.004096"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.435321" level="INFO">${max} = 32542.30</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:13:55.431531" elapsed="0.003817"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.439309" level="INFO">${average} = 31701.11</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:13:55.435517" elapsed="0.003819"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.443275" level="INFO">${stdev} = 10620.46</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-13T01:13:55.439516" elapsed="0.003786"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.443834" level="INFO">${date} = 2026-08-13 01:13:55</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-13T01:13:55.443481" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.444454" level="INFO">CBench Result: 2026-08-13 01:13:55,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28830.88,32542.30,31701.11,10620.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-08-13T01:13:55.444026" elapsed="0.000487"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-13T01:13:55.445671" 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-08-13T01:13:55.445179" elapsed="0.000562"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-13T01:13:55.445907" elapsed="0.000481"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-13T01:13:55.444681" elapsed="0.001788"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-08-13T01:03:48.753031" elapsed="606.693500"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.447136" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-13T01:13:55.446680" elapsed="0.000516"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-13T01:13:55.448428" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-13T01:13:55.447944" elapsed="0.000525"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-13T01:13:55.448723" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-08-13T01:13:55.448553" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-08-13T01:13:55.448531" elapsed="0.000288"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.448965" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.449121" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.449279" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.449516" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.449670" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.449827" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.449977" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-08-13T01:13:55.450210" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-08-13T01:13:55.450060" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-08-13T01:13:55.450043" elapsed="0.000242"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-08-13T01:13:55.447607" elapsed="0.002728"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-13T01:03:48.751766" elapsed="606.698627"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-08-13T00:43:32.031128" elapsed="1823.419854"/>
</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>
