<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-06-11T01:55:09.487034" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/test/csit/suites/openflowplugin/Performance/010_Cbench.robot">
<kw name="Cbench Suite Setup" type="SETUP">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-11T01:55:10.067660" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-06-11T01:55:10.067523" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-06-11T01:55:10.067479" elapsed="0.000283"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T01:55:10.067906" elapsed="0.000518"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-11T01:55:10.068921" level="INFO">Logging into '10.30.171.143:8101' as 'karaf'.</msg>
<msg time="2026-06-11T01:55:10.870680" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-11T01:55:10.068622" elapsed="0.802275"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-11T01:55:10.920000" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-11T01:55:10.871196" elapsed="0.048879"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-11T01:55:10.921769" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-11T01:55:10.921882" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-11T01:55:10.920244" elapsed="0.001668"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-11T01:55:10.922068" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T01:55:10.922434" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T01:55:10.923148" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T01:55:10.922817" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-11T01:55:10.923258" elapsed="0.000052"/>
</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.143
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-11T01:55:10.067131" elapsed="0.856299"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-06-11T01:55:10.063190" elapsed="0.860303"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-11T01:55:10.924112" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-11T01:55:10.923750" elapsed="0.000420"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-11T01:55:10.924584" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-11T01:55:10.924323" elapsed="0.000320"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-11T01:55:10.925209" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-11T01:55:10.924812" elapsed="0.000425"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-11T01:55:10.925753" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-11T01:55:10.925402" elapsed="0.000394"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-11T01:55:10.926314" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-11T01:55:10.925943" elapsed="0.000398"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-11T01:55:10.926827" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-11T01:55:10.926499" elapsed="0.000370"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-06-11T01:55:10.927162" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-11T01:55:10.926949" elapsed="0.000268"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-11T01:55:10.931475" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T01:55:10.931075" elapsed="0.000427"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-11T01:55:10.932558" level="INFO">Length is 0.</msg>
<msg time="2026-06-11T01:55:10.932644" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-11T01:55:10.932073" elapsed="0.000596"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T01:55:10.932815" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-11T01:55:10.934190" level="INFO">Logging into '10.30.170.170:22' as 'jenkins'.</msg>
<msg time="2026-06-11T01:55:11.649457" 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 Thu Jun 11 01:55:11 UTC 2026

  System load:  0.07               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.170
  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-746-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-11T01:55:10.933694" elapsed="0.715933"/>
</kw>
<msg time="2026-06-11T01:55:11.649720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T01:55:10.933313" elapsed="0.716499"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-11T01:55:10.931724" elapsed="0.718211"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-11T01:55:11.657951" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-06-11T01:55:11.650147" elapsed="0.009446"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T01:55:11.659842" elapsed="0.000375"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-06-11T01:55:10.930555" elapsed="0.729750"/>
</kw>
<status status="PASS" start="2026-06-11T01:55:10.927286" elapsed="0.733070"/>
</branch>
<status status="PASS" start="2026-06-11T01:55:10.926926" elapsed="0.733474"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-11T01:55:11.660649" elapsed="0.000642"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-11T01:55:11.668252" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-06-11T01:55:11.668031" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-06-11T01:55:11.667988" elapsed="0.000412"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-11T01:55:11.674771" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-06-11T01:55:11.674585" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-06-11T01:55:11.674546" elapsed="0.000344"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T01:55:11.675121" elapsed="0.000669"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-11T01:55:11.676351" level="INFO">Logging into '10.30.171.143:8101' as 'karaf'.</msg>
<msg time="2026-06-11T01:55:11.916027" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-11T01:55:11.675989" elapsed="0.240205"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.022303" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-11T01:55:11.916488" elapsed="0.105907"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.036579" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-11T01:55:12.036781" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-11T01:55:12.022599" elapsed="0.014213"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-11T01:55:12.036955" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T01:55:12.037307" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T01:55:12.038064" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T01:55:12.037733" elapsed="0.000389"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-11T01:55:12.038173" elapsed="0.000049"/>
</return>
<msg time="2026-06-11T01:55:12.038369" 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.143
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-11T01:55:11.673949" elapsed="0.364451"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-11T01:55:12.038565" elapsed="0.000524"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-11T01:55:12.039140" elapsed="0.000031"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-06-11T01:55:11.667456" elapsed="0.371814"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-11T01:55:12.043069" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-11T01:55:12.042932" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-06-11T01:55:12.042908" elapsed="0.000234"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T01:55:12.043273" elapsed="0.000474"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.044163" level="INFO">Logging into '10.30.171.143:8101' as 'karaf'.</msg>
<msg time="2026-06-11T01:55:12.217156" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-11T01:55:12.043906" elapsed="0.173437"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.242350" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-11T01:55:12.217643" elapsed="0.024857"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.244461" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-11T01:55:12.244592" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-11T01:55:12.242792" elapsed="0.001830"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-11T01:55:12.244757" elapsed="0.000277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T01:55:12.245182" elapsed="0.000211"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T01:55:12.245880" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T01:55:12.245558" elapsed="0.000373"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-11T01:55:12.245984" elapsed="0.000058"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.143
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-11T01:55:12.042563" elapsed="0.203604"/>
</kw>
<status status="PASS" start="2026-06-11T01:55:10.061421" elapsed="2.184809"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T01:55:12.248404" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T01:55:12.247136" elapsed="0.001336"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-11T01:55:12.249936" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-11T01:55:12.249580" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-11T01:55:12.250301" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-11T01:55:12.250059" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-11T01:55:12.253318" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-11T01:55:12.253067" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-06-11T01:55:12.253041" elapsed="0.000359"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.253758" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-11T01:55:12.253548" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T01:55:12.254458" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.143 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.170" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T01:55:12.254039" elapsed="0.000495"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.255137" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T01:55:12.254676" elapsed="0.000487"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-11T01:55:12.256102" level="INFO">Length is 0.</msg>
<msg time="2026-06-11T01:55:12.256193" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-11T01:55:12.255753" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T01:55:12.256360" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.257580" level="INFO">Logging into '10.30.170.170:22' as 'jenkins'.</msg>
<msg time="2026-06-11T01:55:12.597028" 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 Thu Jun 11 01:55:11 UTC 2026

  System load:  0.07               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.170
  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: Thu Jun 11 01:55:11 2026 from 10.30.170.200
[?2004h[jenkins@releng-48317-746-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-11T01:55:12.257213" elapsed="0.340057"/>
</kw>
<msg time="2026-06-11T01:55:12.597377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T01:55:12.256867" elapsed="0.340619"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-11T01:55:12.255363" elapsed="0.342304"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-11T01:55:12.598341" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.143 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-11T02:05:18.721072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-11T02:05:18.721751" level="INFO">${stdout} = </msg>
<msg time="2026-06-11T02:05:18.721866" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-11T01:55:12.597947" elapsed="606.123979"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T02:05:18.722459" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.724773" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143: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.143. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:17.809 16  switches: flows:  117501 114456 114509 113955 114420 113620 112516 115264 109904 112171 109252 113830 106723 111148 111146 111254  total = 30.027817 per ms 
01:57:17.909 16  switches: flows:  137259 133499 130462 131877 137145 132419 130786 132890 126797 131180 127872 129263 126958 127971 129164 125377  total = 34.790556 per ms 
01:58:18.009 16  switches: flows:  129279 121431 121840 123580 128706 122745 123618 125445 118411 121402 120667 121501 119413 118754 121059 117525  total = 32.535300 per ms 
01:59:18.110 16  switches: flows:  145881 143510 140155 139823 144384 136668 138765 143030 134539 137697 136428 136055 134143 134765 137608 134317  total = 36.901152 per ms 
02:00:18.210 16  switches: flows:  136359 141242 134992 137945 138681 132652 134587 140014 131154 129521 130771 131478 131002 133173 131027 129899  total = 35.682043 per ms 
02:01:18.310 16  switches: flows:  146875 151878 148364 147169 148296 147410 145048 147985 141695 139076 139670 143034 137667 144267 140574 138089  total = 38.387521 per ms 
02:02:18.411 16  switches: flows:  133565 135669 132786 129066 135094 130734 131086 133736 129396 124699 125526 127852 124502 128347 128806 125111  total = 34.541900 per ms 
02:03:18.511 16  switches: flows:  143372 145889 142976 142070 146561 139436 140213 144403 136622 133373 133246 138678 133474 138215 136625 135151  total = 37.109765 per ms 
02:04:18.611 16  switches: flows:  149229 152056 148407 146511 144644 143083 143905 146944 138322 137277 138427 142179 134371 142549 141701 138623  total = 38.073556 per ms 
02:05:18.711 16  switches: flows:  142979 146208 144201 141182 140954 141488 137185 141604 134010 133580 132809 138170 131928 139146 135936 132932  total = 36.843669 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32535.30/38387.52/36096.16/12162.32 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.723872" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-11T02:05:18.725715" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-06-11T02:05:18.725341" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-06-11T02:05:18.725277" elapsed="0.000677"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-11T02:05:18.726180" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-06-11T02:05:18.726094" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-06-11T02:05:18.726056" elapsed="0.000296"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-11T02:05:18.726431" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T02:05:18.732025" 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-06-11T02:05:18.732760" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T02:05:18.733183" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-11T02:05:18.727376" elapsed="0.006017"/>
</kw>
<msg time="2026-06-11T02:05:18.733604" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-11T01:55:12.250723" elapsed="606.482919"/>
</kw>
<status status="PASS" start="2026-06-11T01:55:12.250388" elapsed="606.483322"/>
</branch>
<status status="PASS" start="2026-06-11T01:55:12.250035" elapsed="606.483708"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.734343" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143: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.143. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:17.809 16  switches: flows:  117501 114456 114509 113955 114420 113620 112516 115264 109904 112171 109252 113830 106723 111148 111146 111254  total = 30.027817 per ms 
01:57:17.909 16  switches: flows:  137259 133499 130462 131877 137145 132419 130786 132890 126797 131180 127872 129263 126958 127971 129164 125377  total = 34.790556 per ms 
01:58:18.009 16  switches: flows:  129279 121431 121840 123580 128706 122745 123618 125445 118411 121402 120667 121501 119413 118754 121059 117525  total = 32.535300 per ms 
01:59:18.110 16  switches: flows:  145881 143510 140155 139823 144384 136668 138765 143030 134539 137697 136428 136055 134143 134765 137608 134317  total = 36.901152 per ms 
02:00:18.210 16  switches: flows:  136359 141242 134992 137945 138681 132652 134587 140014 131154 129521 130771 131478 131002 133173 131027 129899  total = 35.682043 per ms 
02:01:18.310 16  switches: flows:  146875 151878 148364 147169 148296 147410 145048 147985 141695 139076 139670 143034 137667 144267 140574 138089  total = 38.387521 per ms 
02:02:18.411 16  switches: flows:  133565 135669 132786 129066 135094 130734 131086 133736 129396 124699 125526 127852 124502 128347 128806 125111  total = 34.541900 per ms 
02:03:18.511 16  switches: flows:  143372 145889 142976 142070 146561 139436 140213 144403 136622 133373 133246 138678 133474 138215 136625 135151  total = 37.109765 per ms 
02:04:18.611 16  switches: flows:  149229 152056 148407 146511 144644 143083 143905 146944 138322 137277 138427 142179 134371 142549 141701 138623  total = 38.073556 per ms 
02:05:18.711 16  switches: flows:  142979 146208 144201 141182 140954 141488 137185 141604 134010 133580 132809 138170 131928 139146 135936 132932  total = 36.843669 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32535.30/38387.52/36096.16/12162.32 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.733938" elapsed="0.000509"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-11T02:05:18.734675" elapsed="0.000581"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-11T02:05:18.735863" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-11T02:05:18.736003" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 32535.30/38387.52/36096.16/12162.32 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-11T02:05:18.735507" elapsed="0.000533"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:05:18.736518" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 32535.30/38387.52/36096.16/12162.32 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:05:18.736252" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.738975" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.736709" elapsed="0.002324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.741434" level="INFO">32535.30/38387.52/36096.16/12162.32</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.739221" elapsed="0.002272"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:05:18.743893" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:05:18.741663" elapsed="0.002259"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:05:18.746329" level="INFO">@{result_value_list} = [ 32535.30 | 38387.52 | 36096.16 | 12162.32 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:05:18.744113" elapsed="0.002244"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.746851" level="INFO">Length is 4.</msg>
<msg time="2026-06-11T02:05:18.746943" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-11T02:05:18.746514" elapsed="0.000454"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.751786" level="INFO">min :: 32535.30</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.747440" elapsed="0.004404"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-11T02:05:18.747253" elapsed="0.004628"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.756461" level="INFO">max :: 38387.52</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.752104" elapsed="0.004431"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-11T02:05:18.751976" elapsed="0.004598"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.761048" level="INFO">avg :: 36096.16</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.756794" elapsed="0.004312"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-11T02:05:18.756666" elapsed="0.004474"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.765804" level="INFO">stdev :: 12162.32</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.761362" elapsed="0.004500"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-11T02:05:18.761234" elapsed="0.004664"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-11T02:05:18.747040" elapsed="0.018906"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.769992" level="INFO">${min} = 32535.30</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:05:18.766110" elapsed="0.003911"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.774375" level="INFO">${max} = 38387.52</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:05:18.770178" elapsed="0.004224"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.778358" level="INFO">${average} = 36096.16</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:05:18.774573" elapsed="0.003812"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.782421" level="INFO">${stdev} = 12162.32</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:05:18.778557" elapsed="0.003891"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.782991" level="INFO">${date} = 2026-06-11 02:05:18</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-11T02:05:18.782625" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.783607" level="INFO">CBench Result: 2026-06-11 02:05:18,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,32535.30,38387.52,36096.16,12162.32</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.783177" elapsed="0.000488"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-11T02:05:18.784872" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-11T02:05:18.784357" elapsed="0.000584"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-11T02:05:18.785096" elapsed="0.000499"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-11T02:05:18.783810" elapsed="0.001853"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-06-11T01:55:12.248927" elapsed="606.536798"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.786199" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-11T02:05:18.785878" elapsed="0.000387"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-11T02:05:18.786804" elapsed="0.000273"/>
</kw>
<status status="PASS" start="2026-06-11T02:05:18.786481" elapsed="0.000670"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-11T01:55:12.246412" elapsed="606.540778"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.788540" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.788126" elapsed="0.000475"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.789883" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-11T02:05:18.789547" elapsed="0.000378"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-11T02:05:18.790252" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-11T02:05:18.790034" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-11T02:05:18.793360" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-06-11T02:05:18.793039" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-06-11T02:05:18.793010" elapsed="0.000445"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-11T02:05:18.793847" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-11T02:05:18.793641" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.794586" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.143 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.170" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:05:18.794134" elapsed="0.000513"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-11T02:05:18.795189" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T02:05:18.794789" elapsed="0.000427"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-11T02:05:18.796128" level="INFO">Length is 0.</msg>
<msg time="2026-06-11T02:05:18.796217" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-11T02:05:18.795821" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T02:05:18.796416" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-11T02:05:18.797654" level="INFO">Logging into '10.30.170.170:22' as 'jenkins'.</msg>
<msg time="2026-06-11T02:05:19.419661" 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 Thu Jun 11 02:05:18 UTC 2026

  System load:  1.05               Processes:             104
  Usage of /:   19.4% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.170
  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: Thu Jun 11 01:55:12 2026 from 10.30.170.200
[?2004h[jenkins@releng-48317-746-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-11T02:05:18.797272" elapsed="0.622594"/>
</kw>
<msg time="2026-06-11T02:05:19.419954" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T02:05:18.796930" elapsed="0.623114"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-11T02:05:18.795418" elapsed="0.624747"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-11T02:05:19.420712" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.143 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-11T02:15:25.512668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-11T02:15:25.513138" level="INFO">${stdout} = </msg>
<msg time="2026-06-11T02:15:25.513204" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.143:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-11T02:05:19.420389" elapsed="606.092851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T02:15:25.513592" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.514879" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.143: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.143. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:24.549 16  switches: flows:  477579 482423 480445 482251 476606 484133 482088 483479 476260 481059 473556 475132 469503 472852 472636 475924  total = 127.432100 per ms 
02:07:24.650 16  switches: flows:  498089 502839 498105 509873 504695 502768 496137 501033 500275 496668 503836 502910 500000 500636 504868 507231  total = 133.607134 per ms 
02:08:24.752 16  switches: flows:  501416 495797 499288 492114 500036 494654 496606 496380 495313 500728 492155 501717 494380 497703 495309 499557  total = 132.329275 per ms 
02:09:24.855 16  switches: flows:  497770 501348 496450 491665 501915 495257 497954 499303 504973 502527 500374 495818 503336 492375 498034 498730  total = 132.737312 per ms 
02:10:24.957 16  switches: flows:  493047 496610 503691 494371 500213 493883 491157 498207 496386 502719 497613 495637 495171 491994 497802 491262  total = 132.106832 per ms 
02:11:25.057 16  switches: flows:  488565 487172 483780 484376 483886 486931 481214 490921 489456 486376 480540 493480 486462 492219 488530 485887  total = 129.612513 per ms 
02:12:25.160 16  switches: flows:  476982 475579 476649 475813 481632 481966 479216 477203 486518 474592 479883 471931 479541 480715 478745 475690  total = 127.328920 per ms 
02:13:25.293 16  switches: flows:  516492 513205 518836 512512 509839 518366 513222 515313 516213 518986 514101 512421 514792 519798 521771 512883  total = 137.174258 per ms 
02:14:25.395 16  switches: flows:  541806 540132 539308 537291 533707 539608 538683 539893 540154 541230 534230 535042 535743 537211 537175 531986  total = 143.143704 per ms 
02:15:25.496 16  switches: flows:  562374 560268 557168 556209 560217 561107 557215 557342 556616 556408 560571 562695 566427 562815 562123 562118  total = 149.111229 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 127328.92/149111.23/135239.02/45545.69 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.514337" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-11T02:15:25.515773" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-06-11T02:15:25.515431" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-06-11T02:15:25.515379" elapsed="0.000688"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-11T02:15:25.516287" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-06-11T02:15:25.516198" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-06-11T02:15:25.516162" elapsed="0.000266"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-11T02:15:25.516498" elapsed="0.000065"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T02:15:25.521537" elapsed="0.000346"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T02:15:25.522029" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T02:15:25.522320" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-11T02:15:25.517246" elapsed="0.005233"/>
</kw>
<msg time="2026-06-11T02:15:25.522630" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.143:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-11T02:05:18.790689" elapsed="606.731968"/>
</kw>
<status status="PASS" start="2026-06-11T02:05:18.790337" elapsed="606.732369"/>
</branch>
<status status="PASS" start="2026-06-11T02:05:18.790013" elapsed="606.732717"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.523166" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.143: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.143. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:24.549 16  switches: flows:  477579 482423 480445 482251 476606 484133 482088 483479 476260 481059 473556 475132 469503 472852 472636 475924  total = 127.432100 per ms 
02:07:24.650 16  switches: flows:  498089 502839 498105 509873 504695 502768 496137 501033 500275 496668 503836 502910 500000 500636 504868 507231  total = 133.607134 per ms 
02:08:24.752 16  switches: flows:  501416 495797 499288 492114 500036 494654 496606 496380 495313 500728 492155 501717 494380 497703 495309 499557  total = 132.329275 per ms 
02:09:24.855 16  switches: flows:  497770 501348 496450 491665 501915 495257 497954 499303 504973 502527 500374 495818 503336 492375 498034 498730  total = 132.737312 per ms 
02:10:24.957 16  switches: flows:  493047 496610 503691 494371 500213 493883 491157 498207 496386 502719 497613 495637 495171 491994 497802 491262  total = 132.106832 per ms 
02:11:25.057 16  switches: flows:  488565 487172 483780 484376 483886 486931 481214 490921 489456 486376 480540 493480 486462 492219 488530 485887  total = 129.612513 per ms 
02:12:25.160 16  switches: flows:  476982 475579 476649 475813 481632 481966 479216 477203 486518 474592 479883 471931 479541 480715 478745 475690  total = 127.328920 per ms 
02:13:25.293 16  switches: flows:  516492 513205 518836 512512 509839 518366 513222 515313 516213 518986 514101 512421 514792 519798 521771 512883  total = 137.174258 per ms 
02:14:25.395 16  switches: flows:  541806 540132 539308 537291 533707 539608 538683 539893 540154 541230 534230 535042 535743 537211 537175 531986  total = 143.143704 per ms 
02:15:25.496 16  switches: flows:  562374 560268 557168 556209 560217 561107 557215 557342 556616 556408 560571 562695 566427 562815 562123 562118  total = 149.111229 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 127328.92/149111.23/135239.02/45545.69 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.522870" elapsed="0.000371"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-11T02:15:25.523387" elapsed="0.000446"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-11T02:15:25.524270" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-11T02:15:25.524364" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 127328.92/149111.23/135239.02/45545.69 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-11T02:15:25.524043" elapsed="0.000346"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:15:25.524843" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 127328.92/149111.23/135239.02/45545.69 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:15:25.524562" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.527254" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.525043" elapsed="0.002269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.529689" level="INFO">127328.92/149111.23/135239.02/45545.69</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.527459" elapsed="0.002289"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:15:25.532133" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:15:25.529899" elapsed="0.002263"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:15:25.534597" level="INFO">@{result_value_list} = [ 127328.92 | 149111.23 | 135239.02 | 45545.69 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:15:25.532354" elapsed="0.002271"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.535091" level="INFO">Length is 4.</msg>
<msg time="2026-06-11T02:15:25.535181" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-11T02:15:25.534779" elapsed="0.000426"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.540434" level="INFO">min :: 127328.92</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.535604" elapsed="0.004893"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-11T02:15:25.535460" elapsed="0.005090"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.545130" level="INFO">max :: 149111.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-06-11T02:15:25.540786" elapsed="0.004402"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-11T02:15:25.540649" elapsed="0.004575"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.550028" level="INFO">avg :: 135239.02</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.545440" elapsed="0.004647"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-11T02:15:25.545313" elapsed="0.004809"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.554769" level="INFO">stdev :: 45545.69</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.550340" elapsed="0.004488"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-11T02:15:25.550210" elapsed="0.004654"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-11T02:15:25.535268" elapsed="0.019633"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.558970" level="INFO">${min} = 127328.92</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:15:25.555062" elapsed="0.003937"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.563065" level="INFO">${max} = 149111.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-06-11T02:15:25.559154" elapsed="0.003943"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.567265" level="INFO">${average} = 135239.02</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:15:25.563258" elapsed="0.004036"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.571348" level="INFO">${stdev} = 45545.69</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:15:25.567446" elapsed="0.003929"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.571906" level="INFO">${date} = 2026-06-11 02:15:25</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-11T02:15:25.571550" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.572533" level="INFO">CBench Result: 2026-06-11 02:15:25,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,127328.92,149111.23,135239.02,45545.69</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.572100" elapsed="0.000494"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-11T02:15:25.573672" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-11T02:15:25.573236" elapsed="0.000506"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-11T02:15:25.573900" elapsed="0.000507"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-11T02:15:25.572749" elapsed="0.001727"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-06-11T02:05:18.788907" elapsed="606.785650"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.575032" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-11T02:15:25.574709" elapsed="0.000381"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-11T02:15:25.575626" elapsed="0.000281"/>
</kw>
<status status="PASS" start="2026-06-11T02:15:25.575302" elapsed="0.000735"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-11T02:05:18.787510" elapsed="606.788572"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.577337" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.576944" elapsed="0.000450"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.578633" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-11T02:15:25.578282" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-11T02:15:25.579042" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-06-11T02:15:25.578806" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-11T02:15:25.582300" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-06-11T02:15:25.582046" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-06-11T02:15:25.582026" elapsed="0.000357"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-11T02:15:25.582740" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-11T02:15:25.582535" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.583461" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.143 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.170" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:15:25.583032" elapsed="0.000505"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-11T02:15:25.584147" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T02:15:25.583679" elapsed="0.000509"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-11T02:15:25.585176" level="INFO">Length is 0.</msg>
<msg time="2026-06-11T02:15:25.585277" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-11T02:15:25.584846" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T02:15:25.585444" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-11T02:15:25.586684" level="INFO">Logging into '10.30.170.170:22' as 'jenkins'.</msg>
<msg time="2026-06-11T02:15:26.192470" 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 Thu Jun 11 02:15:25 UTC 2026

  System load:  0.31               Processes:             104
  Usage of /:   19.4% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.170
  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: Thu Jun 11 02:05:19 2026 from 10.30.170.200
[?2004h[jenkins@releng-48317-746-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-11T02:15:25.586303" elapsed="0.606407"/>
</kw>
<msg time="2026-06-11T02:15:26.192800" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T02:15:25.585955" elapsed="0.606926"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-11T02:15:25.584415" elapsed="0.608595"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-11T02:15:26.193582" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.143 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-11T02:25:32.261971" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-11T02:25:32.262673" level="INFO">${stdout} = </msg>
<msg time="2026-06-11T02:25:32.262785" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-11T02:15:26.193235" elapsed="606.069609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T02:25:32.263389" elapsed="0.000782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.265377" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143: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.143. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:16:31.327 16  switches: flows:  142899 146660 143092 141253 146150 139928 143634 139434 136312 135279 133612 138939 138849 137896 134375 137033  total = 37.255750 per ms 
02:17:31.428 16  switches: flows:  143407 145934 146171 144033 145028 141333 145614 139230 137139 134338 135456 140984 133567 141683 137211 137208  total = 37.409772 per ms 
02:18:31.528 16  switches: flows:  147609 150968 148018 145794 150438 145035 142393 144320 141063 139540 137359 144013 137590 144783 142231 142518  total = 38.330511 per ms 
02:19:31.629 16  switches: flows:  143538 149058 145810 145332 150212 143179 141613 142446 139071 135876 136733 142726 137810 142708 141364 140405  total = 37.901339 per ms 
02:20:31.730 16  switches: flows:  145784 148706 147694 145299 149232 143938 143560 141553 139817 136234 136666 142342 137056 143330 141274 139733  total = 37.973584 per ms 
02:21:31.831 16  switches: flows:  146962 149805 149233 144740 147869 144090 143354 142437 141114 136714 137541 142615 136324 142514 141333 140136  total = 38.049454 per ms 
02:22:31.933 16  switches: flows:  145417 150846 147886 146287 149446 145858 143501 146924 138641 138499 137819 142998 138692 144063 139317 143572  total = 38.265497 per ms 
02:23:32.034 16  switches: flows:  146249 149765 148207 145659 148210 144396 142348 142197 140327 138002 137973 141891 137691 142032 139304 141049  total = 38.024822 per ms 
02:24:32.135 16  switches: flows:  144095 148577 147541 143648 146609 144137 141851 140799 137563 137294 135932 140243 136595 141413 137773 139921  total = 37.670323 per ms 
02:25:32.236 16  switches: flows:  145428 147538 148288 145002 146100 143791 141292 142404 137986 136177 135197 142413 136230 140117 137760 140410  total = 37.705947 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 37409.77/38330.51/37925.69/12644.92 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.264588" elapsed="0.001144"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-11T02:25:32.266285" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-06-11T02:25:32.265928" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-06-11T02:25:32.265875" elapsed="0.000678"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-11T02:25:32.266779" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-06-11T02:25:32.266693" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-06-11T02:25:32.266654" elapsed="0.000303"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-11T02:25:32.267041" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-11T02:25:32.272423" elapsed="0.000358"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-11T02:25:32.272928" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-11T02:25:32.273215" elapsed="0.000095"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-11T02:25:32.267785" elapsed="0.005579"/>
</kw>
<msg time="2026-06-11T02:25:32.273535" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-11T02:15:25.579470" elapsed="606.694102"/>
</kw>
<status status="PASS" start="2026-06-11T02:15:25.579131" elapsed="606.694494"/>
</branch>
<status status="PASS" start="2026-06-11T02:15:25.578782" elapsed="606.694867"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.274086" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.143: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.143. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:16:31.327 16  switches: flows:  142899 146660 143092 141253 146150 139928 143634 139434 136312 135279 133612 138939 138849 137896 134375 137033  total = 37.255750 per ms 
02:17:31.428 16  switches: flows:  143407 145934 146171 144033 145028 141333 145614 139230 137139 134338 135456 140984 133567 141683 137211 137208  total = 37.409772 per ms 
02:18:31.528 16  switches: flows:  147609 150968 148018 145794 150438 145035 142393 144320 141063 139540 137359 144013 137590 144783 142231 142518  total = 38.330511 per ms 
02:19:31.629 16  switches: flows:  143538 149058 145810 145332 150212 143179 141613 142446 139071 135876 136733 142726 137810 142708 141364 140405  total = 37.901339 per ms 
02:20:31.730 16  switches: flows:  145784 148706 147694 145299 149232 143938 143560 141553 139817 136234 136666 142342 137056 143330 141274 139733  total = 37.973584 per ms 
02:21:31.831 16  switches: flows:  146962 149805 149233 144740 147869 144090 143354 142437 141114 136714 137541 142615 136324 142514 141333 140136  total = 38.049454 per ms 
02:22:31.933 16  switches: flows:  145417 150846 147886 146287 149446 145858 143501 146924 138641 138499 137819 142998 138692 144063 139317 143572  total = 38.265497 per ms 
02:23:32.034 16  switches: flows:  146249 149765 148207 145659 148210 144396 142348 142197 140327 138002 137973 141891 137691 142032 139304 141049  total = 38.024822 per ms 
02:24:32.135 16  switches: flows:  144095 148577 147541 143648 146609 144137 141851 140799 137563 137294 135932 140243 136595 141413 137773 139921  total = 37.670323 per ms 
02:25:32.236 16  switches: flows:  145428 147538 148288 145002 146100 143791 141292 142404 137986 136177 135197 142413 136230 140117 137760 140410  total = 37.705947 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 37409.77/38330.51/37925.69/12644.92 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.273791" elapsed="0.000370"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-11T02:25:32.274307" elapsed="0.000379"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-11T02:25:32.275091" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-11T02:25:32.275182" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 37409.77/38330.51/37925.69/12644.92 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-11T02:25:32.274845" elapsed="0.000361"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:25:32.275628" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 37409.77/38330.51/37925.69/12644.92 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:25:32.275358" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.278140" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.275797" elapsed="0.002425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.281440" level="INFO">37409.77/38330.51/37925.69/12644.92</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.278428" elapsed="0.003111"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:25:32.284621" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:25:32.281753" elapsed="0.002896"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-11T02:25:32.287099" level="INFO">@{result_value_list} = [ 37409.77 | 38330.51 | 37925.69 | 12644.92 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-11T02:25:32.284845" elapsed="0.002282"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.287608" level="INFO">Length is 4.</msg>
<msg time="2026-06-11T02:25:32.287697" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-11T02:25:32.287280" elapsed="0.000441"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.292344" level="INFO">min :: 37409.77</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.288099" elapsed="0.004301"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-11T02:25:32.287971" elapsed="0.004463"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.297017" level="INFO">max :: 38330.51</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.292660" elapsed="0.004413"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-11T02:25:32.292533" elapsed="0.004574"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.301638" level="INFO">avg :: 37925.69</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.297315" elapsed="0.004379"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-11T02:25:32.297189" elapsed="0.004539"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.306641" level="INFO">stdev :: 12644.92</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.301935" elapsed="0.004764"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-11T02:25:32.301811" elapsed="0.004923"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-11T02:25:32.287783" elapsed="0.018981"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.310672" level="INFO">${min} = 37409.77</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:25:32.306961" elapsed="0.003739"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.314649" level="INFO">${max} = 38330.51</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:25:32.310855" elapsed="0.003821"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.318574" level="INFO">${average} = 37925.69</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:25:32.314829" elapsed="0.003771"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.322431" level="INFO">${stdev} = 12644.92</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-11T02:25:32.318753" elapsed="0.003704"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.323019" level="INFO">${date} = 2026-06-11 02:25:32</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-11T02:25:32.322629" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.323606" level="INFO">CBench Result: 2026-06-11 02:25:32,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,37409.77,38330.51,37925.69,12644.92</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-11T02:25:32.323190" elapsed="0.000472"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-11T02:25:32.324736" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-11T02:25:32.324275" elapsed="0.000528"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-11T02:25:32.324953" elapsed="0.000453"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-11T02:25:32.323805" elapsed="0.001665"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-06-11T02:15:25.577733" elapsed="606.747815"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.326000" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-11T02:25:32.325695" elapsed="0.000361"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-11T02:25:32.327273" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-11T02:25:32.326766" elapsed="0.000534"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-11T02:25:32.327539" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-06-11T02:25:32.327375" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-06-11T02:25:32.327356" elapsed="0.000274"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-06-11T02:25:32.327770" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-11T02:25:32.327925" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-06-11T02:25:32.328082" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-11T02:25:32.328272" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-06-11T02:25:32.328426" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-06-11T02:25:32.328590" 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-06-11T02:25:32.328736" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-06-11T02:25:32.328955" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-11T02:25:32.328819" elapsed="0.000187"/>
</branch>
<status status="NOT RUN" start="2026-06-11T02:25:32.328802" elapsed="0.000227"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-06-11T02:25:32.326412" elapsed="0.002666"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-11T02:15:25.576392" elapsed="606.752731"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-06-11T01:55:09.488742" elapsed="1822.840827"/>
</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>
