<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-17T01:52:43.158077" 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-17T01:52:43.727204" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T01:52:43.727066" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T01:52:43.727035" elapsed="0.000271"/>
</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-17T01:52:43.727448" elapsed="0.000508"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T01:52:43.728442" level="INFO">Logging into '10.30.171.87:8101' as 'karaf'.</msg>
<msg time="2026-04-17T01:52:44.371533" 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-17T01:52:43.728146" elapsed="0.643597"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T01:52:44.420974" 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-17T01:52:44.372054" elapsed="0.049111"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T01:52:44.423125" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-17T01:52:44.423243" 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-17T01:52:44.421469" elapsed="0.001804"/>
</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-17T01:52:44.423438" elapsed="0.000328"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T01:52:44.423933" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T01:52:44.424681" 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-17T01:52:44.424334" elapsed="0.000405"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T01:52:44.424794" elapsed="0.000062"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.87
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-17T01:52:43.726670" elapsed="0.698317"/>
</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-17T01:52:43.723083" elapsed="0.701996"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-17T01:52:44.425659" 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-17T01:52:44.425283" elapsed="0.000434"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-17T01:52:44.426149" 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-17T01:52:44.425874" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T01:52:44.426779" 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-17T01:52:44.426372" elapsed="0.000435"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T01:52:44.427396" 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-17T01:52:44.426984" elapsed="0.000455"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T01:52:44.428000" 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-17T01:52:44.427590" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T01:52:44.428534" 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-17T01:52:44.428214" elapsed="0.000362"/>
</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-17T01:52:44.428890" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T01:52:44.428668" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T01:52:44.433592" 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-17T01:52:44.433134" elapsed="0.000485"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T01:52:44.435020" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T01:52:44.435142" 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-17T01:52:44.434491" elapsed="0.000676"/>
</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-17T01:52:44.435317" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T01:52:44.436808" level="INFO">Logging into '10.30.171.101:22' as 'jenkins'.</msg>
<msg time="2026-04-17T01:52:45.128385" 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 Fri Apr 17 01:52:44 UTC 2026

  System load:  0.06               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.101
  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-692-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-17T01:52:44.436283" elapsed="0.692265"/>
</kw>
<msg time="2026-04-17T01:52:45.128644" 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-17T01:52:44.435868" elapsed="0.692879"/>
</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-17T01:52:44.433850" elapsed="0.695024"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.136142" 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-17T01:52:45.129136" elapsed="0.008409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T01:52:45.137814" elapsed="0.000424"/>
</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-17T01:52:44.432521" elapsed="0.705805"/>
</kw>
<status status="PASS" start="2026-04-17T01:52:44.429046" elapsed="0.709332"/>
</branch>
<status status="PASS" start="2026-04-17T01:52:44.428641" elapsed="0.709785"/>
</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-17T01:52:45.138648" elapsed="0.000737"/>
</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-17T01:52:45.145741" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T01:52:45.145570" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-17T01:52:45.145534" elapsed="0.000315"/>
</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-17T01:52:45.150084" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T01:52:45.149952" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T01:52:45.149932" elapsed="0.000222"/>
</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-17T01:52:45.150288" elapsed="0.000457"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.151186" level="INFO">Logging into '10.30.171.87:8101' as 'karaf'.</msg>
<msg time="2026-04-17T01:52:45.339442" 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-17T01:52:45.150894" elapsed="0.188674"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.437272" 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-17T01:52:45.339788" elapsed="0.097556"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.442982" 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-17T01:52:45.443178" 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-17T01:52:45.437495" elapsed="0.005716"/>
</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-17T01:52:45.443357" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T01:52:45.443695" elapsed="0.000209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T01:52:45.444378" 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-17T01:52:45.444063" elapsed="0.000377"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T01:52:45.444492" elapsed="0.000051"/>
</return>
<msg time="2026-04-17T01:52:45.444691" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.87
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-17T01:52:45.149592" elapsed="0.295130"/>
</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-17T01:52:45.444868" elapsed="0.000581"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T01:52:45.445503" 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-17T01:52:45.145140" elapsed="0.300493"/>
</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-17T01:52:45.449381" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T01:52:45.449249" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T01:52:45.449225" elapsed="0.000227"/>
</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-17T01:52:45.449581" elapsed="0.000471"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.450772" level="INFO">Logging into '10.30.171.87:8101' as 'karaf'.</msg>
<msg time="2026-04-17T01:52:45.590326" 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-17T01:52:45.450201" elapsed="0.140238"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.612409" 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-17T01:52:45.590638" elapsed="0.021832"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.614282" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-17T01:52:45.614385" 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-17T01:52:45.612623" elapsed="0.001792"/>
</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-17T01:52:45.614551" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T01:52:45.614885" elapsed="0.000199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T01:52:45.615523" 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-17T01:52:45.615225" elapsed="0.000348"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T01:52:45.615624" elapsed="0.000051"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.87
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-17T01:52:45.448902" elapsed="0.166884"/>
</kw>
<status status="PASS" start="2026-04-17T01:52:43.721235" elapsed="1.894614"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T01:52:45.618290" 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-17T01:52:45.616777" elapsed="0.001591"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T01:52:45.619872" 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-17T01:52:45.619512" elapsed="0.000403"/>
</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-17T01:52:45.620264" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T01:52:45.619995" elapsed="0.000329"/>
</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-17T01:52:45.623381" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T01:52:45.623129" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-17T01:52:45.623109" elapsed="0.000354"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.623805" 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-17T01:52:45.623927" 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-17T01:52:45.623595" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T01:52:45.624531" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.87 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.101" 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-17T01:52:45.624107" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.625224" 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-17T01:52:45.624733" elapsed="0.000518"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T01:52:45.626181" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T01:52:45.626271" 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-17T01:52:45.625832" elapsed="0.000463"/>
</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-17T01:52:45.626438" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.627654" level="INFO">Logging into '10.30.171.101:22' as 'jenkins'.</msg>
<msg time="2026-04-17T01:52:45.942728" 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 Fri Apr 17 01:52:44 UTC 2026

  System load:  0.06               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.101
  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: Fri Apr 17 01:52:45 2026 from 10.30.171.185
[?2004h[jenkins@releng-48317-692-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-17T01:52:45.627293" elapsed="0.315567"/>
</kw>
<msg time="2026-04-17T01:52:45.942930" 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-17T01:52:45.626924" elapsed="0.316086"/>
</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-17T01:52:45.625453" elapsed="0.317680"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T01:52:45.943784" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.87 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-17T02:02:52.048406" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T02:02:52.049109" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T02:02:52.049220" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T01:52:45.943315" elapsed="606.105965"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T02:02:52.049810" elapsed="0.000845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.051843" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.87. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:51.134 16  switches: flows:  101633 98985 99743 97756 98853 97817 98484 97791 95607 96724 95581 93003 93934 94114 93085 93949  total = 25.784317 per ms 
01:54:51.235 16  switches: flows:  120079 116082 117069 118952 118782 117927 116816 117790 112841 114786 114286 113336 114167 111970 112548 111206  total = 30.759230 per ms 
01:55:51.335 16  switches: flows:  113539 112484 112132 110680 112558 112822 111933 113095 107072 110251 108115 107529 109181 107209 106822 106015  total = 29.308350 per ms 
01:56:51.436 16  switches: flows:  112484 108477 112288 112952 111183 111860 113664 112865 104529 108768 106671 107456 109178 105664 105805 104504  total = 29.090565 per ms 
01:57:51.537 16  switches: flows:  113289 110086 110714 113812 108280 109887 112422 110590 103131 110275 107002 105856 107690 103557 104713 102656  total = 28.851180 per ms 
01:58:51.638 16  switches: flows:  114209 108685 110542 114191 109730 111872 114387 110784 106345 108929 106351 105477 110140 105934 104619 103910  total = 29.053244 per ms 
01:59:51.739 16  switches: flows:  112114 111516 111014 111853 108532 111618 111787 112105 103366 106788 106199 104218 108273 105762 106086 105332  total = 28.894485 per ms 
02:00:51.840 16  switches: flows:  111239 111635 110358 112877 108994 109535 111915 111665 105027 107209 107993 104996 106919 106716 104854 104834  total = 28.897856 per ms 
02:01:51.944 16  switches: flows:  112438 112066 110022 114499 110449 109604 111836 109293 107063 106489 106296 104305 107108 109374 105988 103080  total = 28.948728 per ms 
02:02:52.045 16  switches: flows:  108815 107889 107230 111253 105508 108323 107218 107581 102115 102355 104643 102678 102908 106610 103188 101447  total = 28.115717 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28115.72/30759.23/29102.15/9723.23 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:02:52.051079" elapsed="0.001142"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-17T02:02:52.052734" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-17T02:02:52.052421" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-17T02:02:52.052360" elapsed="0.000588"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T02:02:52.053198" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-17T02:02:52.053115" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-17T02:02:52.053076" elapsed="0.000262"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T02:02:52.053409" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T02:02:52.059092" elapsed="0.000340"/>
</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-17T02:02:52.059579" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T02:02:52.059902" elapsed="0.000112"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T02:02:52.054170" elapsed="0.005901"/>
</kw>
<msg time="2026-04-17T02:02:52.060204" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T01:52:45.620688" elapsed="606.439543"/>
</kw>
<status status="PASS" start="2026-04-17T01:52:45.620354" elapsed="606.439926"/>
</branch>
<status status="PASS" start="2026-04-17T01:52:45.619970" elapsed="606.440333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.060732" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.87. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:51.134 16  switches: flows:  101633 98985 99743 97756 98853 97817 98484 97791 95607 96724 95581 93003 93934 94114 93085 93949  total = 25.784317 per ms 
01:54:51.235 16  switches: flows:  120079 116082 117069 118952 118782 117927 116816 117790 112841 114786 114286 113336 114167 111970 112548 111206  total = 30.759230 per ms 
01:55:51.335 16  switches: flows:  113539 112484 112132 110680 112558 112822 111933 113095 107072 110251 108115 107529 109181 107209 106822 106015  total = 29.308350 per ms 
01:56:51.436 16  switches: flows:  112484 108477 112288 112952 111183 111860 113664 112865 104529 108768 106671 107456 109178 105664 105805 104504  total = 29.090565 per ms 
01:57:51.537 16  switches: flows:  113289 110086 110714 113812 108280 109887 112422 110590 103131 110275 107002 105856 107690 103557 104713 102656  total = 28.851180 per ms 
01:58:51.638 16  switches: flows:  114209 108685 110542 114191 109730 111872 114387 110784 106345 108929 106351 105477 110140 105934 104619 103910  total = 29.053244 per ms 
01:59:51.739 16  switches: flows:  112114 111516 111014 111853 108532 111618 111787 112105 103366 106788 106199 104218 108273 105762 106086 105332  total = 28.894485 per ms 
02:00:51.840 16  switches: flows:  111239 111635 110358 112877 108994 109535 111915 111665 105027 107209 107993 104996 106919 106716 104854 104834  total = 28.897856 per ms 
02:01:51.944 16  switches: flows:  112438 112066 110022 114499 110449 109604 111836 109293 107063 106489 106296 104305 107108 109374 105988 103080  total = 28.948728 per ms 
02:02:52.045 16  switches: flows:  108815 107889 107230 111253 105508 108323 107218 107581 102115 102355 104643 102678 102908 106610 103188 101447  total = 28.115717 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28115.72/30759.23/29102.15/9723.23 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:02:52.060444" elapsed="0.000362"/>
</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-17T02:02:52.060957" elapsed="0.000386"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-17T02:02:52.061743" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-17T02:02:52.061835" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28115.72/30759.23/29102.15/9723.23 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-17T02:02:52.061506" elapsed="0.000353"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:02:52.062287" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28115.72/30759.23/29102.15/9723.23 | 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-17T02:02:52.062028" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.064684" 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-17T02:02:52.062458" elapsed="0.002282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.067136" level="INFO">28115.72/30759.23/29102.15/9723.23</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:02:52.064886" elapsed="0.002315"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:02:52.069551" 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-17T02:02:52.067350" elapsed="0.002228"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:02:52.072015" level="INFO">@{result_value_list} = [ 28115.72 | 30759.23 | 29102.15 | 9723.23 ]</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-17T02:02:52.069779" elapsed="0.002264"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.072501" level="INFO">Length is 4.</msg>
<msg time="2026-04-17T02:02:52.072594" 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-17T02:02:52.072197" elapsed="0.000422"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.077371" level="INFO">min :: 28115.72</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-17T02:02:52.073038" elapsed="0.004390"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-17T02:02:52.072889" elapsed="0.004574"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.082044" level="INFO">max :: 30759.23</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:02:52.077684" elapsed="0.004416"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-17T02:02:52.077554" elapsed="0.004581"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.086700" level="INFO">avg :: 29102.15</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:02:52.082353" elapsed="0.004404"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-17T02:02:52.082225" elapsed="0.004567"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.091391" level="INFO">stdev :: 9723.23</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:02:52.087029" elapsed="0.004417"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-17T02:02:52.086885" elapsed="0.004596"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-17T02:02:52.072693" elapsed="0.018821"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.095678" level="INFO">${min} = 28115.72</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-17T02:02:52.091672" elapsed="0.004033"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.099615" level="INFO">${max} = 30759.23</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-17T02:02:52.095860" elapsed="0.003782"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.103665" level="INFO">${average} = 29102.15</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-17T02:02:52.099797" elapsed="0.003894"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.107592" level="INFO">${stdev} = 9723.23</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-17T02:02:52.103843" elapsed="0.003775"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.108164" level="INFO">${date} = 2026-04-17 02:02:52</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-17T02:02:52.107779" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.108755" level="INFO">CBench Result: 2026-04-17 02:02:52,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28115.72,30759.23,29102.15,9723.23</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-17T02:02:52.108337" elapsed="0.000473"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-17T02:02:52.109865" 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-17T02:02:52.109438" elapsed="0.000494"/>
</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-17T02:02:52.110098" elapsed="0.000457"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-17T02:02:52.108950" elapsed="0.001669"/>
</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-17T01:52:45.618831" elapsed="606.491849"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.111176" 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-17T02:02:52.110837" elapsed="0.000394"/>
</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-17T02:02:52.111747" elapsed="0.000280"/>
</kw>
<status status="PASS" start="2026-04-17T02:02:52.111448" elapsed="0.000650"/>
</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-17T01:52:45.616006" elapsed="606.496130"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.113562" 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-17T02:02:52.113176" elapsed="0.000442"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.114886" 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-17T02:02:52.114559" elapsed="0.000369"/>
</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-17T02:02:52.115273" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T02:02:52.115052" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T02:02:52.118239" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T02:02:52.117977" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-17T02:02:52.117957" elapsed="0.000361"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T02:02:52.118630" 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-17T02:02:52.118747" 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-17T02:02:52.118446" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.119345" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.87 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.101" 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-17T02:02:52.118908" elapsed="0.000495"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T02:02:52.120014" 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-17T02:02:52.119613" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T02:02:52.120922" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T02:02:52.121024" 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-17T02:02:52.120620" elapsed="0.000430"/>
</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-17T02:02:52.121190" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T02:02:52.122404" level="INFO">Logging into '10.30.171.101:22' as 'jenkins'.</msg>
<msg time="2026-04-17T02:02:52.739697" 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 Fri Apr 17 02:02:52 UTC 2026

  System load:  1.0                Processes:             107
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.101
  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: Fri Apr 17 01:52:45 2026 from 10.30.171.185
[?2004h[jenkins@releng-48317-692-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-17T02:02:52.122049" elapsed="0.617807"/>
</kw>
<msg time="2026-04-17T02:02:52.739933" 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-17T02:02:52.121662" elapsed="0.618377"/>
</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-17T02:02:52.120245" elapsed="0.619903"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T02:02:52.740640" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.87 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-17T02:12:58.809403" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T02:12:58.809957" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T02:12:58.810106" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.87: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-17T02:02:52.740350" elapsed="606.069814"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T02:12:58.810687" elapsed="0.000740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.812577" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.87. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:57.880 16  switches: flows:  509098 525176 503915 524991 507545 495322 495390 519012 490263 496469 500759 492194 497538 503955 495106 489577  total = 134.105167 per ms 
02:04:57.989 16  switches: flows:  535207 534561 525817 532794 539441 532231 536725 526937 522980 544557 544249 535933 543903 535002 530029 541458  total = 142.440041 per ms 
02:05:58.091 16  switches: flows:  544090 542107 539145 538119 530829 536445 539389 540336 537423 523796 540499 544459 539146 540408 536982 536375  total = 143.251673 per ms 
02:06:58.192 16  switches: flows:  543391 542373 543939 545249 540392 536813 545909 550842 551653 542765 537376 547979 544760 544915 532395 546806  total = 144.715390 per ms 
02:07:58.295 16  switches: flows:  558312 553409 560314 546440 550158 560032 556754 556115 557328 555082 546100 550700 553552 564606 553954 556849  total = 147.743540 per ms 
02:08:58.404 16  switches: flows:  547822 543696 541758 545066 546251 541480 536823 545303 541959 531074 552641 542087 539768 545369 540041 540404  total = 144.431977 per ms 
02:09:58.507 16  switches: flows:  543956 557039 555219 554268 551959 551049 545309 555052 553365 550455 552208 553123 555405 553298 553293 555115  total = 147.084560 per ms 
02:10:58.608 16  switches: flows:  546124 543312 541875 547700 550073 545994 553186 540729 539780 546027 551090 547160 547039 544931 542643 542418  total = 145.256844 per ms 
02:11:58.710 16  switches: flows:  551638 552033 546391 550202 545393 541753 552387 551337 554145 557192 550742 558053 548555 549411 549413 550767  total = 146.576154 per ms 
02:12:58.811 16  switches: flows:  558649 551480 553031 554077 553900 554701 552611 557948 552099 560145 548954 551343 554627 555473 556663 558254  total = 147.649435 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 142440.04/147743.54/145461.07/48520.86 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:12:58.811819" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-17T02:12:58.813408" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-17T02:12:58.813104" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-17T02:12:58.813052" elapsed="0.000580"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T02:12:58.813847" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-17T02:12:58.813762" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-17T02:12:58.813725" elapsed="0.000262"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T02:12:58.814091" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T02:12:58.819588" elapsed="0.000340"/>
</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-17T02:12:58.820096" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T02:12:58.820393" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T02:12:58.814801" elapsed="0.005748"/>
</kw>
<msg time="2026-04-17T02:12:58.820677" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.87: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-17T02:02:52.115666" elapsed="606.705037"/>
</kw>
<status status="PASS" start="2026-04-17T02:02:52.115355" elapsed="606.705397"/>
</branch>
<status status="PASS" start="2026-04-17T02:02:52.115032" elapsed="606.705743"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.821227" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.87. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:57.880 16  switches: flows:  509098 525176 503915 524991 507545 495322 495390 519012 490263 496469 500759 492194 497538 503955 495106 489577  total = 134.105167 per ms 
02:04:57.989 16  switches: flows:  535207 534561 525817 532794 539441 532231 536725 526937 522980 544557 544249 535933 543903 535002 530029 541458  total = 142.440041 per ms 
02:05:58.091 16  switches: flows:  544090 542107 539145 538119 530829 536445 539389 540336 537423 523796 540499 544459 539146 540408 536982 536375  total = 143.251673 per ms 
02:06:58.192 16  switches: flows:  543391 542373 543939 545249 540392 536813 545909 550842 551653 542765 537376 547979 544760 544915 532395 546806  total = 144.715390 per ms 
02:07:58.295 16  switches: flows:  558312 553409 560314 546440 550158 560032 556754 556115 557328 555082 546100 550700 553552 564606 553954 556849  total = 147.743540 per ms 
02:08:58.404 16  switches: flows:  547822 543696 541758 545066 546251 541480 536823 545303 541959 531074 552641 542087 539768 545369 540041 540404  total = 144.431977 per ms 
02:09:58.507 16  switches: flows:  543956 557039 555219 554268 551959 551049 545309 555052 553365 550455 552208 553123 555405 553298 553293 555115  total = 147.084560 per ms 
02:10:58.608 16  switches: flows:  546124 543312 541875 547700 550073 545994 553186 540729 539780 546027 551090 547160 547039 544931 542643 542418  total = 145.256844 per ms 
02:11:58.710 16  switches: flows:  551638 552033 546391 550202 545393 541753 552387 551337 554145 557192 550742 558053 548555 549411 549413 550767  total = 146.576154 per ms 
02:12:58.811 16  switches: flows:  558649 551480 553031 554077 553900 554701 552611 557948 552099 560145 548954 551343 554627 555473 556663 558254  total = 147.649435 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 142440.04/147743.54/145461.07/48520.86 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:12:58.820917" elapsed="0.000389"/>
</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-17T02:12:58.821454" elapsed="0.000371"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-17T02:12:58.822222" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-17T02:12:58.822314" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 142440.04/147743.54/145461.07/48520.86 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-17T02:12:58.821987" elapsed="0.000352"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:12:58.822758" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 142440.04/147743.54/145461.07/48520.86 | 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-17T02:12:58.822504" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.825180" 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-17T02:12:58.822929" elapsed="0.002307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.827623" level="INFO">142440.04/147743.54/145461.07/48520.86</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:12:58.825381" elapsed="0.002298"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:12:58.830038" 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-17T02:12:58.827827" elapsed="0.002240"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:12:58.832489" level="INFO">@{result_value_list} = [ 142440.04 | 147743.54 | 145461.07 | 48520.86 ]</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-17T02:12:58.830251" elapsed="0.002266"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.832972" level="INFO">Length is 4.</msg>
<msg time="2026-04-17T02:12:58.833078" 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-17T02:12:58.832670" elapsed="0.000432"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.837804" level="INFO">min :: 142440.04</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:12:58.833484" elapsed="0.004376"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-17T02:12:58.833355" elapsed="0.004539"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.842628" level="INFO">max :: 147743.54</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-17T02:12:58.838127" elapsed="0.004557"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-17T02:12:58.837984" elapsed="0.004735"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.847449" level="INFO">avg :: 145461.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-17T02:12:58.842977" elapsed="0.004528"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-17T02:12:58.842807" elapsed="0.004734"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.852292" level="INFO">stdev :: 48520.86</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-17T02:12:58.847757" elapsed="0.004593"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-17T02:12:58.847628" elapsed="0.004758"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-17T02:12:58.833169" elapsed="0.019248"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.856344" level="INFO">${min} = 142440.04</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T02:12:58.852574" elapsed="0.003797"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.860290" level="INFO">${max} = 147743.54</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-17T02:12:58.856524" elapsed="0.003793"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.864237" level="INFO">${average} = 145461.07</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-17T02:12:58.860468" elapsed="0.003795"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.868187" level="INFO">${stdev} = 48520.86</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-17T02:12:58.864413" elapsed="0.003800"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.868734" level="INFO">${date} = 2026-04-17 02:12:58</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-17T02:12:58.868377" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.869336" level="INFO">CBench Result: 2026-04-17 02:12:58,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,142440.04,147743.54,145461.07,48520.86</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-17T02:12:58.868908" elapsed="0.000483"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-17T02:12:58.870442" 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-17T02:12:58.869993" elapsed="0.000517"/>
</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-17T02:12:58.870663" elapsed="0.000470"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-17T02:12:58.869527" elapsed="0.001669"/>
</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-17T02:02:52.113966" elapsed="606.757292"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.871723" 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-17T02:12:58.871411" elapsed="0.000368"/>
</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-17T02:12:58.872299" elapsed="0.000261"/>
</kw>
<status status="PASS" start="2026-04-17T02:12:58.871981" elapsed="0.000648"/>
</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-17T02:02:52.112454" elapsed="606.760213"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.874107" 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-17T02:12:58.873706" elapsed="0.000458"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.875536" 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-17T02:12:58.875065" elapsed="0.000514"/>
</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-17T02:12:58.875905" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T02:12:58.875684" elapsed="0.000280"/>
</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-17T02:12:58.878888" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T02:12:58.878640" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-17T02:12:58.878621" elapsed="0.000347"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T02:12:58.879294" 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-17T02:12:58.879410" 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-17T02:12:58.879114" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.879993" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.87 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.101" 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-17T02:12:58.879576" elapsed="0.000490"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T02:12:58.880593" 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-17T02:12:58.880205" elapsed="0.000415"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T02:12:58.881649" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T02:12:58.881743" 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-17T02:12:58.881207" elapsed="0.000561"/>
</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-17T02:12:58.881910" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T02:12:58.883138" level="INFO">Logging into '10.30.171.101:22' as 'jenkins'.</msg>
<msg time="2026-04-17T02:12:59.459942" 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 Fri Apr 17 02:12:59 UTC 2026

  System load:  0.45               Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 5%                 IPv4 address for ens3: 10.30.171.101
  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: Fri Apr 17 02:02:52 2026 from 10.30.171.185
[?2004h[jenkins@releng-48317-692-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-17T02:12:58.882769" elapsed="0.577479"/>
</kw>
<msg time="2026-04-17T02:12:59.460363" 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-17T02:12:58.882401" elapsed="0.578071"/>
</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-17T02:12:58.880819" elapsed="0.579795"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T02:12:59.461334" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.87 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-17T02:23:05.503550" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T02:23:05.504143" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T02:23:05.504248" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T02:12:59.460913" elapsed="606.043391"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T02:23:05.504801" elapsed="0.000753"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.506712" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.87. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:14:04.615 16  switches: flows:  115545 127876 113003 115132 113426 116450 114023 113656 110402 112074 112073 109298 111404 110315 115632 108343  total = 30.310867 per ms 
02:15:04.715 16  switches: flows:  106198 105666 102593 104822 102890 107512 106980 105210 100388 100333 104105 101054 102819 101053 100807 100654  total = 27.505469 per ms 
02:16:04.815 16  switches: flows:  101646 104059 103908 102191 102347 101099 101420 101528 99489 102195 98757 101518 99557 101776 101429 99953  total = 27.002700 per ms 
02:17:04.916 16  switches: flows:  103277 105816 105050 107541 105864 101885 104141 105178 102678 100744 102612 103249 102649 102205 104533 101344  total = 27.599983 per ms 
02:18:05.016 16  switches: flows:  98886 101806 100213 100960 101581 97962 98307 100604 97978 97776 96627 97794 98865 97946 98882 97315  total = 26.347686 per ms 
02:19:05.116 16  switches: flows:  98043 96478 98877 97146 98667 96035 97288 95500 93881 95116 95152 96620 93692 96959 94255 94875  total = 25.600242 per ms 
02:20:05.217 16  switches: flows:  108038 105519 108281 104703 107901 104932 107126 104892 102096 104042 103864 105486 102740 105496 102122 106239  total = 28.011163 per ms 
02:21:05.317 16  switches: flows:  106844 106812 106086 104540 106629 105840 107093 104264 101437 102909 105019 106224 103689 104172 104074 104586  total = 27.956871 per ms 
02:22:05.418 16  switches: flows:  108547 107587 103035 104955 105203 110615 105431 103918 104026 103573 106601 106554 105987 105157 106096 105259  total = 28.162027 per ms 
02:23:05.518 16  switches: flows:  111443 112788 108132 108505 108983 112339 108843 107490 105142 107318 109829 111602 109137 107899 109243 109260  total = 29.083955 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25600.24/29083.96/27474.46/9210.21 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:23:05.505947" elapsed="0.001174"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-17T02:23:05.507628" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-17T02:23:05.507324" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-17T02:23:05.507269" elapsed="0.000512"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T02:23:05.507919" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T02:23:05.507866" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-17T02:23:05.507843" elapsed="0.000190"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T02:23:05.508081" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T02:23:05.511982" elapsed="0.000524"/>
</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-17T02:23:05.512748" elapsed="0.000249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T02:23:05.513214" elapsed="0.000145"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T02:23:05.508576" elapsed="0.004862"/>
</kw>
<msg time="2026-04-17T02:23:05.513644" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T02:12:58.876324" elapsed="606.637360"/>
</kw>
<status status="PASS" start="2026-04-17T02:12:58.875989" elapsed="606.637769"/>
</branch>
<status status="PASS" start="2026-04-17T02:12:58.875665" elapsed="606.638128"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.514466" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.87:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.87. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:14:04.615 16  switches: flows:  115545 127876 113003 115132 113426 116450 114023 113656 110402 112074 112073 109298 111404 110315 115632 108343  total = 30.310867 per ms 
02:15:04.715 16  switches: flows:  106198 105666 102593 104822 102890 107512 106980 105210 100388 100333 104105 101054 102819 101053 100807 100654  total = 27.505469 per ms 
02:16:04.815 16  switches: flows:  101646 104059 103908 102191 102347 101099 101420 101528 99489 102195 98757 101518 99557 101776 101429 99953  total = 27.002700 per ms 
02:17:04.916 16  switches: flows:  103277 105816 105050 107541 105864 101885 104141 105178 102678 100744 102612 103249 102649 102205 104533 101344  total = 27.599983 per ms 
02:18:05.016 16  switches: flows:  98886 101806 100213 100960 101581 97962 98307 100604 97978 97776 96627 97794 98865 97946 98882 97315  total = 26.347686 per ms 
02:19:05.116 16  switches: flows:  98043 96478 98877 97146 98667 96035 97288 95500 93881 95116 95152 96620 93692 96959 94255 94875  total = 25.600242 per ms 
02:20:05.217 16  switches: flows:  108038 105519 108281 104703 107901 104932 107126 104892 102096 104042 103864 105486 102740 105496 102122 106239  total = 28.011163 per ms 
02:21:05.317 16  switches: flows:  106844 106812 106086 104540 106629 105840 107093 104264 101437 102909 105019 106224 103689 104172 104074 104586  total = 27.956871 per ms 
02:22:05.418 16  switches: flows:  108547 107587 103035 104955 105203 110615 105431 103918 104026 103573 106601 106554 105987 105157 106096 105259  total = 28.162027 per ms 
02:23:05.518 16  switches: flows:  111443 112788 108132 108505 108983 112339 108843 107490 105142 107318 109829 111602 109137 107899 109243 109260  total = 29.083955 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25600.24/29083.96/27474.46/9210.21 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:23:05.514031" elapsed="0.000545"/>
</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-17T02:23:05.514795" elapsed="0.000610"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-17T02:23:05.515904" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-17T02:23:05.515994" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25600.24/29083.96/27474.46/9210.21 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-17T02:23:05.515652" elapsed="0.000387"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:23:05.516450" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25600.24/29083.96/27474.46/9210.21 | 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-17T02:23:05.516195" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.518960" 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-17T02:23:05.516627" elapsed="0.002408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.521615" level="INFO">25600.24/29083.96/27474.46/9210.21</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:23:05.519182" elapsed="0.002489"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:23:05.524136" 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-17T02:23:05.521822" elapsed="0.002341"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-17T02:23:05.526594" level="INFO">@{result_value_list} = [ 25600.24 | 29083.96 | 27474.46 | 9210.21 ]</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-17T02:23:05.524382" elapsed="0.002240"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.527156" level="INFO">Length is 4.</msg>
<msg time="2026-04-17T02:23:05.527244" 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-17T02:23:05.526779" elapsed="0.000489"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.532028" level="INFO">min :: 25600.24</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:23:05.527683" elapsed="0.004405"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-17T02:23:05.527551" elapsed="0.004571"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.536736" level="INFO">max :: 29083.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-17T02:23:05.532346" elapsed="0.004461"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-17T02:23:05.532216" elapsed="0.004635"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.541725" level="INFO">avg :: 27474.46</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T02:23:05.537143" elapsed="0.004656"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-17T02:23:05.536962" elapsed="0.004883"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.546681" level="INFO">stdev :: 9210.21</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-17T02:23:05.542171" elapsed="0.004577"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-17T02:23:05.541962" elapsed="0.004827"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-17T02:23:05.527345" elapsed="0.019479"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.551466" level="INFO">${min} = 25600.24</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T02:23:05.547089" elapsed="0.004408"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.555509" level="INFO">${max} = 29083.96</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-17T02:23:05.551693" elapsed="0.003846"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.559610" level="INFO">${average} = 27474.46</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-17T02:23:05.555724" elapsed="0.003923"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.563958" level="INFO">${stdev} = 9210.21</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-17T02:23:05.559853" elapsed="0.004162"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.564681" level="INFO">${date} = 2026-04-17 02:23:05</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-17T02:23:05.564263" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.565324" level="INFO">CBench Result: 2026-04-17 02:23:05,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25600.24,29083.96,27474.46,9210.21</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-17T02:23:05.564879" elapsed="0.000504"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-17T02:23:05.566643" 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-17T02:23:05.566079" elapsed="0.000634"/>
</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-17T02:23:05.566869" elapsed="0.000540"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-17T02:23:05.565555" elapsed="0.001922"/>
</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-17T02:12:58.874489" elapsed="606.693048"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.568031" 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-17T02:23:05.567690" elapsed="0.000402"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T02:23:05.569363" 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-17T02:23:05.568850" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T02:23:05.569636" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-17T02:23:05.569478" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-17T02:23:05.569453" elapsed="0.000283"/>
</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-17T02:23:05.569886" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-17T02:23:05.570071" elapsed="0.000022"/>
</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-17T02:23:05.570238" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T02:23:05.570454" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T02:23:05.570608" 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-17T02:23:05.570756" elapsed="0.000021"/>
</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-17T02:23:05.570904" elapsed="0.000063"/>
</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-17T02:23:05.571193" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T02:23:05.571050" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T02:23:05.571032" elapsed="0.000238"/>
</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-17T02:23:05.568495" elapsed="0.002826"/>
</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-17T02:12:58.873164" elapsed="606.698204"/>
</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-17T01:52:43.159722" elapsed="1822.412440"/>
</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>
