<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-27T00:38:34.681970" 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-04-27T00:38:35.247162" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-27T00:38:35.247025" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-27T00:38:35.246986" elapsed="0.000273"/>
</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-04-27T00:38:35.247403" elapsed="0.000495"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-27T00:38:35.248387" level="INFO">Logging into '10.30.170.136:8101' as 'karaf'.</msg>
<msg time="2026-04-27T00:38:36.124414" 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-04-27T00:38:35.248089" elapsed="0.876496"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-27T00:38:36.173368" 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-04-27T00:38:36.124869" elapsed="0.048571"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-27T00:38:36.175209" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-27T00:38:36.175318" 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-04-27T00:38:36.173615" elapsed="0.001733"/>
</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-04-27T00:38:36.175504" elapsed="0.000208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:38:36.175872" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:38:36.176568" 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-04-27T00:38:36.176234" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T00:38:36.176674" elapsed="0.000053"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.136
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-27T00:38:35.246630" elapsed="0.930219"/>
</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-04-27T00:38:35.242937" elapsed="0.933976"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T00:38:36.177517" 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-04-27T00:38:36.177160" elapsed="0.000414"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T00:38:36.177972" 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-04-27T00:38:36.177726" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-27T00:38:36.178607" 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-04-27T00:38:36.178208" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T00:38:36.179220" 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-04-27T00:38:36.178804" elapsed="0.000460"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-27T00:38:36.179785" 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-04-27T00:38:36.179412" elapsed="0.000399"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T00:38:36.180308" 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-04-27T00:38:36.179971" elapsed="0.000379"/>
</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-04-27T00:38:36.180653" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-27T00:38:36.180438" elapsed="0.000268"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T00:38:36.185119" 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-04-27T00:38:36.184693" elapsed="0.000453"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T00:38:36.186481" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T00:38:36.186571" 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-04-27T00:38:36.185693" elapsed="0.000903"/>
</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-04-27T00:38:36.186743" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T00:38:36.188181" level="INFO">Logging into '10.30.171.188:22' as 'jenkins'.</msg>
<msg time="2026-04-27T00:38:36.936375" 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 Mon Apr 27 00:38:36 UTC 2026

  System load:  0.03               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.188
  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-702-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-04-27T00:38:36.187654" elapsed="0.748888"/>
</kw>
<msg time="2026-04-27T00:38:36.936641" 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-04-27T00:38:36.187304" elapsed="0.749436"/>
</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-04-27T00:38:36.185349" elapsed="0.751522"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-04-27T00:38:36.947749" 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-04-27T00:38:36.937137" elapsed="0.012422"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:38:36.949811" elapsed="0.000520"/>
</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-04-27T00:38:36.184163" elapsed="0.766307"/>
</kw>
<status status="PASS" start="2026-04-27T00:38:36.180785" elapsed="0.769766"/>
</branch>
<status status="PASS" start="2026-04-27T00:38:36.180411" elapsed="0.770207"/>
</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-04-27T00:38:36.950955" elapsed="0.001063"/>
</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-04-27T00:38:36.959772" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-27T00:38:36.959649" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-27T00:38:36.959624" elapsed="0.000226"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-27T00:38:36.963436" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-27T00:38:36.963323" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-27T00:38:36.963303" elapsed="0.000203"/>
</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-04-27T00:38:36.963636" elapsed="0.000455"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-27T00:38:36.964500" level="INFO">Logging into '10.30.170.136:8101' as 'karaf'.</msg>
<msg time="2026-04-27T00:38:37.180864" 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-04-27T00:38:36.964238" elapsed="0.216722"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.278946" 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-04-27T00:38:37.181152" elapsed="0.097887"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.284195" 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-04-27T00:38:37.284371" 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-04-27T00:38:37.279195" elapsed="0.005209"/>
</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-04-27T00:38:37.284546" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:38:37.284887" elapsed="0.000198"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:38:37.285537" 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-04-27T00:38:37.285222" elapsed="0.000371"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T00:38:37.285640" elapsed="0.000046"/>
</return>
<msg time="2026-04-27T00:38:37.285827" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.136
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-27T00:38:36.962950" elapsed="0.322908"/>
</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-04-27T00:38:37.286036" elapsed="0.000546"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T00:38:37.286642" elapsed="0.000032"/>
</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-04-27T00:38:36.959331" elapsed="0.327445"/>
</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-04-27T00:38:37.290730" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-27T00:38:37.290578" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-27T00:38:37.290549" elapsed="0.000274"/>
</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-04-27T00:38:37.290999" elapsed="0.000635"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.292082" level="INFO">Logging into '10.30.170.136:8101' as 'karaf'.</msg>
<msg time="2026-04-27T00:38:37.479397" 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-04-27T00:38:37.291792" elapsed="0.187698"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.501721" 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-04-27T00:38:37.479680" elapsed="0.022271"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.506618" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-27T00:38:37.506865" 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-04-27T00:38:37.502458" elapsed="0.004473"/>
</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-04-27T00:38:37.507299" elapsed="0.000443"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:38:37.508188" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:38:37.509416" 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-04-27T00:38:37.508882" elapsed="0.000588"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T00:38:37.509529" elapsed="0.000067"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.136
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-27T00:38:37.290215" elapsed="0.219512"/>
</kw>
<status status="PASS" start="2026-04-27T00:38:35.241215" elapsed="2.268583"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:38:37.512386" 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-04-27T00:38:37.510960" elapsed="0.001495"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T00:38:37.514029" 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-04-27T00:38:37.513634" elapsed="0.000447"/>
</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-04-27T00:38:37.514428" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-27T00:38:37.514168" elapsed="0.000320"/>
</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-04-27T00:38:37.517723" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-27T00:38:37.517472" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-27T00:38:37.517451" elapsed="0.000354"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.518178" 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-04-27T00:38:37.518301" 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-04-27T00:38:37.517938" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:38:37.518888" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.136 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.188" 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-04-27T00:38:37.518463" elapsed="0.000485"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.519574" 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-04-27T00:38:37.519104" elapsed="0.000497"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T00:38:37.520545" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T00:38:37.520633" 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-04-27T00:38:37.520217" elapsed="0.000440"/>
</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-04-27T00:38:37.520799" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.522052" level="INFO">Logging into '10.30.171.188:22' as 'jenkins'.</msg>
<msg time="2026-04-27T00:38:37.871639" 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 Mon Apr 27 00:38:36 UTC 2026

  System load:  0.03               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.188
  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: Mon Apr 27 00:38:36 2026 from 10.30.170.108
[?2004h[jenkins@releng-48317-702-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-04-27T00:38:37.521661" elapsed="0.350164"/>
</kw>
<msg time="2026-04-27T00:38:37.871913" 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-04-27T00:38:37.521309" elapsed="0.350770"/>
</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-04-27T00:38:37.519801" elapsed="0.352426"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T00:38:37.873055" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.136 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-27T00:48:43.986800" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T00:48:43.987394" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T00:48:43.987502" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136: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-04-27T00:38:37.872454" elapsed="606.115117"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:48:43.988035" elapsed="0.000765"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:43.990071" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.136. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:39:43.062 16  switches: flows:  114131 113494 116557 112748 112832 113945 112516 111123 108602 110255 109808 108791 110480 106953 111284 110291  total = 29.730167 per ms 
00:40:43.164 16  switches: flows:  129288 130039 130607 128917 127841 129806 127003 126793 122329 127094 124176 123657 127327 121460 124889 125712  total = 33.725953 per ms 
00:41:43.265 16  switches: flows:  125156 125853 126821 124534 124379 126013 124450 125712 123101 125384 121386 121926 123476 120080 123032 123826  total = 33.030312 per ms 
00:42:43.366 16  switches: flows:  124573 124704 124234 123751 125532 123074 124796 123573 123244 123037 121859 122390 121692 121003 121198 121743  total = 32.785312 per ms 
00:43:43.467 16  switches: flows:  127313 131123 131064 124977 129327 127118 127346 127279 125225 125681 122771 126049 126640 124315 127437 126537  total = 33.780317 per ms 
00:44:43.568 16  switches: flows:  127441 132315 129575 126679 127788 128043 127075 125411 126237 124380 123450 126881 125827 124321 126477 124793  total = 33.721908 per ms 
00:45:43.670 16  switches: flows:  127963 131961 132307 128271 128029 129093 128794 128141 128184 125498 123950 129141 127323 125710 128000 127123  total = 34.101015 per ms 
00:46:43.771 16  switches: flows:  127418 132309 130266 126270 127192 126825 126938 126160 126540 124350 123624 128412 126514 122295 127022 125528  total = 33.738038 per ms 
00:47:43.873 16  switches: flows:  127425 133131 129745 125998 128624 128321 127029 127171 125891 125847 123043 128277 127669 124137 127837 125579  total = 33.871905 per ms 
00:48:43.973 16  switches: flows:  126672 130488 128784 126040 127295 125959 124907 126167 125569 125041 122324 127758 126062 122381 125767 124638  total = 33.541504 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32785.31/34101.02/33588.47/11203.09 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:48:43.989221" elapsed="0.001152"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-27T00:48:43.990892" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-27T00:48:43.990575" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-27T00:48:43.990516" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-27T00:48:43.991356" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-27T00:48:43.991273" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-27T00:48:43.991236" elapsed="0.000264"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-27T00:48:43.991575" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T00:48:43.996224" elapsed="0.000468"/>
</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-04-27T00:48:43.996896" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:48:43.997322" elapsed="0.000168"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-27T00:48:43.992283" elapsed="0.005281"/>
</kw>
<msg time="2026-04-27T00:48:43.997741" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136: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-04-27T00:38:37.514895" elapsed="606.482883"/>
</kw>
<status status="PASS" start="2026-04-27T00:38:37.514538" elapsed="606.483307"/>
</branch>
<status status="PASS" start="2026-04-27T00:38:37.514142" elapsed="606.483736"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:43.998526" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.136. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:39:43.062 16  switches: flows:  114131 113494 116557 112748 112832 113945 112516 111123 108602 110255 109808 108791 110480 106953 111284 110291  total = 29.730167 per ms 
00:40:43.164 16  switches: flows:  129288 130039 130607 128917 127841 129806 127003 126793 122329 127094 124176 123657 127327 121460 124889 125712  total = 33.725953 per ms 
00:41:43.265 16  switches: flows:  125156 125853 126821 124534 124379 126013 124450 125712 123101 125384 121386 121926 123476 120080 123032 123826  total = 33.030312 per ms 
00:42:43.366 16  switches: flows:  124573 124704 124234 123751 125532 123074 124796 123573 123244 123037 121859 122390 121692 121003 121198 121743  total = 32.785312 per ms 
00:43:43.467 16  switches: flows:  127313 131123 131064 124977 129327 127118 127346 127279 125225 125681 122771 126049 126640 124315 127437 126537  total = 33.780317 per ms 
00:44:43.568 16  switches: flows:  127441 132315 129575 126679 127788 128043 127075 125411 126237 124380 123450 126881 125827 124321 126477 124793  total = 33.721908 per ms 
00:45:43.670 16  switches: flows:  127963 131961 132307 128271 128029 129093 128794 128141 128184 125498 123950 129141 127323 125710 128000 127123  total = 34.101015 per ms 
00:46:43.771 16  switches: flows:  127418 132309 130266 126270 127192 126825 126938 126160 126540 124350 123624 128412 126514 122295 127022 125528  total = 33.738038 per ms 
00:47:43.873 16  switches: flows:  127425 133131 129745 125998 128624 128321 127029 127171 125891 125847 123043 128277 127669 124137 127837 125579  total = 33.871905 per ms 
00:48:43.973 16  switches: flows:  126672 130488 128784 126040 127295 125959 124907 126167 125569 125041 122324 127758 126062 122381 125767 124638  total = 33.541504 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32785.31/34101.02/33588.47/11203.09 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:48:43.998091" elapsed="0.000537"/>
</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-04-27T00:48:43.998834" elapsed="0.000530"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-27T00:48:43.999897" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-27T00:48:44.000042" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 32785.31/34101.02/33588.47/11203.09 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-04-27T00:48:43.999584" elapsed="0.000495"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T00:48:44.000655" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 32785.31/34101.02/33588.47/11203.09 | 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-04-27T00:48:44.000292" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.004079" 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-04-27T00:48:44.000891" elapsed="0.003268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.007229" level="INFO">32785.31/34101.02/33588.47/11203.09</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:48:44.004361" elapsed="0.002943"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T00:48:44.009862" 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-04-27T00:48:44.007474" elapsed="0.002415"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T00:48:44.012461" level="INFO">@{result_value_list} = [ 32785.31 | 34101.02 | 33588.47 | 11203.09 ]</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-04-27T00:48:44.010095" elapsed="0.002394"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.012969" level="INFO">Length is 4.</msg>
<msg time="2026-04-27T00:48:44.013079" 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-04-27T00:48:44.012644" elapsed="0.000460"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.017926" level="INFO">min :: 32785.31</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-04-27T00:48:44.013549" elapsed="0.004452"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-27T00:48:44.013414" elapsed="0.004624"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.022560" level="INFO">max :: 34101.02</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-04-27T00:48:44.018260" elapsed="0.004356"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-27T00:48:44.018131" elapsed="0.004519"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.027181" level="INFO">avg :: 33588.47</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:48:44.022870" elapsed="0.004369"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-27T00:48:44.022741" elapsed="0.004533"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.032464" level="INFO">stdev :: 11203.09</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-04-27T00:48:44.027514" elapsed="0.005029"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-27T00:48:44.027384" elapsed="0.005207"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-27T00:48:44.013176" elapsed="0.019494"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.037398" level="INFO">${min} = 32785.31</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-04-27T00:48:44.032907" elapsed="0.004521"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.041581" level="INFO">${max} = 34101.02</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-04-27T00:48:44.037598" elapsed="0.004014"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.047315" level="INFO">${average} = 33588.47</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-04-27T00:48:44.041778" elapsed="0.005579"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.052373" level="INFO">${stdev} = 11203.09</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-04-27T00:48:44.047573" elapsed="0.004828"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.052936" level="INFO">${date} = 2026-04-27 00:48:44</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-27T00:48:44.052563" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.053632" level="INFO">CBench Result: 2026-04-27 00:48:44,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,32785.31,34101.02,33588.47,11203.09</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-04-27T00:48:44.053149" elapsed="0.000542"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T00:48:44.054854" 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-04-27T00:48:44.054407" elapsed="0.000516"/>
</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-04-27T00:48:44.055114" elapsed="0.000490"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-27T00:48:44.053849" elapsed="0.001823"/>
</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-04-27T00:38:37.512942" elapsed="606.542793"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.056241" 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-04-27T00:48:44.055888" elapsed="0.000410"/>
</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-04-27T00:48:44.056823" elapsed="0.000301"/>
</kw>
<status status="PASS" start="2026-04-27T00:48:44.056521" elapsed="0.000683"/>
</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-04-27T00:38:37.510022" elapsed="606.547222"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.058950" 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-04-27T00:48:44.058554" elapsed="0.000470"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.060354" 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-04-27T00:48:44.059965" elapsed="0.000436"/>
</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-04-27T00:48:44.061175" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-27T00:48:44.060522" elapsed="0.000728"/>
</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-04-27T00:48:44.064222" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-27T00:48:44.063956" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-27T00:48:44.063937" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-27T00:48:44.064658" 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-04-27T00:48:44.064780" 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-04-27T00:48:44.064445" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.065417" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.136 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.188" 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-04-27T00:48:44.064945" elapsed="0.000532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T00:48:44.066034" 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-04-27T00:48:44.065618" elapsed="0.000444"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T00:48:44.066999" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T00:48:44.067092" 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-04-27T00:48:44.066664" elapsed="0.000452"/>
</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-04-27T00:48:44.067257" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T00:48:44.068499" level="INFO">Logging into '10.30.171.188:22' as 'jenkins'.</msg>
<msg time="2026-04-27T00:48:44.698808" 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 Mon Apr 27 00:48:44 UTC 2026

  System load:  1.02               Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.188
  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: Mon Apr 27 00:38:37 2026 from 10.30.170.108
[?2004h[jenkins@releng-48317-702-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-04-27T00:48:44.068127" elapsed="0.630961"/>
</kw>
<msg time="2026-04-27T00:48:44.699210" 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-04-27T00:48:44.067758" elapsed="0.631574"/>
</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-04-27T00:48:44.066268" elapsed="0.633224"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T00:48:44.700222" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.136 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-27T00:58:50.862235" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T00:58:50.862797" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T00:58:50.862904" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.136: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-04-27T00:48:44.699790" elapsed="606.163171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:58:50.863467" elapsed="0.000785"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.865432" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.136:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.136. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:49:49.832 16  switches: flows:  538714 540438 539600 549704 541454 542101 547693 538438 524891 521643 526145 524112 533667 529280 530830 528351  total = 142.617683 per ms 
00:50:49.934 16  switches: flows:  517581 516455 517041 514235 507182 518099 527439 515207 504792 512970 512993 523352 517584 514312 527714 517310  total = 137.505964 per ms 
00:51:50.035 16  switches: flows:  584604 594261 592924 588947 594459 584657 580079 594482 585658 564024 586927 589668 587451 587655 588112 585431  total = 156.225467 per ms 
00:52:50.222 16  switches: flows:  572366 564245 566608 566045 568088 564639 560078 560369 557881 571462 562484 546432 560045 556266 560657 559455  total = 149.487209 per ms 
00:53:50.325 16  switches: flows:  548006 536756 546427 541796 533337 527745 538142 548418 533064 540367 542694 530102 544271 522100 545196 535304  total = 143.318001 per ms 
00:54:50.427 16  switches: flows:  545238 550155 544107 547654 544773 542726 544958 546058 551696 543218 547507 545898 543315 549292 554877 545388  total = 145.534770 per ms 
00:55:50.529 16  switches: flows:  558332 564934 569983 564311 563586 563922 564280 561280 572373 559392 559555 553474 571142 573914 559534 556298  total = 150.020307 per ms 
00:56:50.632 16  switches: flows:  564430 561240 566209 566168 570153 572627 568004 562613 567876 572354 565104 566985 572810 572054 570723 565560  total = 151.161638 per ms 
00:57:50.733 16  switches: flows:  530802 528593 537139 537252 532724 533182 534635 536408 534900 535682 534295 533613 531104 533952 535790 532909  total = 142.143831 per ms 
00:58:50.835 16  switches: flows:  524023 529242 529837 531239 530464 524759 530945 530794 522919 535338 533604 526273 518750 532621 526682 529868  total = 140.716725 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 137505.96/156225.47/146234.88/49064.60 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:58:50.864645" elapsed="0.001168"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-27T00:58:50.866365" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-27T00:58:50.866038" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-27T00:58:50.865949" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-27T00:58:50.866814" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-27T00:58:50.866730" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-27T00:58:50.866690" elapsed="0.000269"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-27T00:58:50.867068" elapsed="0.000034"/>
</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-04-27T00:58:50.872815" elapsed="0.000879"/>
</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-04-27T00:58:50.874082" elapsed="0.000303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T00:58:50.874517" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-27T00:58:50.867801" elapsed="0.006873"/>
</kw>
<msg time="2026-04-27T00:58:50.874806" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.136: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-04-27T00:48:44.061649" elapsed="606.813187"/>
</kw>
<status status="PASS" start="2026-04-27T00:48:44.061279" elapsed="606.813619"/>
</branch>
<status status="PASS" start="2026-04-27T00:48:44.060497" elapsed="606.814428"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.875395" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.136:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.136. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:49:49.832 16  switches: flows:  538714 540438 539600 549704 541454 542101 547693 538438 524891 521643 526145 524112 533667 529280 530830 528351  total = 142.617683 per ms 
00:50:49.934 16  switches: flows:  517581 516455 517041 514235 507182 518099 527439 515207 504792 512970 512993 523352 517584 514312 527714 517310  total = 137.505964 per ms 
00:51:50.035 16  switches: flows:  584604 594261 592924 588947 594459 584657 580079 594482 585658 564024 586927 589668 587451 587655 588112 585431  total = 156.225467 per ms 
00:52:50.222 16  switches: flows:  572366 564245 566608 566045 568088 564639 560078 560369 557881 571462 562484 546432 560045 556266 560657 559455  total = 149.487209 per ms 
00:53:50.325 16  switches: flows:  548006 536756 546427 541796 533337 527745 538142 548418 533064 540367 542694 530102 544271 522100 545196 535304  total = 143.318001 per ms 
00:54:50.427 16  switches: flows:  545238 550155 544107 547654 544773 542726 544958 546058 551696 543218 547507 545898 543315 549292 554877 545388  total = 145.534770 per ms 
00:55:50.529 16  switches: flows:  558332 564934 569983 564311 563586 563922 564280 561280 572373 559392 559555 553474 571142 573914 559534 556298  total = 150.020307 per ms 
00:56:50.632 16  switches: flows:  564430 561240 566209 566168 570153 572627 568004 562613 567876 572354 565104 566985 572810 572054 570723 565560  total = 151.161638 per ms 
00:57:50.733 16  switches: flows:  530802 528593 537139 537252 532724 533182 534635 536408 534900 535682 534295 533613 531104 533952 535790 532909  total = 142.143831 per ms 
00:58:50.835 16  switches: flows:  524023 529242 529837 531239 530464 524759 530945 530794 522919 535338 533604 526273 518750 532621 526682 529868  total = 140.716725 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 137505.96/156225.47/146234.88/49064.60 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:58:50.875085" elapsed="0.000387"/>
</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-04-27T00:58:50.875627" elapsed="0.000406"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-27T00:58:50.876425" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-27T00:58:50.876521" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 137505.96/156225.47/146234.88/49064.60 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-04-27T00:58:50.876198" elapsed="0.000349"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T00:58:50.876995" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 137505.96/156225.47/146234.88/49064.60 | 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-04-27T00:58:50.876703" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.879480" 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-04-27T00:58:50.877175" elapsed="0.002365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.881940" level="INFO">137505.96/156225.47/146234.88/49064.60</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:58:50.879689" elapsed="0.002333"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T00:58:50.884402" 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-04-27T00:58:50.882173" elapsed="0.002257"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T00:58:50.886884" level="INFO">@{result_value_list} = [ 137505.96 | 156225.47 | 146234.88 | 49064.60 ]</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-04-27T00:58:50.884620" elapsed="0.002293"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.887418" level="INFO">Length is 4.</msg>
<msg time="2026-04-27T00:58:50.887508" 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-04-27T00:58:50.887099" elapsed="0.000433"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.892311" level="INFO">min :: 137505.96</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-04-27T00:58:50.887914" elapsed="0.004455"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-27T00:58:50.887784" elapsed="0.004620"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.897234" level="INFO">max :: 156225.47</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:58:50.892626" elapsed="0.004668"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-27T00:58:50.892498" elapsed="0.004833"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.902060" level="INFO">avg :: 146234.88</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:58:50.897610" elapsed="0.004508"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-27T00:58:50.897454" elapsed="0.004698"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.906948" level="INFO">stdev :: 49064.60</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T00:58:50.902395" elapsed="0.004628"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-27T00:58:50.902245" elapsed="0.004814"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-27T00:58:50.887598" elapsed="0.019494"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.911173" level="INFO">${min} = 137505.96</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-04-27T00:58:50.907251" elapsed="0.003949"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.915080" level="INFO">${max} = 156225.47</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-04-27T00:58:50.911354" elapsed="0.003753"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.918989" level="INFO">${average} = 146234.88</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T00:58:50.915259" elapsed="0.003758"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.923017" level="INFO">${stdev} = 49064.60</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-04-27T00:58:50.919167" elapsed="0.003877"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.923578" level="INFO">${date} = 2026-04-27 00:58:50</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-27T00:58:50.923208" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.924209" level="INFO">CBench Result: 2026-04-27 00:58:50,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,137505.96,156225.47,146234.88,49064.60</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-04-27T00:58:50.923764" elapsed="0.000502"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T00:58:50.925284" 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-04-27T00:58:50.924871" elapsed="0.000480"/>
</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-04-27T00:58:50.925521" elapsed="0.000486"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-27T00:58:50.924403" elapsed="0.001672"/>
</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-04-27T00:48:44.059375" elapsed="606.866761"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.926609" 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-04-27T00:58:50.926287" elapsed="0.000384"/>
</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-04-27T00:58:50.927211" elapsed="0.000266"/>
</kw>
<status status="PASS" start="2026-04-27T00:58:50.926885" elapsed="0.000663"/>
</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-04-27T00:48:44.057856" elapsed="606.869732"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.928966" 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-04-27T00:58:50.928581" elapsed="0.000465"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.930347" 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-04-27T00:58:50.930001" elapsed="0.000389"/>
</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-04-27T00:58:50.930715" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-27T00:58:50.930499" 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-04-27T00:58:50.933724" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-27T00:58:50.933477" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-27T00:58:50.933457" elapsed="0.000346"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-27T00:58:50.934124" 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-04-27T00:58:50.934240" 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-04-27T00:58:50.933930" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.934832" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.136 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.188" 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-04-27T00:58:50.934400" elapsed="0.000491"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T00:58:50.935442" 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-04-27T00:58:50.935045" elapsed="0.000423"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T00:58:50.936503" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T00:58:50.936597" 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-04-27T00:58:50.936059" elapsed="0.000562"/>
</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-04-27T00:58:50.936762" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T00:58:50.938000" level="INFO">Logging into '10.30.171.188:22' as 'jenkins'.</msg>
<msg time="2026-04-27T00:58:51.535250" 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 Mon Apr 27 00:58:51 UTC 2026

  System load:  0.26               Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.188
  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: Mon Apr 27 00:48:44 2026 from 10.30.170.108
[?2004h[jenkins@releng-48317-702-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-04-27T00:58:50.937629" elapsed="0.597836"/>
</kw>
<msg time="2026-04-27T00:58:51.535559" 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-04-27T00:58:50.937253" elapsed="0.598389"/>
</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-04-27T00:58:50.935666" elapsed="0.600097"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T00:58:51.536344" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.136 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-27T01:08:57.582460" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T01:08:57.583103" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T01:08:57.583212" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136: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-04-27T00:58:51.536022" elapsed="606.047253"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T01:08:57.583727" elapsed="0.000763"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.585721" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.136. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:59:56.661 16  switches: flows:  114321 114134 113848 113203 114255 113695 113812 114405 112394 112307 111768 111638 109893 112831 112091 112299  total = 30.114900 per ms 
01:00:56.762 16  switches: flows:  119667 121326 118424 119261 118604 118710 120169 119127 118884 118932 119062 114922 120314 117077 115428 120401  total = 31.618999 per ms 
01:01:56.862 16  switches: flows:  124328 122227 122646 123624 121172 122357 123633 120967 121032 121988 122579 120223 122739 119630 118677 122164  total = 32.445614 per ms 
01:02:56.962 16  switches: flows:  127989 126570 126551 127353 127947 125883 128368 126177 124851 125833 126472 123837 125820 124884 125442 126842  total = 33.624005 per ms 
01:03:57.063 16  switches: flows:  127032 130665 126189 129558 131166 129062 128663 131095 128248 125762 128610 124528 123539 126315 126704 126644  total = 34.006068 per ms 
01:04:57.163 16  switches: flows:  113339 113048 114338 113313 112598 112885 112322 114294 111122 110724 113568 111900 110653 111128 111366 112349  total = 29.932394 per ms 
01:05:57.265 16  switches: flows:  128896 130838 130801 127561 130413 126149 128954 125646 128042 124869 125263 125847 126412 128010 126519 128879  total = 33.994301 per ms 
01:06:57.365 16  switches: flows:  113498 117817 117398 113507 115396 114654 113151 114356 115245 111018 112541 114621 115351 114642 115019 116744  total = 30.531620 per ms 
01:07:57.465 16  switches: flows:  113424 117580 118416 115094 117183 112661 115085 114102 115930 112561 113204 116047 116829 114682 114809 116494  total = 30.683760 per ms 
01:08:57.566 16  switches: flows:  115183 119176 117636 115020 115416 113470 114932 114454 117881 113664 113563 116115 115730 115727 115228 116337  total = 30.774135 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29932.39/34006.07/31956.77/10759.32 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:08:57.584914" elapsed="0.001179"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-27T01:08:57.586598" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-27T01:08:57.586287" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-27T01:08:57.586235" elapsed="0.000572"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-27T01:08:57.587044" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-27T01:08:57.586932" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-27T01:08:57.586897" elapsed="0.000291"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-27T01:08:57.587257" elapsed="0.000030"/>
</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-04-27T01:08:57.591521" elapsed="0.000492"/>
</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-04-27T01:08:57.592220" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T01:08:57.592618" elapsed="0.000135"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-27T01:08:57.587970" elapsed="0.004880"/>
</kw>
<msg time="2026-04-27T01:08:57.593051" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136: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-04-27T00:58:50.931143" elapsed="606.661946"/>
</kw>
<status status="PASS" start="2026-04-27T00:58:50.930798" elapsed="606.662359"/>
</branch>
<status status="PASS" start="2026-04-27T00:58:50.930477" elapsed="606.662713"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.593804" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.136:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.136. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:59:56.661 16  switches: flows:  114321 114134 113848 113203 114255 113695 113812 114405 112394 112307 111768 111638 109893 112831 112091 112299  total = 30.114900 per ms 
01:00:56.762 16  switches: flows:  119667 121326 118424 119261 118604 118710 120169 119127 118884 118932 119062 114922 120314 117077 115428 120401  total = 31.618999 per ms 
01:01:56.862 16  switches: flows:  124328 122227 122646 123624 121172 122357 123633 120967 121032 121988 122579 120223 122739 119630 118677 122164  total = 32.445614 per ms 
01:02:56.962 16  switches: flows:  127989 126570 126551 127353 127947 125883 128368 126177 124851 125833 126472 123837 125820 124884 125442 126842  total = 33.624005 per ms 
01:03:57.063 16  switches: flows:  127032 130665 126189 129558 131166 129062 128663 131095 128248 125762 128610 124528 123539 126315 126704 126644  total = 34.006068 per ms 
01:04:57.163 16  switches: flows:  113339 113048 114338 113313 112598 112885 112322 114294 111122 110724 113568 111900 110653 111128 111366 112349  total = 29.932394 per ms 
01:05:57.265 16  switches: flows:  128896 130838 130801 127561 130413 126149 128954 125646 128042 124869 125263 125847 126412 128010 126519 128879  total = 33.994301 per ms 
01:06:57.365 16  switches: flows:  113498 117817 117398 113507 115396 114654 113151 114356 115245 111018 112541 114621 115351 114642 115019 116744  total = 30.531620 per ms 
01:07:57.465 16  switches: flows:  113424 117580 118416 115094 117183 112661 115085 114102 115930 112561 113204 116047 116829 114682 114809 116494  total = 30.683760 per ms 
01:08:57.566 16  switches: flows:  115183 119176 117636 115020 115416 113470 114932 114454 117881 113664 113563 116115 115730 115727 115228 116337  total = 30.774135 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29932.39/34006.07/31956.77/10759.32 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:08:57.593390" elapsed="0.000517"/>
</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-04-27T01:08:57.594139" elapsed="0.000506"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-27T01:08:57.595203" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-27T01:08:57.595329" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29932.39/34006.07/31956.77/10759.32 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-04-27T01:08:57.594871" elapsed="0.000491"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T01:08:57.595927" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29932.39/34006.07/31956.77/10759.32 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T01:08:57.595576" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.599340" 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-04-27T01:08:57.596184" elapsed="0.003235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.602462" level="INFO">29932.39/34006.07/31956.77/10759.32</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:08:57.599620" elapsed="0.002900"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T01:08:57.604919" 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-04-27T01:08:57.602671" elapsed="0.002275"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T01:08:57.607392" level="INFO">@{result_value_list} = [ 29932.39 | 34006.07 | 31956.77 | 10759.32 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T01:08:57.605168" elapsed="0.002251"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.607903" level="INFO">Length is 4.</msg>
<msg time="2026-04-27T01:08:57.608005" 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-04-27T01:08:57.607576" elapsed="0.000455"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.612746" level="INFO">min :: 29932.39</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-04-27T01:08:57.608436" elapsed="0.004378"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-27T01:08:57.608305" elapsed="0.004544"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.617404" level="INFO">max :: 34006.07</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-04-27T01:08:57.613076" elapsed="0.004384"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-27T01:08:57.612936" elapsed="0.004558"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.622257" level="INFO">avg :: 31956.77</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-04-27T01:08:57.617717" elapsed="0.004596"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-27T01:08:57.617578" elapsed="0.004770"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.627078" level="INFO">stdev :: 10759.32</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:08:57.622559" elapsed="0.004575"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-27T01:08:57.622433" elapsed="0.004735"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-27T01:08:57.608107" elapsed="0.019092"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.631312" level="INFO">${min} = 29932.39</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-04-27T01:08:57.627359" elapsed="0.003984"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.635243" level="INFO">${max} = 34006.07</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-04-27T01:08:57.631497" elapsed="0.003772"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.639215" level="INFO">${average} = 31956.77</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-04-27T01:08:57.635420" elapsed="0.003821"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.643128" level="INFO">${stdev} = 10759.32</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T01:08:57.639394" elapsed="0.003760"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.643660" level="INFO">${date} = 2026-04-27 01:08:57</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-27T01:08:57.643314" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.644263" level="INFO">CBench Result: 2026-04-27 01:08:57,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29932.39,34006.07,31956.77,10759.32</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:08:57.643837" elapsed="0.000483"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T01:08:57.645517" 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-04-27T01:08:57.645003" elapsed="0.000584"/>
</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-04-27T01:08:57.645738" elapsed="0.000489"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-27T01:08:57.644474" elapsed="0.001819"/>
</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-04-27T00:58:50.929364" elapsed="606.716990"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.646822" 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-04-27T01:08:57.646503" elapsed="0.000377"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-27T01:08:57.648143" 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-04-27T01:08:57.647631" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-27T01:08:57.648402" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-27T01:08:57.648250" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-27T01:08:57.648228" elapsed="0.000267"/>
</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-04-27T01:08:57.648649" elapsed="0.000021"/>
</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-04-27T01:08:57.648820" elapsed="0.000021"/>
</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-04-27T01:08:57.648996" elapsed="0.000022"/>
</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-04-27T01:08:57.649195" 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-04-27T01:08:57.649344" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-27T01:08:57.649489" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-27T01:08:57.649632" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-27T01:08:57.649866" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-27T01:08:57.649713" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-27T01:08:57.649697" elapsed="0.000245"/>
</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-04-27T01:08:57.647292" elapsed="0.002718"/>
</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-04-27T00:58:50.928073" elapsed="606.721986"/>
</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-04-27T00:38:34.683531" elapsed="1822.966957"/>
</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>
