<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-06-14T01:52:16.625286" 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-06-14T01:52:17.190537" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-06-14T01:52:17.190404" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-06-14T01:52:17.190374" elapsed="0.000264"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T01:52:17.190797" elapsed="0.000505"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-14T01:52:17.191787" level="INFO">Logging into '10.30.171.101:8101' as 'karaf'.</msg>
<msg time="2026-06-14T01:52:17.831573" 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-06-14T01:52:17.191473" elapsed="0.640379"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-14T01:52:17.880917" 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-06-14T01:52:17.832199" elapsed="0.048804"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-14T01:52:17.883019" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-14T01:52:17.883144" 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-06-14T01:52:17.881194" elapsed="0.001982"/>
</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-06-14T01:52:17.883339" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T01:52:17.883762" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T01:52:17.884557" 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-06-14T01:52:17.884185" elapsed="0.000427"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T01:52:17.884669" elapsed="0.000069"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.101
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-14T01:52:17.190027" elapsed="0.694878"/>
</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-06-14T01:52:17.186341" elapsed="0.698632"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T01:52:17.885607" 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-06-14T01:52:17.885181" elapsed="0.000483"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T01:52:17.886095" 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-06-14T01:52:17.885841" elapsed="0.000312"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-14T01:52:17.886743" 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-06-14T01:52:17.886308" elapsed="0.000492"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T01:52:17.887359" 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-06-14T01:52:17.887000" elapsed="0.000403"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-14T01:52:17.887951" 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-06-14T01:52:17.887550" elapsed="0.000428"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T01:52:17.888451" 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-06-14T01:52:17.888138" elapsed="0.000355"/>
</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-06-14T01:52:17.888848" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-14T01:52:17.888596" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T01:52:17.893888" 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-06-14T01:52:17.893419" elapsed="0.000496"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T01:52:17.895030" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T01:52:17.895115" 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-06-14T01:52:17.894475" elapsed="0.000665"/>
</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-06-14T01:52:17.895300" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T01:52:17.896803" level="INFO">Logging into '10.30.170.49:22' as 'jenkins'.</msg>
<msg time="2026-06-14T01:52:18.596012" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Jun 14 01:52:18 UTC 2026

  System load:  0.08               Processes:             112
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.49
  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-749-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-06-14T01:52:17.896230" elapsed="0.699981"/>
</kw>
<msg time="2026-06-14T01:52:18.596359" 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-06-14T01:52:17.895837" elapsed="0.700641"/>
</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-06-14T01:52:17.894123" elapsed="0.702502"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-14T01:52:18.604173" 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-06-14T01:52:18.596907" elapsed="0.009283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T01:52:18.606621" elapsed="0.000699"/>
</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-06-14T01:52:17.892868" elapsed="0.714616"/>
</kw>
<status status="PASS" start="2026-06-14T01:52:17.889306" elapsed="0.718275"/>
</branch>
<status status="PASS" start="2026-06-14T01:52:17.888565" elapsed="0.719087"/>
</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-06-14T01:52:18.608034" elapsed="0.001138"/>
</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-06-14T01:52:18.618161" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-06-14T01:52:18.618030" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-06-14T01:52:18.618000" elapsed="0.000245"/>
</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-06-14T01:52:18.621899" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-06-14T01:52:18.621780" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-06-14T01:52:18.621759" elapsed="0.000211"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T01:52:18.622111" elapsed="0.000466"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-14T01:52:18.623014" level="INFO">Logging into '10.30.171.101:8101' as 'karaf'.</msg>
<msg time="2026-06-14T01:52:18.797731" 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-06-14T01:52:18.622730" elapsed="0.175212"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-14T01:52:18.892774" 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-06-14T01:52:18.798252" elapsed="0.094613"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-14T01:52:18.902280" 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-06-14T01:52:18.902498" 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-06-14T01:52:18.893074" elapsed="0.009456"/>
</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-06-14T01:52:18.902676" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T01:52:18.903045" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T01:52:18.903785" 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-06-14T01:52:18.903418" elapsed="0.000426"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T01:52:18.903898" elapsed="0.000063"/>
</return>
<msg time="2026-06-14T01:52:18.904120" 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.171.101
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-14T01:52:18.621391" elapsed="0.282762"/>
</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-06-14T01:52:18.904304" elapsed="0.000631"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T01:52:18.905037" elapsed="0.000033"/>
</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-06-14T01:52:18.617649" elapsed="0.287524"/>
</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-06-14T01:52:18.909105" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-14T01:52:18.908944" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-06-14T01:52:18.908917" elapsed="0.000263"/>
</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-06-14T01:52:18.909317" elapsed="0.000488"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-14T01:52:18.910220" level="INFO">Logging into '10.30.171.101:8101' as 'karaf'.</msg>
<msg time="2026-06-14T01:52:19.070012" 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-06-14T01:52:18.909957" elapsed="0.160248"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-14T01:52:19.094171" 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-06-14T01:52:19.070500" elapsed="0.023801"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-14T01:52:19.096276" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-14T01:52:19.096392" 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-06-14T01:52:19.094555" elapsed="0.001866"/>
</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-06-14T01:52:19.096561" elapsed="0.000294"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T01:52:19.097008" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T01:52:19.097889" 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-06-14T01:52:19.097430" elapsed="0.000518"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T01:52:19.098004" elapsed="0.000071"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.101
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-14T01:52:18.908572" elapsed="0.189638"/>
</kw>
<status status="PASS" start="2026-06-14T01:52:17.184441" elapsed="1.913866"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T01:52:19.100668" 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-06-14T01:52:19.099407" elapsed="0.001327"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T01:52:19.102266" 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-06-14T01:52:19.101910" 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-06-14T01:52:19.102642" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-14T01:52:19.102395" elapsed="0.000305"/>
</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-06-14T01:52:19.105774" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-06-14T01:52:19.105505" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-06-14T01:52:19.105485" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-14T01:52:19.106216" 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-06-14T01:52:19.106342" 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-06-14T01:52:19.105996" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T01:52:19.106950" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.101 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.49" 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-06-14T01:52:19.106507" elapsed="0.000503"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T01:52:19.107634" 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-06-14T01:52:19.107150" elapsed="0.000510"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T01:52:19.108588" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T01:52:19.108681" 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-06-14T01:52:19.108257" elapsed="0.000448"/>
</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-06-14T01:52:19.108866" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T01:52:19.110121" level="INFO">Logging into '10.30.170.49:22' as 'jenkins'.</msg>
<msg time="2026-06-14T01:52:19.430533" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Jun 14 01:52:18 UTC 2026

  System load:  0.08               Processes:             112
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.49
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Jun 14 01:52:18 2026 from 10.30.171.177
[?2004h[jenkins@releng-48317-749-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-06-14T01:52:19.109740" elapsed="0.321032"/>
</kw>
<msg time="2026-06-14T01:52:19.430875" 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-06-14T01:52:19.109376" elapsed="0.321594"/>
</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-06-14T01:52:19.107880" elapsed="0.323220"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T01:52:19.431675" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.101 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-14T02:02:25.593183" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T02:02:25.593682" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T02:02:25.593847" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101: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-06-14T01:52:19.431344" elapsed="606.162568"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:02:25.594357" elapsed="0.000744"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.596216" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.101. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:24.687 16  switches: flows:  113448 117126 112671 115064 119033 117144 115856 110306 114740 113227 112836 109718 115133 112459 111347 112373  total = 30.374683 per ms 
01:54:24.788 16  switches: flows:  126377 126913 123778 126952 126912 126066 127396 124059 125027 123778 123622 122521 123352 122071 122576 124347  total = 33.206962 per ms 
01:55:24.888 16  switches: flows:  123735 126229 121719 124290 125627 127369 125339 122304 124718 123080 122656 120794 120412 121305 118987 123166  total = 32.807399 per ms 
01:56:24.988 16  switches: flows:  125279 127785 124520 128606 128105 128978 127331 124077 126879 124234 124746 123916 124309 123117 122412 124112  total = 33.417628 per ms 
01:57:25.089 16  switches: flows:  118431 120209 115712 121846 120177 121129 119966 115802 119834 117715 118298 116884 115986 114762 115799 117430  total = 31.447044 per ms 
01:58:25.189 16  switches: flows:  123511 127264 121276 124167 125689 126368 125207 120965 125794 122389 123725 120994 121510 119938 121019 123493  total = 32.833687 per ms 
01:59:25.289 16  switches: flows:  123744 125389 122567 124122 127817 126361 123854 121448 124771 124388 124112 121715 122161 121023 122769 123811  total = 32.945891 per ms 
02:00:25.390 16  switches: flows:  127348 122594 119980 122674 124190 122911 126366 124073 122677 122963 121925 121801 123468 122776 120471 118735  total = 32.694593 per ms 
02:01:25.490 16  switches: flows:  132094 130288 125553 128868 129574 128224 129567 127890 127697 129449 127878 128485 128027 126968 124274 125076  total = 34.108155 per ms 
02:02:25.590 16  switches: flows:  123560 119983 118208 121490 120139 120178 122837 122021 118815 120324 119273 120197 117547 119079 117873 118639  total = 31.949351 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31447.04/34108.15/32823.41/10965.69 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:02:25.595463" elapsed="0.001055"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-14T02:02:25.597057" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-06-14T02:02:25.596704" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-06-14T02:02:25.596649" elapsed="0.000627"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-14T02:02:25.597499" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-06-14T02:02:25.597414" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-06-14T02:02:25.597377" elapsed="0.000264"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-14T02:02:25.597718" elapsed="0.000059"/>
</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-06-14T02:02:25.602607" elapsed="0.000350"/>
</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-06-14T02:02:25.603106" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:02:25.603425" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-14T02:02:25.598431" elapsed="0.005147"/>
</kw>
<msg time="2026-06-14T02:02:25.603708" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101: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-06-14T01:52:19.103086" elapsed="606.500649"/>
</kw>
<status status="PASS" start="2026-06-14T01:52:19.102732" elapsed="606.501072"/>
</branch>
<status status="PASS" start="2026-06-14T01:52:19.102370" elapsed="606.501458"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.604259" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.101. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:24.687 16  switches: flows:  113448 117126 112671 115064 119033 117144 115856 110306 114740 113227 112836 109718 115133 112459 111347 112373  total = 30.374683 per ms 
01:54:24.788 16  switches: flows:  126377 126913 123778 126952 126912 126066 127396 124059 125027 123778 123622 122521 123352 122071 122576 124347  total = 33.206962 per ms 
01:55:24.888 16  switches: flows:  123735 126229 121719 124290 125627 127369 125339 122304 124718 123080 122656 120794 120412 121305 118987 123166  total = 32.807399 per ms 
01:56:24.988 16  switches: flows:  125279 127785 124520 128606 128105 128978 127331 124077 126879 124234 124746 123916 124309 123117 122412 124112  total = 33.417628 per ms 
01:57:25.089 16  switches: flows:  118431 120209 115712 121846 120177 121129 119966 115802 119834 117715 118298 116884 115986 114762 115799 117430  total = 31.447044 per ms 
01:58:25.189 16  switches: flows:  123511 127264 121276 124167 125689 126368 125207 120965 125794 122389 123725 120994 121510 119938 121019 123493  total = 32.833687 per ms 
01:59:25.289 16  switches: flows:  123744 125389 122567 124122 127817 126361 123854 121448 124771 124388 124112 121715 122161 121023 122769 123811  total = 32.945891 per ms 
02:00:25.390 16  switches: flows:  127348 122594 119980 122674 124190 122911 126366 124073 122677 122963 121925 121801 123468 122776 120471 118735  total = 32.694593 per ms 
02:01:25.490 16  switches: flows:  132094 130288 125553 128868 129574 128224 129567 127890 127697 129449 127878 128485 128027 126968 124274 125076  total = 34.108155 per ms 
02:02:25.590 16  switches: flows:  123560 119983 118208 121490 120139 120178 122837 122021 118815 120324 119273 120197 117547 119079 117873 118639  total = 31.949351 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31447.04/34108.15/32823.41/10965.69 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:02:25.603969" elapsed="0.000363"/>
</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-06-14T02:02:25.604479" elapsed="0.000384"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-14T02:02:25.605270" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-14T02:02:25.605363" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 31447.04/34108.15/32823.41/10965.69 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-06-14T02:02:25.605026" elapsed="0.000362"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:02:25.605811" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 31447.04/34108.15/32823.41/10965.69 | 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-06-14T02:02:25.605542" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.608202" 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-06-14T02:02:25.605985" elapsed="0.002274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.610622" level="INFO">31447.04/34108.15/32823.41/10965.69</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:02:25.608403" elapsed="0.002275"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:02:25.613048" 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-06-14T02:02:25.610846" elapsed="0.002242"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:02:25.615497" level="INFO">@{result_value_list} = [ 31447.04 | 34108.15 | 32823.41 | 10965.69 ]</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-06-14T02:02:25.613276" elapsed="0.002249"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.615998" level="INFO">Length is 4.</msg>
<msg time="2026-06-14T02:02:25.616092" 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-06-14T02:02:25.615677" elapsed="0.000439"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.620842" level="INFO">min :: 31447.04</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-06-14T02:02:25.616509" elapsed="0.004390"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-14T02:02:25.616377" elapsed="0.004557"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.625440" level="INFO">max :: 34108.15</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:02:25.621166" elapsed="0.004331"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-14T02:02:25.621027" elapsed="0.004504"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.630034" level="INFO">avg :: 32823.41</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:02:25.625762" elapsed="0.004328"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-14T02:02:25.625621" elapsed="0.004503"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.634654" level="INFO">stdev :: 10965.69</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-06-14T02:02:25.630343" elapsed="0.004367"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-14T02:02:25.630217" elapsed="0.004540"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-14T02:02:25.616187" elapsed="0.018605"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.638639" level="INFO">${min} = 31447.04</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-06-14T02:02:25.634952" elapsed="0.003714"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.642941" level="INFO">${max} = 34108.15</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-06-14T02:02:25.638836" elapsed="0.004132"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.646871" level="INFO">${average} = 32823.41</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-06-14T02:02:25.643121" elapsed="0.003778"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.650927" level="INFO">${stdev} = 10965.69</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-06-14T02:02:25.647050" elapsed="0.003904"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.651483" level="INFO">${date} = 2026-06-14 02:02:25</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-14T02:02:25.651114" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.652126" level="INFO">CBench Result: 2026-06-14 02:02:25,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,31447.04,34108.15,32823.41,10965.69</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-06-14T02:02:25.651656" elapsed="0.000526"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T02:02:25.653215" 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-06-14T02:02:25.652810" elapsed="0.000472"/>
</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-06-14T02:02:25.653433" elapsed="0.000470"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-14T02:02:25.652324" elapsed="0.001644"/>
</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-06-14T01:52:19.101223" elapsed="606.552806"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.654503" 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-06-14T02:02:25.654183" elapsed="0.000375"/>
</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-06-14T02:02:25.655093" elapsed="0.000310"/>
</kw>
<status status="PASS" start="2026-06-14T02:02:25.654793" elapsed="0.000684"/>
</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-06-14T01:52:19.098487" elapsed="606.557029"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.656831" 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-06-14T02:02:25.656429" elapsed="0.000459"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.658198" 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-06-14T02:02:25.657857" elapsed="0.000384"/>
</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-06-14T02:02:25.658572" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:02:25.658352" elapsed="0.000278"/>
</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-06-14T02:02:25.661508" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:02:25.661261" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-06-14T02:02:25.661235" elapsed="0.000352"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-14T02:02:25.661932" 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-06-14T02:02:25.662050" 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-06-14T02:02:25.661723" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.662625" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.101 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.49" 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-06-14T02:02:25.662211" elapsed="0.000471"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T02:02:25.663233" 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-06-14T02:02:25.662835" elapsed="0.000425"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T02:02:25.664156" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T02:02:25.664244" 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-06-14T02:02:25.663849" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T02:02:25.664408" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T02:02:25.665637" level="INFO">Logging into '10.30.170.49:22' as 'jenkins'.</msg>
<msg time="2026-06-14T02:02:26.244913" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Jun 14 02:02:25 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Jun 14 01:52:19 2026 from 10.30.171.177
[?2004h[jenkins@releng-48317-749-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-06-14T02:02:25.665281" elapsed="0.579834"/>
</kw>
<msg time="2026-06-14T02:02:26.245216" 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-06-14T02:02:25.664894" elapsed="0.580418"/>
</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-06-14T02:02:25.663460" elapsed="0.581981"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T02:02:26.246074" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.101 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-14T02:12:32.321510" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T02:12:32.321958" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T02:12:32.322027" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.101: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-06-14T02:02:26.245711" elapsed="606.076353"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:12:32.322377" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.323632" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.101:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.101. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:31.394 16  switches: flows:  530028 532678 531977 545369 527344 534863 535633 522353 530122 511915 523602 516197 534172 527325 527443 521060  total = 140.868017 per ms 
02:04:31.496 16  switches: flows:  583433 580790 584554 575464 591430 578643 591232 591277 558232 571397 601332 589621 579663 585196 586766 576928  total = 155.171172 per ms 
02:05:31.598 16  switches: flows:  627741 630850 637377 630419 622355 630055 627110 632384 621226 620497 634437 629967 626571 627527 619216 625031  total = 167.098688 per ms 
02:06:31.700 16  switches: flows:  611912 609937 602305 602044 612239 600380 605762 609747 612255 597131 624176 611638 599808 610091 604025 609630  total = 161.779336 per ms 
02:07:31.802 16  switches: flows:  576766 576630 592107 577799 562302 578564 560302 583797 575709 588168 567285 572438 577917 572829 591674 559823  total = 153.309555 per ms 
02:08:31.903 16  switches: flows:  647534 631018 644197 645536 639433 638969 631468 650315 631529 629826 647641 637601 643093 637166 651911 637835  total = 170.464629 per ms 
02:09:32.004 16  switches: flows:  616836 608173 622374 573685 609422 629253 602750 622191 607106 621393 617058 615223 608532 523235 622941 601613  total = 161.423200 per ms 
02:10:32.106 16  switches: flows:  644969 639310 642125 646697 645528 644147 642369 637980 635776 640492 649682 639914 642217 638671 641908 637336  total = 170.864096 per ms 
02:11:32.207 16  switches: flows:  646876 656090 655160 647601 652222 648344 654468 645028 651256 653267 662975 648356 655056 641073 658700 645644  total = 173.409167 per ms 
02:12:32.309 16  switches: flows:  661756 660143 664314 652825 658058 658652 649142 647463 647679 661512 676575 643006 658351 649937 651911 669528  total = 174.884673 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 153309.56/174884.67/165378.28/55619.94 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:12:32.323134" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-14T02:12:32.324230" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-06-14T02:12:32.324019" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-06-14T02:12:32.323982" elapsed="0.000399"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-14T02:12:32.324519" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-06-14T02:12:32.324465" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-06-14T02:12:32.324442" elapsed="0.000166"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-14T02:12:32.324653" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T02:12:32.328373" elapsed="0.000484"/>
</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-06-14T02:12:32.329083" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:12:32.329503" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-14T02:12:32.325143" elapsed="0.004580"/>
</kw>
<msg time="2026-06-14T02:12:32.329931" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.101: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-06-14T02:02:25.658978" elapsed="606.670993"/>
</kw>
<status status="PASS" start="2026-06-14T02:02:25.658655" elapsed="606.671385"/>
</branch>
<status status="PASS" start="2026-06-14T02:02:25.658331" elapsed="606.671742"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.330700" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.101:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.101. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:31.394 16  switches: flows:  530028 532678 531977 545369 527344 534863 535633 522353 530122 511915 523602 516197 534172 527325 527443 521060  total = 140.868017 per ms 
02:04:31.496 16  switches: flows:  583433 580790 584554 575464 591430 578643 591232 591277 558232 571397 601332 589621 579663 585196 586766 576928  total = 155.171172 per ms 
02:05:31.598 16  switches: flows:  627741 630850 637377 630419 622355 630055 627110 632384 621226 620497 634437 629967 626571 627527 619216 625031  total = 167.098688 per ms 
02:06:31.700 16  switches: flows:  611912 609937 602305 602044 612239 600380 605762 609747 612255 597131 624176 611638 599808 610091 604025 609630  total = 161.779336 per ms 
02:07:31.802 16  switches: flows:  576766 576630 592107 577799 562302 578564 560302 583797 575709 588168 567285 572438 577917 572829 591674 559823  total = 153.309555 per ms 
02:08:31.903 16  switches: flows:  647534 631018 644197 645536 639433 638969 631468 650315 631529 629826 647641 637601 643093 637166 651911 637835  total = 170.464629 per ms 
02:09:32.004 16  switches: flows:  616836 608173 622374 573685 609422 629253 602750 622191 607106 621393 617058 615223 608532 523235 622941 601613  total = 161.423200 per ms 
02:10:32.106 16  switches: flows:  644969 639310 642125 646697 645528 644147 642369 637980 635776 640492 649682 639914 642217 638671 641908 637336  total = 170.864096 per ms 
02:11:32.207 16  switches: flows:  646876 656090 655160 647601 652222 648344 654468 645028 651256 653267 662975 648356 655056 641073 658700 645644  total = 173.409167 per ms 
02:12:32.309 16  switches: flows:  661756 660143 664314 652825 658058 658652 649142 647463 647679 661512 676575 643006 658351 649937 651911 669528  total = 174.884673 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 153309.56/174884.67/165378.28/55619.94 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:12:32.330274" elapsed="0.000554"/>
</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-06-14T02:12:32.331047" elapsed="0.000505"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-14T02:12:32.332138" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-14T02:12:32.332269" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 153309.56/174884.67/165378.28/55619.94 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-06-14T02:12:32.331826" elapsed="0.000479"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:12:32.332905" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 153309.56/174884.67/165378.28/55619.94 | 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-06-14T02:12:32.332520" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.336448" 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-06-14T02:12:32.333148" elapsed="0.003358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.338898" level="INFO">153309.56/174884.67/165378.28/55619.94</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:12:32.336652" elapsed="0.002302"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:12:32.341330" 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-06-14T02:12:32.339101" elapsed="0.002257"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:12:32.343915" level="INFO">@{result_value_list} = [ 153309.56 | 174884.67 | 165378.28 | 55619.94 ]</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-06-14T02:12:32.341576" elapsed="0.002366"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.344408" level="INFO">Length is 4.</msg>
<msg time="2026-06-14T02:12:32.344502" 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-06-14T02:12:32.344096" elapsed="0.000430"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.349397" level="INFO">min :: 153309.56</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-06-14T02:12:32.344923" elapsed="0.004532"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-14T02:12:32.344793" elapsed="0.004697"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.354039" level="INFO">max :: 174884.67</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-06-14T02:12:32.349709" elapsed="0.004386"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-14T02:12:32.349582" elapsed="0.004548"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.358659" level="INFO">avg :: 165378.28</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-06-14T02:12:32.354345" elapsed="0.004371"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-14T02:12:32.354219" elapsed="0.004547"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.363352" level="INFO">stdev :: 55619.94</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-06-14T02:12:32.358987" elapsed="0.004422"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-14T02:12:32.358857" elapsed="0.004586"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-14T02:12:32.344590" elapsed="0.018885"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.367456" level="INFO">${min} = 153309.56</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-06-14T02:12:32.363640" elapsed="0.003844"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.371570" level="INFO">${max} = 174884.67</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-06-14T02:12:32.367638" elapsed="0.003960"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.375525" level="INFO">${average} = 165378.28</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-06-14T02:12:32.371767" elapsed="0.003785"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.379582" level="INFO">${stdev} = 55619.94</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-06-14T02:12:32.375706" elapsed="0.003904"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.380162" level="INFO">${date} = 2026-06-14 02:12:32</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-14T02:12:32.379787" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.380765" level="INFO">CBench Result: 2026-06-14 02:12:32,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,153309.56,174884.67,165378.28,55619.94</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-06-14T02:12:32.380342" elapsed="0.000480"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T02:12:32.381845" 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-06-14T02:12:32.381425" elapsed="0.000488"/>
</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-06-14T02:12:32.382064" elapsed="0.000463"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-14T02:12:32.380958" elapsed="0.001633"/>
</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-06-14T02:02:25.657218" elapsed="606.725432"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.383142" 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-06-14T02:12:32.382827" 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-06-14T02:12:32.383701" elapsed="0.000308"/>
</kw>
<status status="PASS" start="2026-06-14T02:12:32.383401" elapsed="0.000681"/>
</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-06-14T02:02:25.655848" elapsed="606.728272"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.385487" 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-06-14T02:12:32.385101" elapsed="0.000442"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.386772" 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-06-14T02:12:32.386429" elapsed="0.000386"/>
</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-06-14T02:12:32.387140" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:12:32.386923" elapsed="0.000274"/>
</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-06-14T02:12:32.390248" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:12:32.389999" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-06-14T02:12:32.389980" elapsed="0.000348"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-14T02:12:32.390635" 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-06-14T02:12:32.390779" 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-06-14T02:12:32.390459" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.391357" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.101 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.49" 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-06-14T02:12:32.390943" elapsed="0.000472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T02:12:32.391990" 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-06-14T02:12:32.391551" elapsed="0.000466"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T02:12:32.392903" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T02:12:32.392992" 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-06-14T02:12:32.392585" elapsed="0.000431"/>
</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-06-14T02:12:32.393156" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T02:12:32.394335" level="INFO">Logging into '10.30.170.49:22' as 'jenkins'.</msg>
<msg time="2026-06-14T02:12:32.979395" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Jun 14 02:12:32 UTC 2026

  System load:  0.15               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.49
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Jun 14 02:02:26 2026 from 10.30.171.177
[?2004h[jenkins@releng-48317-749-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-06-14T02:12:32.393984" elapsed="0.585607"/>
</kw>
<msg time="2026-06-14T02:12:32.979677" 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-06-14T02:12:32.393625" elapsed="0.586153"/>
</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-06-14T02:12:32.392216" elapsed="0.587682"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T02:12:32.980429" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.101 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-14T02:22:39.302151" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T02:22:39.302914" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T02:22:39.303046" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101: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-06-14T02:12:32.980124" elapsed="606.322985"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:22:39.303596" elapsed="0.000855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.305810" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.101. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:13:38.382 16  switches: flows:  124090 123403 122513 125611 122316 123172 124698 125566 120695 122635 119382 123219 123273 121331 118254 123254  total = 32.723533 per ms 
02:14:38.483 16  switches: flows:  125563 123173 125079 126298 122839 123771 124822 124617 125452 123204 120280 120940 122414 121319 118021 120645  total = 32.752237 per ms 
02:15:38.583 16  switches: flows:  128377 123286 127598 128761 126737 129805 129005 128141 127769 124294 124383 124031 126234 125690 121709 123396  total = 33.597493 per ms 
02:16:38.684 16  switches: flows:  129616 126275 129711 131318 128369 129182 130264 129661 129896 126392 126253 125404 127077 126452 124412 126370  total = 34.053987 per ms 
02:17:38.784 16  switches: flows:  130678 131733 127558 132342 129950 130648 130909 129093 130397 130374 127246 126029 127785 128334 124857 127860  total = 34.372461 per ms 
02:18:38.884 16  switches: flows:  131315 132545 131091 133379 131133 130826 131629 129565 133553 131663 130203 129094 130987 127932 125632 128242  total = 34.755122 per ms 
02:19:38.985 16  switches: flows:  129403 129570 127244 130861 127803 130038 130432 128092 130282 129182 127105 126399 127178 127809 124223 127463  total = 34.160844 per ms 
02:20:39.086 16  switches: flows:  128441 129440 124720 128399 124852 127120 128598 127421 129974 127125 124908 125604 125319 125109 123729 125768  total = 33.718680 per ms 
02:21:39.187 16  switches: flows:  128762 129431 127236 127916 127459 127670 127562 128782 128460 128590 127886 127609 127829 126113 124157 126823  total = 33.980731 per ms 
02:22:39.288 16  switches: flows:  132929 131640 130600 130347 129770 132876 131458 132103 131713 131622 130243 132017 132917 129628 128573 129856  total = 34.912919 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32752.24/34912.92/34033.83/11361.05 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:22:39.304913" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-14T02:22:39.306783" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-06-14T02:22:39.306374" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-06-14T02:22:39.306316" elapsed="0.000748"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-14T02:22:39.307297" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-06-14T02:22:39.307207" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-06-14T02:22:39.307168" elapsed="0.000277"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-14T02:22:39.307521" 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-06-14T02:22:39.313978" elapsed="0.000342"/>
</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-06-14T02:22:39.314471" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:22:39.314803" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-14T02:22:39.308294" elapsed="0.006669"/>
</kw>
<msg time="2026-06-14T02:22:39.315100" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101: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-06-14T02:12:32.387529" elapsed="606.927600"/>
</kw>
<status status="PASS" start="2026-06-14T02:12:32.387222" elapsed="606.927957"/>
</branch>
<status status="PASS" start="2026-06-14T02:12:32.386902" elapsed="606.928302"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.315651" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.101:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.101. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:13:38.382 16  switches: flows:  124090 123403 122513 125611 122316 123172 124698 125566 120695 122635 119382 123219 123273 121331 118254 123254  total = 32.723533 per ms 
02:14:38.483 16  switches: flows:  125563 123173 125079 126298 122839 123771 124822 124617 125452 123204 120280 120940 122414 121319 118021 120645  total = 32.752237 per ms 
02:15:38.583 16  switches: flows:  128377 123286 127598 128761 126737 129805 129005 128141 127769 124294 124383 124031 126234 125690 121709 123396  total = 33.597493 per ms 
02:16:38.684 16  switches: flows:  129616 126275 129711 131318 128369 129182 130264 129661 129896 126392 126253 125404 127077 126452 124412 126370  total = 34.053987 per ms 
02:17:38.784 16  switches: flows:  130678 131733 127558 132342 129950 130648 130909 129093 130397 130374 127246 126029 127785 128334 124857 127860  total = 34.372461 per ms 
02:18:38.884 16  switches: flows:  131315 132545 131091 133379 131133 130826 131629 129565 133553 131663 130203 129094 130987 127932 125632 128242  total = 34.755122 per ms 
02:19:38.985 16  switches: flows:  129403 129570 127244 130861 127803 130038 130432 128092 130282 129182 127105 126399 127178 127809 124223 127463  total = 34.160844 per ms 
02:20:39.086 16  switches: flows:  128441 129440 124720 128399 124852 127120 128598 127421 129974 127125 124908 125604 125319 125109 123729 125768  total = 33.718680 per ms 
02:21:39.187 16  switches: flows:  128762 129431 127236 127916 127459 127670 127562 128782 128460 128590 127886 127609 127829 126113 124157 126823  total = 33.980731 per ms 
02:22:39.288 16  switches: flows:  132929 131640 130600 130347 129770 132876 131458 132103 131713 131622 130243 132017 132917 129628 128573 129856  total = 34.912919 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32752.24/34912.92/34033.83/11361.05 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:22:39.315357" elapsed="0.000371"/>
</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-06-14T02:22:39.315904" elapsed="0.000393"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-14T02:22:39.316699" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-14T02:22:39.316809" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 32752.24/34912.92/34033.83/11361.05 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-06-14T02:22:39.316467" elapsed="0.000368"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:22:39.317252" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 32752.24/34912.92/34033.83/11361.05 | 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-06-14T02:22:39.316994" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.319896" 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-06-14T02:22:39.317426" elapsed="0.002538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.322481" level="INFO">32752.24/34912.92/34033.83/11361.05</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:22:39.320125" elapsed="0.002419"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:22:39.324997" 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-06-14T02:22:39.322736" elapsed="0.002289"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T02:22:39.327551" level="INFO">@{result_value_list} = [ 32752.24 | 34912.92 | 34033.83 | 11361.05 ]</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-06-14T02:22:39.325250" elapsed="0.002330"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.328085" level="INFO">Length is 4.</msg>
<msg time="2026-06-14T02:22:39.328176" 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-06-14T02:22:39.327736" elapsed="0.000464"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.333021" level="INFO">min :: 32752.24</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-06-14T02:22:39.328620" elapsed="0.004462"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-14T02:22:39.328487" elapsed="0.004630"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.337728" level="INFO">max :: 34912.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-06-14T02:22:39.333340" elapsed="0.004463"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-14T02:22:39.333210" elapsed="0.004628"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.342655" level="INFO">avg :: 34033.83</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-06-14T02:22:39.338139" elapsed="0.004577"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-14T02:22:39.338009" elapsed="0.004759"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.347592" level="INFO">stdev :: 11361.05</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-06-14T02:22:39.342988" elapsed="0.004664"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-14T02:22:39.342858" elapsed="0.004830"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-14T02:22:39.328276" elapsed="0.019442"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.351696" level="INFO">${min} = 32752.24</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-06-14T02:22:39.347898" elapsed="0.003826"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.355871" level="INFO">${max} = 34912.92</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-06-14T02:22:39.351897" elapsed="0.004002"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.359832" level="INFO">${average} = 34033.83</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-06-14T02:22:39.356053" elapsed="0.003807"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.363810" level="INFO">${stdev} = 11361.05</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-06-14T02:22:39.360016" elapsed="0.003823"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.364366" level="INFO">${date} = 2026-06-14 02:22:39</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-14T02:22:39.364007" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.364964" level="INFO">CBench Result: 2026-06-14 02:22:39,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,32752.24,34912.92,34033.83,11361.05</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-06-14T02:22:39.364538" elapsed="0.000483"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T02:22:39.366265" 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-06-14T02:22:39.365720" elapsed="0.000613"/>
</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-06-14T02:22:39.366484" elapsed="0.000497"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-14T02:22:39.365183" elapsed="0.001865"/>
</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-06-14T02:12:32.385874" elapsed="606.981234"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.367574" 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-06-14T02:22:39.367256" elapsed="0.000375"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-14T02:22:39.368886" 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-06-14T02:22:39.368374" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-14T02:22:39.369161" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-06-14T02:22:39.369005" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-06-14T02:22:39.368981" elapsed="0.000280"/>
</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-06-14T02:22:39.369413" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-14T02:22:39.369659" 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-06-14T02:22:39.369842" elapsed="0.000021"/>
</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-06-14T02:22:39.370060" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-06-14T02:22:39.370210" elapsed="0.000019"/>
</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-06-14T02:22:39.370355" elapsed="0.000019"/>
</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-06-14T02:22:39.370498" elapsed="0.000019"/>
</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-06-14T02:22:39.370724" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:22:39.370581" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-06-14T02:22:39.370564" elapsed="0.000253"/>
</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-06-14T02:22:39.368034" elapsed="0.002836"/>
</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-06-14T02:12:32.384537" elapsed="606.986379"/>
</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-06-14T01:52:16.626869" elapsed="1822.744671"/>
</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>
