<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-05-26T01:55:11.432350" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-05-26T01:55:12.004897" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-05-26T01:55:12.004751" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-05-26T01:55:12.004721" elapsed="0.000278"/>
</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-05-26T01:55:12.005189" elapsed="0.000551"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-26T01:55:12.006254" level="INFO">Logging into '10.30.170.247:8101' as 'karaf'.</msg>
<msg time="2026-05-26T01:55:12.998406" 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-05-26T01:55:12.005922" elapsed="0.992732"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-26T01:55:13.050922" 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-05-26T01:55:12.999001" elapsed="0.051999"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-26T01:55:13.052738" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-26T01:55:13.052847" 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-05-26T01:55:13.051182" elapsed="0.001694"/>
</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-05-26T01:55:13.053034" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:55:13.053427" elapsed="0.000225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:55:13.054175" 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-05-26T01:55:13.053816" elapsed="0.000413"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T01:55:13.054282" elapsed="0.000161"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.247
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-26T01:55:12.004369" elapsed="1.050212"/>
</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-05-26T01:55:12.000509" elapsed="1.054137"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T01:55:13.055263" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-05-26T01:55:13.054836" elapsed="0.000483"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T01:55:13.055742" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-05-26T01:55:13.055491" elapsed="0.000308"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-26T01:55:13.056370" 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-05-26T01:55:13.055952" elapsed="0.000447"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T01:55:13.056902" 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-05-26T01:55:13.056565" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-26T01:55:13.057478" 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-05-26T01:55:13.057091" elapsed="0.000414"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T01:55:13.058008" 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-05-26T01:55:13.057663" elapsed="0.000387"/>
</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-05-26T01:55:13.058390" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:55:13.058160" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T01:55:13.062985" 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-05-26T01:55:13.062581" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T01:55:13.064018" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T01:55:13.064100" 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-05-26T01:55:13.063586" elapsed="0.000539"/>
</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-05-26T01:55:13.064270" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T01:55:13.065656" level="INFO">Logging into '10.30.170.60:22' as 'jenkins'.</msg>
<msg time="2026-05-26T01:55:13.754779" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 01:55:13 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.60
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-48317-730-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-05-26T01:55:13.065140" elapsed="0.689796"/>
</kw>
<msg time="2026-05-26T01:55:13.755026" 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-05-26T01:55:13.064792" elapsed="0.690330"/>
</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-05-26T01:55:13.063217" elapsed="0.692026"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-05-26T01:55:13.762546" 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-05-26T01:55:13.755473" elapsed="0.008154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:55:13.763830" elapsed="0.000281"/>
</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-05-26T01:55:13.062035" elapsed="0.702140"/>
</kw>
<status status="PASS" start="2026-05-26T01:55:13.058741" elapsed="0.705487"/>
</branch>
<status status="PASS" start="2026-05-26T01:55:13.058111" elapsed="0.706160"/>
</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-05-26T01:55:13.764540" elapsed="0.000696"/>
</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-05-26T01:55:13.771663" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-05-26T01:55:13.771495" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-05-26T01:55:13.771461" elapsed="0.000312"/>
</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-05-26T01:55:13.776306" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-05-26T01:55:13.776192" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-05-26T01:55:13.776172" elapsed="0.000221"/>
</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-05-26T01:55:13.776525" elapsed="0.000445"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-26T01:55:13.777391" level="INFO">Logging into '10.30.170.247:8101' as 'karaf'.</msg>
<msg time="2026-05-26T01:55:13.955896" 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-05-26T01:55:13.777116" elapsed="0.178947"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.049739" 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-05-26T01:55:13.956309" elapsed="0.093518"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.054238" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           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-05-26T01:55:14.054509" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           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-05-26T01:55:14.050015" elapsed="0.004530"/>
</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-05-26T01:55:14.054689" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:55:14.055033" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:55:14.055750" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           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-05-26T01:55:14.055434" elapsed="0.000370"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T01:55:14.055853" elapsed="0.000049"/>
</return>
<msg time="2026-05-26T01:55:14.056046" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.247
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-26T01:55:13.775834" elapsed="0.280244"/>
</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-05-26T01:55:14.056223" elapsed="0.000526"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T01:55:14.056800" elapsed="0.000034"/>
</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-05-26T01:55:13.771051" elapsed="0.285881"/>
</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-05-26T01:55:14.060616" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-05-26T01:55:14.060473" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-05-26T01:55:14.060449" elapsed="0.000239"/>
</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-05-26T01:55:14.060818" elapsed="0.000438"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.061676" level="INFO">Logging into '10.30.170.247:8101' as 'karaf'.</msg>
<msg time="2026-05-26T01:55:14.246910" 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-05-26T01:55:14.061419" elapsed="0.185677"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.290134" 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-05-26T01:55:14.247416" elapsed="0.042796"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.292121" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-26T01:55:14.292231" 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-05-26T01:55:14.290462" elapsed="0.001798"/>
</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-05-26T01:55:14.292413" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:55:14.292778" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:55:14.293500" 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-05-26T01:55:14.293129" elapsed="0.000422"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T01:55:14.293606" elapsed="0.000063"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.247
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-26T01:55:14.060131" elapsed="0.233665"/>
</kw>
<status status="PASS" start="2026-05-26T01:55:11.998727" elapsed="2.295136"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:55:14.296399" 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-05-26T01:55:14.295013" elapsed="0.001453"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T01:55:14.297970" 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-05-26T01:55:14.297614" elapsed="0.000399"/>
</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-05-26T01:55:14.298368" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:55:14.298100" elapsed="0.000352"/>
</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-05-26T01:55:14.301490" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:55:14.301214" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-05-26T01:55:14.301194" elapsed="0.000379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.301920" 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-05-26T01:55:14.302044" 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-05-26T01:55:14.301708" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:55:14.302676" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.247 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.60" 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-05-26T01:55:14.302216" elapsed="0.000520"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.303411" 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-05-26T01:55:14.302877" elapsed="0.000561"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T01:55:14.304376" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T01:55:14.304469" 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-05-26T01:55:14.304019" elapsed="0.000475"/>
</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-05-26T01:55:14.304639" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.305862" level="INFO">Logging into '10.30.170.60:22' as 'jenkins'.</msg>
<msg time="2026-05-26T01:55:14.671721" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 01:55:13 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.60
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue May 26 01:55:13 2026 from 10.30.171.209
[?2004h[jenkins@releng-48317-730-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-05-26T01:55:14.305504" elapsed="0.366439"/>
</kw>
<msg time="2026-05-26T01:55:14.672034" 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-05-26T01:55:14.305135" elapsed="0.366995"/>
</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-05-26T01:55:14.303640" elapsed="0.368620"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-26T01:55:14.673181" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.247 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-26T02:05:20.793622" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-26T02:05:20.794164" level="INFO">${stdout} = </msg>
<msg time="2026-05-26T02:05:20.794271" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247: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-05-26T01:55:14.672523" elapsed="606.121851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T02:05:20.794838" elapsed="0.000739"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.796727" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.247. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:19.895 16  switches: flows:  112161 110514 110450 108100 107945 107570 107717 107011 106049 106799 106065 104546 106054 108323 107022 104616  total = 28.682367 per ms 
01:57:19.996 16  switches: flows:  122189 119202 120089 120300 119204 118468 119249 117199 114774 117540 114227 115635 114452 114266 116899 115545  total = 31.268438 per ms 
01:58:20.097 16  switches: flows:  104094 102269 104798 101498 100880 106158 102146 99748 98617 100427 98010 97376 99740 98908 101162 99416  total = 26.875924 per ms 
01:59:20.198 16  switches: flows:  120398 120197 120511 120586 115876 119366 115947 114432 114618 115688 111939 112825 117174 113454 116811 115198  total = 31.031851 per ms 
02:00:20.299 16  switches: flows:  119752 116797 117288 116797 114368 115187 114579 109758 111581 113767 109326 110867 113797 111337 112653 113200  total = 30.300321 per ms 
02:01:20.400 16  switches: flows:  116711 114996 115919 113070 115781 113930 112348 112959 110281 114229 109586 109864 111194 110890 110440 110546  total = 29.995661 per ms 
02:02:20.501 16  switches: flows:  122843 119898 120923 120405 121439 120783 119162 117708 117547 117620 115014 116139 117653 115613 116676 114380  total = 31.510710 per ms 
02:03:20.602 16  switches: flows:  119256 118217 118251 119120 116973 115938 116672 115118 113433 116031 113285 114129 113862 114887 115133 111826  total = 30.817342 per ms 
02:04:20.703 16  switches: flows:  113465 110599 110061 113438 109084 111674 110364 109076 108689 108686 107402 108864 108022 108616 107234 105692  total = 29.134136 per ms 
02:05:20.804 16  switches: flows:  110390 109583 108911 108867 108606 109090 106445 106241 107044 107405 104906 105183 105159 105092 106822 104539  total = 28.523795 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26875.92/31510.71/29939.80/10081.68 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:05:20.795936" elapsed="0.001087"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-26T02:05:20.797551" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-05-26T02:05:20.797215" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-05-26T02:05:20.797157" elapsed="0.000632"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-26T02:05:20.798005" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-05-26T02:05:20.797922" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-05-26T02:05:20.797886" elapsed="0.000259"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-26T02:05:20.798219" elapsed="0.000031"/>
</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-05-26T02:05:20.802822" elapsed="0.000341"/>
</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-05-26T02:05:20.803310" elapsed="0.000326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T02:05:20.803770" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-26T02:05:20.798936" elapsed="0.005013"/>
</kw>
<msg time="2026-05-26T02:05:20.804093" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247: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-05-26T01:55:14.298818" elapsed="606.505302"/>
</kw>
<status status="PASS" start="2026-05-26T01:55:14.298485" elapsed="606.505685"/>
</branch>
<status status="PASS" start="2026-05-26T01:55:14.298075" elapsed="606.506120"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.804693" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.247. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:19.895 16  switches: flows:  112161 110514 110450 108100 107945 107570 107717 107011 106049 106799 106065 104546 106054 108323 107022 104616  total = 28.682367 per ms 
01:57:19.996 16  switches: flows:  122189 119202 120089 120300 119204 118468 119249 117199 114774 117540 114227 115635 114452 114266 116899 115545  total = 31.268438 per ms 
01:58:20.097 16  switches: flows:  104094 102269 104798 101498 100880 106158 102146 99748 98617 100427 98010 97376 99740 98908 101162 99416  total = 26.875924 per ms 
01:59:20.198 16  switches: flows:  120398 120197 120511 120586 115876 119366 115947 114432 114618 115688 111939 112825 117174 113454 116811 115198  total = 31.031851 per ms 
02:00:20.299 16  switches: flows:  119752 116797 117288 116797 114368 115187 114579 109758 111581 113767 109326 110867 113797 111337 112653 113200  total = 30.300321 per ms 
02:01:20.400 16  switches: flows:  116711 114996 115919 113070 115781 113930 112348 112959 110281 114229 109586 109864 111194 110890 110440 110546  total = 29.995661 per ms 
02:02:20.501 16  switches: flows:  122843 119898 120923 120405 121439 120783 119162 117708 117547 117620 115014 116139 117653 115613 116676 114380  total = 31.510710 per ms 
02:03:20.602 16  switches: flows:  119256 118217 118251 119120 116973 115938 116672 115118 113433 116031 113285 114129 113862 114887 115133 111826  total = 30.817342 per ms 
02:04:20.703 16  switches: flows:  113465 110599 110061 113438 109084 111674 110364 109076 108689 108686 107402 108864 108022 108616 107234 105692  total = 29.134136 per ms 
02:05:20.804 16  switches: flows:  110390 109583 108911 108867 108606 109090 106445 106241 107044 107405 104906 105183 105159 105092 106822 104539  total = 28.523795 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26875.92/31510.71/29939.80/10081.68 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:05:20.804383" elapsed="0.000385"/>
</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-05-26T02:05:20.804915" elapsed="0.000359"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-26T02:05:20.805690" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-26T02:05:20.805783" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 26875.92/31510.71/29939.80/10081.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-05-26T02:05:20.805448" elapsed="0.000361"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:05:20.806216" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 26875.92/31510.71/29939.80/10081.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-05-26T02:05:20.805961" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.808653" 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-05-26T02:05:20.806400" elapsed="0.002310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.811051" level="INFO">26875.92/31510.71/29939.80/10081.68</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:05:20.808855" elapsed="0.002253"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:05:20.813485" 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-05-26T02:05:20.811255" elapsed="0.002258"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:05:20.815916" level="INFO">@{result_value_list} = [ 26875.92 | 31510.71 | 29939.80 | 10081.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-05-26T02:05:20.813721" elapsed="0.002223"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.816433" level="INFO">Length is 4.</msg>
<msg time="2026-05-26T02:05:20.816523" 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-05-26T02:05:20.816096" elapsed="0.000451"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.821234" level="INFO">min :: 26875.92</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-05-26T02:05:20.816946" elapsed="0.004345"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-26T02:05:20.816814" elapsed="0.004526"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.825826" level="INFO">max :: 31510.71</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-05-26T02:05:20.821562" elapsed="0.004321"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-26T02:05:20.821435" elapsed="0.004483"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.830408" level="INFO">avg :: 29939.80</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-05-26T02:05:20.826134" elapsed="0.004332"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-26T02:05:20.826007" elapsed="0.004493"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.835021" level="INFO">stdev :: 10081.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-05-26T02:05:20.830718" elapsed="0.004361"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-26T02:05:20.830592" elapsed="0.004522"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-26T02:05:20.816615" elapsed="0.018533"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.839119" level="INFO">${min} = 26875.92</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-05-26T02:05:20.835377" elapsed="0.003769"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.843207" level="INFO">${max} = 31510.71</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-05-26T02:05:20.839298" elapsed="0.003937"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.847235" level="INFO">${average} = 29939.80</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-05-26T02:05:20.843405" elapsed="0.003857"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.851187" level="INFO">${stdev} = 10081.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-05-26T02:05:20.847430" elapsed="0.003784"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.851758" level="INFO">${date} = 2026-05-26 02:05:20</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-26T02:05:20.851390" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.852388" level="INFO">CBench Result: 2026-05-26 02:05:20,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,26875.92,31510.71,29939.80,10081.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-05-26T02:05:20.851931" elapsed="0.000513"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T02:05:20.853507" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-05-26T02:05:20.853095" elapsed="0.000478"/>
</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-05-26T02:05:20.853721" elapsed="0.000454"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-26T02:05:20.852591" elapsed="0.001648"/>
</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-05-26T01:55:14.296925" elapsed="606.557374"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.854778" 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-05-26T02:05:20.854463" elapsed="0.000371"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-05-26T02:05:20.855359" elapsed="0.000268"/>
</kw>
<status status="PASS" start="2026-05-26T02:05:20.855041" elapsed="0.000657"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-05-26T01:55:14.294030" elapsed="606.561705"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.857020" 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-05-26T02:05:20.856640" elapsed="0.000445"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.858346" 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-05-26T02:05:20.858003" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-26T02:05:20.858722" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-26T02:05:20.858505" elapsed="0.000275"/>
</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-05-26T02:05:20.861701" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-26T02:05:20.861456" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-05-26T02:05:20.861431" elapsed="0.000349"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-26T02:05:20.862110" 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-05-26T02:05:20.862228" 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-05-26T02:05:20.861915" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.862822" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.247 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.60" 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-05-26T02:05:20.862403" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T02:05:20.863431" 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-05-26T02:05:20.863017" elapsed="0.000441"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T02:05:20.864386" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T02:05:20.864477" 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-05-26T02:05:20.864030" elapsed="0.000472"/>
</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-05-26T02:05:20.864641" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T02:05:20.865838" level="INFO">Logging into '10.30.170.60:22' as 'jenkins'.</msg>
<msg time="2026-05-26T02:05:21.458291" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 02:05:21 UTC 2026

  System load:  1.0                Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.60
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue May 26 01:55:14 2026 from 10.30.171.209
[?2004h[jenkins@releng-48317-730-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-05-26T02:05:20.865478" elapsed="0.593136"/>
</kw>
<msg time="2026-05-26T02:05:21.458770" 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-05-26T02:05:20.865122" elapsed="0.593798"/>
</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-05-26T02:05:20.863658" elapsed="0.595472"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-26T02:05:21.460099" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.247 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-26T02:15:33.748107" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-26T02:15:33.748773" level="INFO">${stdout} = </msg>
<msg time="2026-05-26T02:15:33.748881" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.247: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-05-26T02:05:21.459543" elapsed="612.289396"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T02:15:33.749449" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.751573" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.247:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.247. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:26.596 16  switches: flows:  434315 435472 445348 432940 443318 432971 408981 433018 426945 423254 413537 435612 420221 428225 427724 431506  total = 114.556450 per ms 
02:07:26.698 16  switches: flows:  457804 465653 452186 453749 461974 463817 459490 457691 455226 462337 464107 454451 467108 454537 475529 464421  total = 122.628055 per ms 
02:08:26.800 16  switches: flows:  492418 486726 485057 480677 483732 482974 485057 488438 485326 476490 482380 495860 488116 491311 485531 492872  total = 129.497782 per ms 
02:09:26.901 16  switches: flows:  577861 277215 462113 441286 434477 465058 416444 471603 361456 515985 347961 149210 434199 465149 447984 504265  total = 112.681622 per ms 
02:10:27.002 16  switches: flows:  430001 592594 442070 425102 582209 396366 449574 407101 565105 413120 555440 405850 553214 370806 562959 422623  total = 126.023478 per ms 
02:11:30.892 16  switches: flows:  475257 477743 477072 473303 487610 472622 476092 477791 477530 473703 475543 481223 470299 479611 472023 479675  total = 119.382254 per ms 
02:12:32.078 16  switches: flows:  395407 386922 400632 321648 366221 431306 289235 413190 344673 426265 320607 417948 376110 389611 373481 422785  total = 99.304749 per ms 
02:13:32.587 16  switches: flows:  497913 509865 499002 507778 491824 500214 504342 413725 505786 501331 496813 497426 510223 507045 500962 507100  total = 131.409578 per ms 
02:14:32.689 16  switches: flows:  547393 542430 536460 546132 545345 543652 545679 536767 543860 536711 548081 541265 540173 541006 515275 544982  total = 144.008170 per ms 
02:15:33.754 16  switches: flows:  482483 498777 483741 432319 494107 485310 420507 498011 493899 417553 484589 487898 494010 496585 489266 424419  total = 124.188313 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 99304.75/144008.17/123236.00/42729.91 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:15:33.750681" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-26T02:15:33.752677" elapsed="0.000174"/>
</return>
<status status="PASS" start="2026-05-26T02:15:33.752065" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-05-26T02:15:33.752006" elapsed="0.001039"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-26T02:15:33.753313" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-05-26T02:15:33.753217" elapsed="0.000230"/>
</branch>
<status status="NOT RUN" start="2026-05-26T02:15:33.753172" elapsed="0.000327"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-26T02:15:33.753573" 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-05-26T02:15:33.759529" elapsed="0.000863"/>
</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-05-26T02:15:33.760730" elapsed="0.000380"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T02:15:33.761491" elapsed="0.000259"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-26T02:15:33.754477" elapsed="0.007396"/>
</kw>
<msg time="2026-05-26T02:15:33.762230" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.247: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-05-26T02:05:20.859118" elapsed="612.903177"/>
</kw>
<status status="PASS" start="2026-05-26T02:05:20.858806" elapsed="612.903635"/>
</branch>
<status status="PASS" start="2026-05-26T02:05:20.858483" elapsed="612.904011"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.763741" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.247:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.247. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:26.596 16  switches: flows:  434315 435472 445348 432940 443318 432971 408981 433018 426945 423254 413537 435612 420221 428225 427724 431506  total = 114.556450 per ms 
02:07:26.698 16  switches: flows:  457804 465653 452186 453749 461974 463817 459490 457691 455226 462337 464107 454451 467108 454537 475529 464421  total = 122.628055 per ms 
02:08:26.800 16  switches: flows:  492418 486726 485057 480677 483732 482974 485057 488438 485326 476490 482380 495860 488116 491311 485531 492872  total = 129.497782 per ms 
02:09:26.901 16  switches: flows:  577861 277215 462113 441286 434477 465058 416444 471603 361456 515985 347961 149210 434199 465149 447984 504265  total = 112.681622 per ms 
02:10:27.002 16  switches: flows:  430001 592594 442070 425102 582209 396366 449574 407101 565105 413120 555440 405850 553214 370806 562959 422623  total = 126.023478 per ms 
02:11:30.892 16  switches: flows:  475257 477743 477072 473303 487610 472622 476092 477791 477530 473703 475543 481223 470299 479611 472023 479675  total = 119.382254 per ms 
02:12:32.078 16  switches: flows:  395407 386922 400632 321648 366221 431306 289235 413190 344673 426265 320607 417948 376110 389611 373481 422785  total = 99.304749 per ms 
02:13:32.587 16  switches: flows:  497913 509865 499002 507778 491824 500214 504342 413725 505786 501331 496813 497426 510223 507045 500962 507100  total = 131.409578 per ms 
02:14:32.689 16  switches: flows:  547393 542430 536460 546132 545345 543652 545679 536767 543860 536711 548081 541265 540173 541006 515275 544982  total = 144.008170 per ms 
02:15:33.754 16  switches: flows:  482483 498777 483741 432319 494107 485310 420507 498011 493899 417553 484589 487898 494010 496585 489266 424419  total = 124.188313 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 99304.75/144008.17/123236.00/42729.91 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:15:33.762835" elapsed="0.001143"/>
</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-05-26T02:15:33.764527" elapsed="0.000954"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-26T02:15:33.765976" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-26T02:15:33.766074" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 99304.75/144008.17/123236.00/42729.91 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-05-26T02:15:33.765682" elapsed="0.000416"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:15:33.766538" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 99304.75/144008.17/123236.00/42729.91 | 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-05-26T02:15:33.766256" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.768974" 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-05-26T02:15:33.766711" elapsed="0.002321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.771382" level="INFO">99304.75/144008.17/123236.00/42729.91</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:15:33.769178" elapsed="0.002261"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:15:33.773792" 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-05-26T02:15:33.771588" elapsed="0.002231"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:15:33.776298" level="INFO">@{result_value_list} = [ 99304.75 | 144008.17 | 123236.00 | 42729.91 ]</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-05-26T02:15:33.774056" elapsed="0.002323"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.776901" level="INFO">Length is 4.</msg>
<msg time="2026-05-26T02:15:33.776998" 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-05-26T02:15:33.776538" elapsed="0.000484"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.782381" level="INFO">min :: 99304.75</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-05-26T02:15:33.777519" elapsed="0.004924"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-26T02:15:33.777341" elapsed="0.005139"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.787252" level="INFO">max :: 144008.17</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-05-26T02:15:33.782718" elapsed="0.004592"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-26T02:15:33.782579" elapsed="0.004784"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.792163" level="INFO">avg :: 123236.00</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-05-26T02:15:33.787590" elapsed="0.004629"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-26T02:15:33.787458" elapsed="0.004800"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.796835" level="INFO">stdev :: 42729.91</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-05-26T02:15:33.792538" elapsed="0.004355"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-26T02:15:33.792405" elapsed="0.004523"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-26T02:15:33.777092" elapsed="0.019868"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.801021" level="INFO">${min} = 99304.75</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-05-26T02:15:33.797124" elapsed="0.003925"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.804934" level="INFO">${max} = 144008.17</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-05-26T02:15:33.801202" elapsed="0.003759"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.808778" level="INFO">${average} = 123236.00</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-05-26T02:15:33.805112" elapsed="0.003693"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.812739" level="INFO">${stdev} = 42729.91</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-05-26T02:15:33.808954" elapsed="0.003813"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.813308" level="INFO">${date} = 2026-05-26 02:15:33</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-26T02:15:33.812927" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.813916" level="INFO">CBench Result: 2026-05-26 02:15:33,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,99304.75,144008.17,123236.00,42729.91</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-05-26T02:15:33.813498" elapsed="0.000475"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T02:15:33.815106" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-05-26T02:15:33.814643" elapsed="0.000529"/>
</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-05-26T02:15:33.815322" 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-05-26T02:15:33.814135" elapsed="0.001748"/>
</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-05-26T02:05:20.857415" elapsed="612.958532"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.816495" 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-05-26T02:15:33.816119" elapsed="0.000436"/>
</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-05-26T02:15:33.817078" elapsed="0.000304"/>
</kw>
<status status="PASS" start="2026-05-26T02:15:33.816771" elapsed="0.000683"/>
</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-05-26T02:05:20.856036" elapsed="612.961457"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.818984" 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-05-26T02:15:33.818309" elapsed="0.000735"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.820349" 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-05-26T02:15:33.819976" elapsed="0.000417"/>
</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-05-26T02:15:33.820753" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-26T02:15:33.820526" 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-05-26T02:15:33.824035" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-26T02:15:33.823783" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-05-26T02:15:33.823763" elapsed="0.000352"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-26T02:15:33.824517" 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-05-26T02:15:33.824638" 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-05-26T02:15:33.824250" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.825250" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.247 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.60" 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-05-26T02:15:33.824808" elapsed="0.000547"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T02:15:33.825909" 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-05-26T02:15:33.825504" elapsed="0.000431"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T02:15:33.827046" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T02:15:33.827140" 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-05-26T02:15:33.826538" elapsed="0.000627"/>
</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-05-26T02:15:33.827309" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T02:15:33.828859" level="INFO">Logging into '10.30.170.60:22' as 'jenkins'.</msg>
<msg time="2026-05-26T02:15:34.433107" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 02:15:34 UTC 2026

  System load:  0.3                Processes:             106
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.60
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue May 26 02:05:21 2026 from 10.30.171.209
[?2004h[jenkins@releng-48317-730-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-05-26T02:15:33.828401" elapsed="0.604905"/>
</kw>
<msg time="2026-05-26T02:15:34.433415" 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-05-26T02:15:33.827904" elapsed="0.605591"/>
</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-05-26T02:15:33.826135" elapsed="0.607474"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-26T02:15:34.434115" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.247 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-26T02:25:40.707980" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-26T02:25:40.708382" level="INFO">${stdout} = </msg>
<msg time="2026-05-26T02:25:40.708452" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247: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-05-26T02:15:34.433823" elapsed="606.274665"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T02:25:40.708800" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.710014" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.247. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:16:39.797 16  switches: flows:  110276 109545 110836 110293 110862 109762 111996 109811 109291 107847 110222 107717 107774 108990 109488 106178  total = 29.181467 per ms 
02:17:39.899 16  switches: flows:  109034 108701 109395 107976 108755 109236 107092 107861 107471 108356 107361 107042 106513 106589 108013 105462  total = 28.699722 per ms 
02:18:40.000 16  switches: flows:  116892 114728 116984 117072 115313 114378 114685 113836 113555 114664 113909 112503 111552 112085 114587 113193  total = 30.447888 per ms 
02:19:40.101 16  switches: flows:  115852 114172 117125 117852 116058 114123 114052 115518 113458 115271 111751 113053 112629 111020 114429 111730  total = 30.417426 per ms 
02:20:40.202 16  switches: flows:  113921 112332 115872 114312 113821 113682 111960 113703 111880 111854 110803 110245 110103 109839 111617 110197  total = 29.885759 per ms 
02:21:40.303 16  switches: flows:  108610 112431 113239 112181 111684 111007 112544 111088 110149 109909 109583 111286 110143 111790 108938 110232  total = 29.530899 per ms 
02:22:40.405 16  switches: flows:  97705 101852 103129 99903 101096 100607 100725 101236 99717 99564 97387 99177 98336 100711 98302 99459  total = 26.604013 per ms 
02:23:40.506 16  switches: flows:  95085 98116 97022 96901 96403 96176 96060 96385 95819 96661 93688 93984 94503 95795 96074 95898  total = 25.533530 per ms 
02:24:40.607 16  switches: flows:  96850 99534 98465 98370 97935 96780 98242 97373 97653 95266 97058 95658 95070 97842 96188 95303  total = 25.849906 per ms 
02:25:40.709 16  switches: flows:  110153 110257 110448 111725 110779 109858 110814 109950 109110 109781 107088 107682 108177 108021 108138 107894  total = 29.115932 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25533.53/30447.89/28453.90/9660.32 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:25:40.709539" elapsed="0.001166"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-26T02:25:40.711027" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-05-26T02:25:40.710827" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-05-26T02:25:40.710793" elapsed="0.000383"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-26T02:25:40.711311" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-05-26T02:25:40.711259" elapsed="0.000132"/>
</branch>
<status status="NOT RUN" start="2026-05-26T02:25:40.711235" elapsed="0.000186"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-26T02:25:40.711465" elapsed="0.000019"/>
</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-05-26T02:25:40.715005" elapsed="0.000486"/>
</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-05-26T02:25:40.715697" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T02:25:40.716103" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-26T02:25:40.711909" elapsed="0.004406"/>
</kw>
<msg time="2026-05-26T02:25:40.716518" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247: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-05-26T02:15:33.821178" elapsed="606.895378"/>
</kw>
<status status="PASS" start="2026-05-26T02:15:33.820845" elapsed="606.895780"/>
</branch>
<status status="PASS" start="2026-05-26T02:15:33.820500" elapsed="606.896156"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.717293" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.247:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.247. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:16:39.797 16  switches: flows:  110276 109545 110836 110293 110862 109762 111996 109811 109291 107847 110222 107717 107774 108990 109488 106178  total = 29.181467 per ms 
02:17:39.899 16  switches: flows:  109034 108701 109395 107976 108755 109236 107092 107861 107471 108356 107361 107042 106513 106589 108013 105462  total = 28.699722 per ms 
02:18:40.000 16  switches: flows:  116892 114728 116984 117072 115313 114378 114685 113836 113555 114664 113909 112503 111552 112085 114587 113193  total = 30.447888 per ms 
02:19:40.101 16  switches: flows:  115852 114172 117125 117852 116058 114123 114052 115518 113458 115271 111751 113053 112629 111020 114429 111730  total = 30.417426 per ms 
02:20:40.202 16  switches: flows:  113921 112332 115872 114312 113821 113682 111960 113703 111880 111854 110803 110245 110103 109839 111617 110197  total = 29.885759 per ms 
02:21:40.303 16  switches: flows:  108610 112431 113239 112181 111684 111007 112544 111088 110149 109909 109583 111286 110143 111790 108938 110232  total = 29.530899 per ms 
02:22:40.405 16  switches: flows:  97705 101852 103129 99903 101096 100607 100725 101236 99717 99564 97387 99177 98336 100711 98302 99459  total = 26.604013 per ms 
02:23:40.506 16  switches: flows:  95085 98116 97022 96901 96403 96176 96060 96385 95819 96661 93688 93984 94503 95795 96074 95898  total = 25.533530 per ms 
02:24:40.607 16  switches: flows:  96850 99534 98465 98370 97935 96780 98242 97373 97653 95266 97058 95658 95070 97842 96188 95303  total = 25.849906 per ms 
02:25:40.709 16  switches: flows:  110153 110257 110448 111725 110779 109858 110814 109950 109110 109781 107088 107682 108177 108021 108138 107894  total = 29.115932 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25533.53/30447.89/28453.90/9660.32 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:25:40.716858" elapsed="0.000560"/>
</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-05-26T02:25:40.717626" elapsed="0.000516"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-26T02:25:40.718702" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-26T02:25:40.718833" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25533.53/30447.89/28453.90/9660.32 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-05-26T02:25:40.718384" elapsed="0.000484"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:25:40.719459" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25533.53/30447.89/28453.90/9660.32 | 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-05-26T02:25:40.719084" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.722854" 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-05-26T02:25:40.719704" elapsed="0.003229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.726387" level="INFO">25533.53/30447.89/28453.90/9660.32</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:25:40.723143" elapsed="0.003303"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:25:40.728791" 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-05-26T02:25:40.726596" elapsed="0.002223"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T02:25:40.731254" level="INFO">@{result_value_list} = [ 25533.53 | 30447.89 | 28453.90 | 9660.32 ]</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-05-26T02:25:40.729038" elapsed="0.002243"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.731761" level="INFO">Length is 4.</msg>
<msg time="2026-05-26T02:25:40.731850" 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-05-26T02:25:40.731452" elapsed="0.000422"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.736566" level="INFO">min :: 25533.53</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-05-26T02:25:40.732245" elapsed="0.004379"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-26T02:25:40.732119" elapsed="0.004540"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.742203" level="INFO">max :: 30447.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-05-26T02:25:40.736871" elapsed="0.005393"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-26T02:25:40.736745" elapsed="0.005554"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.746893" level="INFO">avg :: 28453.90</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T02:25:40.742528" elapsed="0.004422"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-26T02:25:40.742399" elapsed="0.004587"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.751680" level="INFO">stdev :: 9660.32</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-05-26T02:25:40.747195" elapsed="0.004542"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-26T02:25:40.747069" elapsed="0.004703"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-26T02:25:40.731935" elapsed="0.019867"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.755652" level="INFO">${min} = 25533.53</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-05-26T02:25:40.751958" elapsed="0.003721"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.759513" level="INFO">${max} = 30447.89</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-05-26T02:25:40.755831" elapsed="0.003709"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.763392" level="INFO">${average} = 28453.90</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T02:25:40.759692" elapsed="0.003728"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.767291" level="INFO">${stdev} = 9660.32</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-05-26T02:25:40.763572" elapsed="0.003746"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.767839" level="INFO">${date} = 2026-05-26 02:25:40</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-26T02:25:40.767492" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.768442" level="INFO">CBench Result: 2026-05-26 02:25:40,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25533.53,30447.89,28453.90,9660.32</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-05-26T02:25:40.768012" elapsed="0.000487"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T02:25:40.769605" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-05-26T02:25:40.769128" elapsed="0.000546"/>
</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-05-26T02:25:40.769826" elapsed="0.000480"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-26T02:25:40.768640" elapsed="0.001747"/>
</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-05-26T02:15:33.819381" elapsed="606.951066"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.770900" 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-05-26T02:25:40.770592" elapsed="0.000364"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-26T02:25:40.772398" 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-05-26T02:25:40.771830" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-05-26T02:25:40.772702" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-05-26T02:25:40.772526" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-05-26T02:25:40.772501" elapsed="0.000309"/>
</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-05-26T02:25:40.773025" elapsed="0.000026"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-05-26T02:25:40.773221" elapsed="0.000023"/>
</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-05-26T02:25:40.773431" elapsed="0.000024"/>
</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-05-26T02:25:40.773668" elapsed="0.000024"/>
</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-05-26T02:25:40.773846" elapsed="0.000023"/>
</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-05-26T02:25:40.774016" elapsed="0.000023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-26T02:25:40.774187" elapsed="0.000022"/>
</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-05-26T02:25:40.774464" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-26T02:25:40.774283" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-05-26T02:25:40.774263" elapsed="0.000287"/>
</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-05-26T02:25:40.771420" elapsed="0.003188"/>
</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-05-26T02:15:33.817802" elapsed="606.956860"/>
</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-05-26T01:55:11.433904" elapsed="1829.342941"/>
</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>
