<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-07-17T01:52:43.483393" 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-07-17T01:52:44.047924" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-07-17T01:52:44.047776" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-07-17T01:52:44.047742" elapsed="0.000297"/>
</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-07-17T01:52:44.048189" elapsed="0.000569"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-17T01:52:44.049250" level="INFO">Logging into '10.30.170.61:8101' as 'karaf'.</msg>
<msg time="2026-07-17T01:52:44.719806" 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-07-17T01:52:44.048937" elapsed="0.671098"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-17T01:52:44.768949" 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-07-17T01:52:44.720390" elapsed="0.048655"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-17T01:52:44.770918" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-17T01:52:44.771049" 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-07-17T01:52:44.769269" elapsed="0.001810"/>
</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-07-17T01:52:44.771246" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T01:52:44.771716" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T01:52:44.772533" 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-07-17T01:52:44.772142" elapsed="0.000447"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-17T01:52:44.772723" elapsed="0.000077"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.61
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-17T01:52:44.047363" elapsed="0.725592"/>
</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-07-17T01:52:44.043693" elapsed="0.729336"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-17T01:52:44.773695" 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-07-17T01:52:44.773240" elapsed="0.000516"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-17T01:52:44.774182" 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-07-17T01:52:44.773919" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-17T01:52:44.774874" 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-07-17T01:52:44.774410" elapsed="0.000492"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-17T01:52:44.775448" 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-07-17T01:52:44.775092" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-17T01:52:44.776063" 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-07-17T01:52:44.775673" elapsed="0.000417"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-17T01:52:44.776570" 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-07-17T01:52:44.776253" elapsed="0.000389"/>
</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-07-17T01:52:44.776981" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-07-17T01:52:44.776745" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-17T01:52:44.781681" 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-07-17T01:52:44.781201" elapsed="0.000508"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-17T01:52:44.783205" level="INFO">Length is 0.</msg>
<msg time="2026-07-17T01:52:44.783293" 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-07-17T01:52:44.782589" elapsed="0.000728"/>
</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-07-17T01:52:44.783471" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-17T01:52:44.784972" level="INFO">Logging into '10.30.170.113:22' as 'jenkins'.</msg>
<msg time="2026-07-17T01:52:45.504430" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri Jul 17 01:52:45 UTC 2026

  System load:  0.1                Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.113
  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-782-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-07-17T01:52:44.784412" elapsed="0.720281"/>
</kw>
<msg time="2026-07-17T01:52:45.504829" 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-07-17T01:52:44.784036" elapsed="0.720925"/>
</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-07-17T01:52:44.781925" elapsed="0.723195"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-07-17T01:52:45.512885" 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-07-17T01:52:45.505417" elapsed="0.009595"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T01:52:45.515429" elapsed="0.000641"/>
</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-07-17T01:52:44.780622" elapsed="0.735611"/>
</kw>
<status status="PASS" start="2026-07-17T01:52:44.777129" elapsed="0.739188"/>
</branch>
<status status="PASS" start="2026-07-17T01:52:44.776715" elapsed="0.739680"/>
</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-07-17T01:52:45.516801" elapsed="0.001102"/>
</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-07-17T01:52:45.526753" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-07-17T01:52:45.526619" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-07-17T01:52:45.526578" elapsed="0.000258"/>
</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-07-17T01:52:45.530413" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-07-17T01:52:45.530299" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-07-17T01:52:45.530280" elapsed="0.000203"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-17T01:52:45.530632" elapsed="0.000490"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-17T01:52:45.531539" level="INFO">Logging into '10.30.170.61:8101' as 'karaf'.</msg>
<msg time="2026-07-17T01:52:45.741982" 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-07-17T01:52:45.531272" elapsed="0.210903"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-17T01:52:45.837633" 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-07-17T01:52:45.742478" elapsed="0.095269"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-17T01:52:45.863046" 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-07-17T01:52:45.863286" 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-07-17T01:52:45.837956" elapsed="0.025363"/>
</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-07-17T01:52:45.863471" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T01:52:45.863866" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T01:52:45.864644" 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-07-17T01:52:45.864259" elapsed="0.000444"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-17T01:52:45.864758" elapsed="0.000069"/>
</return>
<msg time="2026-07-17T01:52:45.864992" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.61
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-17T01:52:45.529940" elapsed="0.335115"/>
</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-07-17T01:52:45.865219" elapsed="0.000671"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-17T01:52:45.865944" elapsed="0.000034"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-07-17T01:52:45.526258" elapsed="0.339822"/>
</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-07-17T01:52:45.870092" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-07-17T01:52:45.869951" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-07-17T01:52:45.869923" elapsed="0.000242"/>
</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-07-17T01:52:45.870300" elapsed="0.000753"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-17T01:52:45.871486" level="INFO">Logging into '10.30.170.61:8101' as 'karaf'.</msg>
<msg time="2026-07-17T01:52:46.079801" 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-07-17T01:52:45.871216" elapsed="0.208695"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-17T01:52:46.102520" 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-07-17T01:52:46.080103" elapsed="0.022475"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-17T01:52:46.104380" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-17T01:52:46.104482" 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-07-17T01:52:46.102744" elapsed="0.001767"/>
</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-07-17T01:52:46.104662" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T01:52:46.104986" elapsed="0.000180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T01:52:46.105680" 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-07-17T01:52:46.105307" elapsed="0.000425"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-17T01:52:46.105782" elapsed="0.000048"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.61
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-17T01:52:45.869564" elapsed="0.236380"/>
</kw>
<status status="PASS" start="2026-07-17T01:52:44.041781" elapsed="2.064229"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T01:52:46.108362" 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-07-17T01:52:46.106991" elapsed="0.001439"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-17T01:52:46.109993" 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-07-17T01:52:46.109618" elapsed="0.000418"/>
</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-07-17T01:52:46.110365" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-17T01:52:46.110121" elapsed="0.000303"/>
</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-07-17T01:52:46.113482" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-07-17T01:52:46.113185" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-07-17T01:52:46.113165" elapsed="0.000401"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-17T01:52:46.113938" 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-07-17T01:52:46.114067" 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-07-17T01:52:46.113722" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T01:52:46.114689" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.61 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.113" 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-07-17T01:52:46.114234" elapsed="0.000517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-17T01:52:46.115375" 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-07-17T01:52:46.114894" elapsed="0.000508"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-17T01:52:46.116359" level="INFO">Length is 0.</msg>
<msg time="2026-07-17T01:52:46.116452" 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-07-17T01:52:46.116019" elapsed="0.000457"/>
</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-07-17T01:52:46.116637" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-17T01:52:46.117910" level="INFO">Logging into '10.30.170.113:22' as 'jenkins'.</msg>
<msg time="2026-07-17T01:52:46.500573" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri Jul 17 01:52:45 UTC 2026

  System load:  0.1                Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.113
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Fri Jul 17 01:52:45 2026 from 10.30.171.225
[?2004h[jenkins@releng-48317-782-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-07-17T01:52:46.117529" elapsed="0.383317"/>
</kw>
<msg time="2026-07-17T01:52:46.500954" 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-07-17T01:52:46.117135" elapsed="0.383953"/>
</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-07-17T01:52:46.115634" elapsed="0.385615"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-17T01:52:46.502012" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.61 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-17T02:02:52.605028" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-17T02:02:52.605520" level="INFO">${stdout} = </msg>
<msg time="2026-07-17T02:02:52.605666" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-07-17T01:52:46.501550" elapsed="606.104178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T02:02:52.606174" elapsed="0.001385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.608714" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.61. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:51.701 16  switches: flows:  108785 107518 108980 106353 107595 111174 106903 106119 104867 104063 108339 105049 104661 105219 107770 105438  total = 28.480550 per ms 
01:54:51.801 16  switches: flows:  119275 117973 119817 118950 116955 122351 115852 116307 115897 117762 117435 114373 116457 113190 117182 115260  total = 31.198508 per ms 
01:55:51.901 16  switches: flows:  121527 121433 123967 123363 120585 127193 119592 119640 120801 121294 119689 115854 120290 115741 120524 120203  total = 32.141316 per ms 
01:56:52.003 16  switches: flows:  121000 122552 122681 122722 120648 126944 119541 120279 121329 122911 121277 116095 120347 118685 120804 120197  total = 32.246316 per ms 
01:57:52.104 16  switches: flows:  129176 128250 131873 129473 128907 130762 126014 127722 127101 126241 123959 123035 125094 125008 126449 122902  total = 33.809649 per ms 
01:58:52.204 16  switches: flows:  118621 119720 122997 120663 121272 124379 118004 119355 117696 119772 117196 116237 117201 114227 119172 115200  total = 31.642361 per ms 
01:59:52.305 16  switches: flows:  122292 123439 124368 120532 123063 124816 121858 119812 119531 121157 119951 119455 119857 118058 119498 119996  total = 32.240851 per ms 
02:00:52.406 16  switches: flows:  130764 131792 132341 131058 131824 135539 129223 132824 128980 129508 128012 129252 127704 126006 127635 129120  total = 34.635187 per ms 
02:01:52.507 16  switches: flows:  128122 131028 130846 126464 128674 132168 127189 129203 126098 127778 125614 125315 124590 123039 124160 125259  total = 33.869257 per ms 
02:02:52.609 16  switches: flows:  128161 131436 131791 127747 129019 131781 126895 129765 125829 127453 125701 127121 125536 123646 124342 125730  total = 33.975702 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31198.51/34635.19/32862.13/11013.91 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:02:52.607957" elapsed="0.001048"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-17T02:02:52.609504" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-07-17T02:02:52.609199" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-07-17T02:02:52.609138" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-17T02:02:52.609968" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-07-17T02:02:52.609884" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-07-17T02:02:52.609849" elapsed="0.000256"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-17T02:02:52.610178" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-17T02:02:52.614287" elapsed="0.000477"/>
</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-07-17T02:02:52.614987" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T02:02:52.615404" elapsed="0.000136"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-17T02:02:52.610961" elapsed="0.004674"/>
</kw>
<msg time="2026-07-17T02:02:52.615815" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-07-17T01:52:46.110806" elapsed="606.505046"/>
</kw>
<status status="PASS" start="2026-07-17T01:52:46.110454" elapsed="606.505466"/>
</branch>
<status status="PASS" start="2026-07-17T01:52:46.110097" elapsed="606.505857"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.616555" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.61. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:51.701 16  switches: flows:  108785 107518 108980 106353 107595 111174 106903 106119 104867 104063 108339 105049 104661 105219 107770 105438  total = 28.480550 per ms 
01:54:51.801 16  switches: flows:  119275 117973 119817 118950 116955 122351 115852 116307 115897 117762 117435 114373 116457 113190 117182 115260  total = 31.198508 per ms 
01:55:51.901 16  switches: flows:  121527 121433 123967 123363 120585 127193 119592 119640 120801 121294 119689 115854 120290 115741 120524 120203  total = 32.141316 per ms 
01:56:52.003 16  switches: flows:  121000 122552 122681 122722 120648 126944 119541 120279 121329 122911 121277 116095 120347 118685 120804 120197  total = 32.246316 per ms 
01:57:52.104 16  switches: flows:  129176 128250 131873 129473 128907 130762 126014 127722 127101 126241 123959 123035 125094 125008 126449 122902  total = 33.809649 per ms 
01:58:52.204 16  switches: flows:  118621 119720 122997 120663 121272 124379 118004 119355 117696 119772 117196 116237 117201 114227 119172 115200  total = 31.642361 per ms 
01:59:52.305 16  switches: flows:  122292 123439 124368 120532 123063 124816 121858 119812 119531 121157 119951 119455 119857 118058 119498 119996  total = 32.240851 per ms 
02:00:52.406 16  switches: flows:  130764 131792 132341 131058 131824 135539 129223 132824 128980 129508 128012 129252 127704 126006 127635 129120  total = 34.635187 per ms 
02:01:52.507 16  switches: flows:  128122 131028 130846 126464 128674 132168 127189 129203 126098 127778 125614 125315 124590 123039 124160 125259  total = 33.869257 per ms 
02:02:52.609 16  switches: flows:  128161 131436 131791 127747 129019 131781 126895 129765 125829 127453 125701 127121 125536 123646 124342 125730  total = 33.975702 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31198.51/34635.19/32862.13/11013.91 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:02:52.616154" elapsed="0.000527"/>
</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-07-17T02:02:52.616888" elapsed="0.000506"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-17T02:02:52.617963" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-17T02:02:52.618088" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 31198.51/34635.19/32862.13/11013.91 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-07-17T02:02:52.617639" elapsed="0.000483"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:02:52.618708" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 31198.51/34635.19/32862.13/11013.91 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-17T02:02:52.618335" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.621451" 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-07-17T02:02:52.618988" elapsed="0.002519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.623875" level="INFO">31198.51/34635.19/32862.13/11013.91</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:02:52.621668" elapsed="0.002263"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:02:52.626263" 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-07-17T02:02:52.624084" elapsed="0.002207"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:02:52.628722" level="INFO">@{result_value_list} = [ 31198.51 | 34635.19 | 32862.13 | 11013.91 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-17T02:02:52.626479" elapsed="0.002271"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.629207" level="INFO">Length is 4.</msg>
<msg time="2026-07-17T02:02:52.629296" 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-07-17T02:02:52.628903" elapsed="0.000416"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.634003" level="INFO">min :: 31198.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-07-17T02:02:52.629737" elapsed="0.004321"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-17T02:02:52.629584" elapsed="0.004508"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.638572" level="INFO">max :: 34635.19</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-07-17T02:02:52.634310" elapsed="0.004332"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-17T02:02:52.634183" elapsed="0.004493"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.643192" level="INFO">avg :: 32862.13</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-07-17T02:02:52.638902" elapsed="0.004346"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-17T02:02:52.638764" elapsed="0.004518"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.647950" level="INFO">stdev :: 11013.91</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:02:52.643500" elapsed="0.004506"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-17T02:02:52.643373" elapsed="0.004672"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-17T02:02:52.629391" elapsed="0.018687"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.651996" level="INFO">${min} = 31198.51</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-07-17T02:02:52.648235" elapsed="0.003787"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.656275" level="INFO">${max} = 34635.19</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-07-17T02:02:52.652183" elapsed="0.004119"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.660194" level="INFO">${average} = 32862.13</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-07-17T02:02:52.656454" elapsed="0.003767"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.664096" level="INFO">${stdev} = 11013.91</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-17T02:02:52.660372" elapsed="0.003750"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.664675" level="INFO">${date} = 2026-07-17 02:02:52</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-17T02:02:52.664284" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.665265" level="INFO">CBench Result: 2026-07-17 02:02:52,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,31198.51,34635.19,32862.13,11013.91</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:02:52.664852" elapsed="0.000469"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-17T02:02:52.666390" 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-07-17T02:02:52.665981" elapsed="0.000475"/>
</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-07-17T02:02:52.666625" 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-07-17T02:02:52.665473" elapsed="0.001725"/>
</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-07-17T01:52:46.108910" elapsed="606.558349"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.667753" 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-07-17T02:02:52.667412" elapsed="0.000397"/>
</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-07-17T02:02:52.668321" elapsed="0.000267"/>
</kw>
<status status="PASS" start="2026-07-17T02:02:52.668019" elapsed="0.000656"/>
</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-07-17T01:52:46.106187" elapsed="606.562525"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.670283" 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-07-17T02:02:52.669581" elapsed="0.000758"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.671614" 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-07-17T02:02:52.671269" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-07-17T02:02:52.672014" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-17T02:02:52.671780" elapsed="0.000293"/>
</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-07-17T02:02:52.675230" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-17T02:02:52.674981" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-07-17T02:02:52.674957" elapsed="0.000351"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-17T02:02:52.675663" 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-07-17T02:02:52.675782" 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-07-17T02:02:52.675442" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.676359" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.61 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.113" 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-07-17T02:02:52.675944" elapsed="0.000472"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-17T02:02:52.676974" 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-07-17T02:02:52.676557" elapsed="0.000443"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-17T02:02:52.677905" level="INFO">Length is 0.</msg>
<msg time="2026-07-17T02:02:52.677993" 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-07-17T02:02:52.677574" elapsed="0.000443"/>
</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-07-17T02:02:52.678158" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-17T02:02:52.679348" level="INFO">Logging into '10.30.170.113:22' as 'jenkins'.</msg>
<msg time="2026-07-17T02:02:53.290360" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri Jul 17 02:02:52 UTC 2026

  System load:  1.1                Processes:             105
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.113
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Fri Jul 17 01:52:46 2026 from 10.30.171.225
[?2004h[jenkins@releng-48317-782-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-07-17T02:02:52.678997" elapsed="0.611569"/>
</kw>
<msg time="2026-07-17T02:02:53.290679" 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-07-17T02:02:52.678643" elapsed="0.612173"/>
</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-07-17T02:02:52.677202" elapsed="0.613741"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-17T02:02:53.291530" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.61 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-17T02:12:59.496920" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-17T02:12:59.497547" level="INFO">${stdout} = </msg>
<msg time="2026-07-17T02:12:59.497703" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.61: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-07-17T02:02:53.291212" elapsed="606.206552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T02:12:59.498238" elapsed="0.000780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.500163" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.61. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:58.454 16  switches: flows:  545562 544339 540932 545574 541804 548290 548288 549728 527010 529606 521418 537006 528342 525028 531895 534563  total = 143.323083 per ms 
02:04:58.556 16  switches: flows:  565941 547528 540787 559585 559065 564837 564003 565828 566743 563565 556998 567660 559965 556803 562233 559827  total = 149.104319 per ms 
02:05:58.658 16  switches: flows:  603474 603848 601039 599327 601560 607345 601762 597303 595241 600287 596163 603677 599218 597818 596335 602172  total = 159.838615 per ms 
02:06:58.760 16  switches: flows:  600403 601957 602551 604444 604039 603582 604653 604457 608114 601683 599157 606261 608198 605626 598396 602259  total = 160.658438 per ms 
02:07:58.862 16  switches: flows:  614324 615094 614326 615071 620018 615733 611113 612341 614268 616097 618913 610806 615058 614650 616142 614666  total = 163.702177 per ms 
02:08:59.093 16  switches: flows:  613489 608667 607554 608553 605889 611709 609274 612789 596365 614494 611527 614197 604607 618619 610378 612012  total = 162.046127 per ms 
02:09:59.194 16  switches: flows:  611016 602983 612314 607811 608106 615644 613024 610534 610115 602493 604437 611501 608274 604020 611549 612457  total = 162.165038 per ms 
02:10:59.295 16  switches: flows:  592084 605592 601867 597143 592456 599245 601517 600396 595230 594783 591082 589137 599552 589479 595922 595215  total = 158.744019 per ms 
02:11:59.397 16  switches: flows:  603838 597145 604647 609576 590389 610038 597017 597701 600216 591133 599238 601089 605549 594951 600655 605835  total = 159.880286 per ms 
02:12:59.499 16  switches: flows:  580024 568733 556047 554308 556856 554742 574169 572092 525967 561315 574100 577604 569854 573534 574607 553844  total = 150.210405 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 149104.32/163702.18/158483.27/53057.02 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:12:59.499396" elapsed="0.001089"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-17T02:12:59.501047" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-07-17T02:12:59.500720" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-07-17T02:12:59.500663" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-17T02:12:59.501468" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-07-17T02:12:59.501384" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-07-17T02:12:59.501349" elapsed="0.000287"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-17T02:12:59.501735" elapsed="0.000035"/>
</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-07-17T02:12:59.507152" elapsed="0.000355"/>
</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-07-17T02:12:59.507691" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T02:12:59.508001" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-17T02:12:59.502462" elapsed="0.005693"/>
</kw>
<msg time="2026-07-17T02:12:59.508283" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.61: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-07-17T02:02:52.672416" elapsed="606.835893"/>
</kw>
<status status="PASS" start="2026-07-17T02:02:52.672099" elapsed="606.836259"/>
</branch>
<status status="PASS" start="2026-07-17T02:02:52.671758" elapsed="606.836623"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.508829" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.61. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:58.454 16  switches: flows:  545562 544339 540932 545574 541804 548290 548288 549728 527010 529606 521418 537006 528342 525028 531895 534563  total = 143.323083 per ms 
02:04:58.556 16  switches: flows:  565941 547528 540787 559585 559065 564837 564003 565828 566743 563565 556998 567660 559965 556803 562233 559827  total = 149.104319 per ms 
02:05:58.658 16  switches: flows:  603474 603848 601039 599327 601560 607345 601762 597303 595241 600287 596163 603677 599218 597818 596335 602172  total = 159.838615 per ms 
02:06:58.760 16  switches: flows:  600403 601957 602551 604444 604039 603582 604653 604457 608114 601683 599157 606261 608198 605626 598396 602259  total = 160.658438 per ms 
02:07:58.862 16  switches: flows:  614324 615094 614326 615071 620018 615733 611113 612341 614268 616097 618913 610806 615058 614650 616142 614666  total = 163.702177 per ms 
02:08:59.093 16  switches: flows:  613489 608667 607554 608553 605889 611709 609274 612789 596365 614494 611527 614197 604607 618619 610378 612012  total = 162.046127 per ms 
02:09:59.194 16  switches: flows:  611016 602983 612314 607811 608106 615644 613024 610534 610115 602493 604437 611501 608274 604020 611549 612457  total = 162.165038 per ms 
02:10:59.295 16  switches: flows:  592084 605592 601867 597143 592456 599245 601517 600396 595230 594783 591082 589137 599552 589479 595922 595215  total = 158.744019 per ms 
02:11:59.397 16  switches: flows:  603838 597145 604647 609576 590389 610038 597017 597701 600216 591133 599238 601089 605549 594951 600655 605835  total = 159.880286 per ms 
02:12:59.499 16  switches: flows:  580024 568733 556047 554308 556856 554742 574169 572092 525967 561315 574100 577604 569854 573534 574607 553844  total = 150.210405 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 149104.32/163702.18/158483.27/53057.02 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:12:59.508520" elapsed="0.000383"/>
</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-07-17T02:12:59.509050" elapsed="0.000363"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-17T02:12:59.509811" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-17T02:12:59.509900" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 149104.32/163702.18/158483.27/53057.02 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-07-17T02:12:59.509575" elapsed="0.000349"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:12:59.510334" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 149104.32/163702.18/158483.27/53057.02 | 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-07-17T02:12:59.510076" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.512795" 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-07-17T02:12:59.510530" elapsed="0.002323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.515269" level="INFO">149104.32/163702.18/158483.27/53057.02</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:12:59.513001" elapsed="0.002324"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:12:59.517674" 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-07-17T02:12:59.515474" elapsed="0.002227"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:12:59.520139" level="INFO">@{result_value_list} = [ 149104.32 | 163702.18 | 158483.27 | 53057.02 ]</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-07-17T02:12:59.517890" elapsed="0.002276"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.520645" level="INFO">Length is 4.</msg>
<msg time="2026-07-17T02:12:59.520736" 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-07-17T02:12:59.520324" elapsed="0.000435"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.525728" level="INFO">min :: 149104.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-07-17T02:12:59.521141" elapsed="0.004646"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-17T02:12:59.521012" elapsed="0.004811"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.530352" level="INFO">max :: 163702.18</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-07-17T02:12:59.526046" elapsed="0.004401"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-17T02:12:59.525916" elapsed="0.004569"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.535293" level="INFO">avg :: 158483.27</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-07-17T02:12:59.530846" elapsed="0.004504"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-17T02:12:59.530573" elapsed="0.004812"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.540106" level="INFO">stdev :: 53057.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-07-17T02:12:59.535621" elapsed="0.004542"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-17T02:12:59.535474" elapsed="0.004725"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-17T02:12:59.520827" elapsed="0.019403"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.544309" level="INFO">${min} = 149104.32</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-07-17T02:12:59.540389" elapsed="0.003948"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.548256" level="INFO">${max} = 163702.18</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-07-17T02:12:59.544498" elapsed="0.003785"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.552166" level="INFO">${average} = 158483.27</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-07-17T02:12:59.548447" elapsed="0.003746"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.556049" level="INFO">${stdev} = 53057.02</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-07-17T02:12:59.552345" elapsed="0.003731"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.556592" level="INFO">${date} = 2026-07-17 02:12:59</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-17T02:12:59.556237" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.557188" level="INFO">CBench Result: 2026-07-17 02:12:59,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,149104.32,163702.18,158483.27,53057.02</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-07-17T02:12:59.556782" elapsed="0.000462"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-17T02:12:59.558282" 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-07-17T02:12:59.557874" elapsed="0.000474"/>
</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-07-17T02:12:59.558528" elapsed="0.000475"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-17T02:12:59.557385" elapsed="0.001681"/>
</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-07-17T02:02:52.670679" elapsed="606.888446"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.559616" 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-07-17T02:12:59.559275" elapsed="0.000400"/>
</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-07-17T02:12:59.560184" elapsed="0.000262"/>
</kw>
<status status="PASS" start="2026-07-17T02:12:59.559885" elapsed="0.000630"/>
</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-07-17T02:02:52.669021" elapsed="606.891533"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.561922" 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-07-17T02:12:59.561521" elapsed="0.000458"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.563198" 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-07-17T02:12:59.562867" elapsed="0.000373"/>
</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-07-17T02:12:59.563568" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-17T02:12:59.563350" elapsed="0.000294"/>
</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-07-17T02:12:59.566708" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-17T02:12:59.566409" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-07-17T02:12:59.566389" elapsed="0.000400"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-17T02:12:59.567107" 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-07-17T02:12:59.567223" 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-07-17T02:12:59.566922" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.567828" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.61 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.113" 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-07-17T02:12:59.567387" elapsed="0.000500"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-17T02:12:59.568427" 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-07-17T02:12:59.568028" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-17T02:12:59.569359" level="INFO">Length is 0.</msg>
<msg time="2026-07-17T02:12:59.569447" 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-07-17T02:12:59.569055" elapsed="0.000416"/>
</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-07-17T02:12:59.569628" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-17T02:12:59.570831" level="INFO">Logging into '10.30.170.113:22' as 'jenkins'.</msg>
<msg time="2026-07-17T02:13:00.133531" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri Jul 17 02:12:59 UTC 2026

  System load:  0.17               Processes:             105
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.113
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Fri Jul 17 02:02:53 2026 from 10.30.171.225
[?2004h[jenkins@releng-48317-782-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-07-17T02:12:59.570459" elapsed="0.563250"/>
</kw>
<msg time="2026-07-17T02:13:00.133784" 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-07-17T02:12:59.570103" elapsed="0.563778"/>
</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-07-17T02:12:59.568674" elapsed="0.565319"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-17T02:13:00.134465" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.61 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-17T02:23:06.298393" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-17T02:23:06.299229" level="INFO">${stdout} = </msg>
<msg time="2026-07-17T02:23:06.299357" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-07-17T02:13:00.134190" elapsed="606.165229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T02:23:06.299980" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.302138" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.61. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:14:05.391 16  switches: flows:  120188 122249 119280 117367 118362 120444 119065 121721 118317 118698 113745 115801 116395 116104 116183 116844  total = 31.512717 per ms 
02:15:05.492 16  switches: flows:  125150 124563 128123 124463 126839 124143 124614 123851 122828 123966 119764 120268 123524 121391 123908 119676  total = 32.896276 per ms 
02:16:05.593 16  switches: flows:  126230 126496 128108 125041 126523 123740 124739 125084 124067 125281 118965 123906 123046 123971 124106 119738  total = 33.095399 per ms 
02:17:05.694 16  switches: flows:  122659 122764 121836 121265 121851 121599 121988 121237 121140 121092 118048 117976 118761 118497 120145 119171  total = 32.113546 per ms 
02:18:05.794 16  switches: flows:  114274 115755 114521 111785 114838 113393 114787 112800 113360 112786 109895 111174 111687 109540 113274 110834  total = 30.028243 per ms 
02:19:05.895 16  switches: flows:  123802 126957 127306 121942 125692 124094 127035 123278 124065 125315 119834 121999 119487 123921 120422 121081  total = 32.882238 per ms 
02:20:05.997 16  switches: flows:  124657 127125 126348 121304 126422 121921 125967 122762 125061 125794 120333 123599 120587 122360 119894 122257  total = 32.884842 per ms 
02:21:06.098 16  switches: flows:  123794 125603 127053 121074 123108 121219 125135 122970 124650 122363 117987 120415 120748 119421 121983 119934  total = 32.569836 per ms 
02:22:06.199 16  switches: flows:  123681 123750 125535 121914 123943 122249 122170 123765 121990 121397 118161 121544 119948 118750 119920 119593  total = 32.417718 per ms 
02:23:06.300 16  switches: flows:  126381 125138 125671 122817 125398 123348 123117 124692 123097 122745 119524 123053 122772 120555 122074 120619  total = 32.795258 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30028.24/33095.40/32409.26/10839.48 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:23:06.301299" elapsed="0.001154"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-17T02:23:06.303146" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-07-17T02:23:06.302780" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-07-17T02:23:06.302647" elapsed="0.000676"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-17T02:23:06.303466" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-07-17T02:23:06.303411" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-07-17T02:23:06.303387" elapsed="0.000167"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-17T02:23:06.303618" elapsed="0.000021"/>
</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-07-17T02:23:06.307935" elapsed="0.000588"/>
</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-07-17T02:23:06.308807" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-17T02:23:06.309277" elapsed="0.000213"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-17T02:23:06.304113" elapsed="0.005510"/>
</kw>
<msg time="2026-07-17T02:23:06.309897" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-07-17T02:12:59.563987" elapsed="606.745965"/>
</kw>
<status status="PASS" start="2026-07-17T02:12:59.563670" elapsed="606.746385"/>
</branch>
<status status="PASS" start="2026-07-17T02:12:59.563330" elapsed="606.746775"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.311061" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.61:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.61. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:14:05.391 16  switches: flows:  120188 122249 119280 117367 118362 120444 119065 121721 118317 118698 113745 115801 116395 116104 116183 116844  total = 31.512717 per ms 
02:15:05.492 16  switches: flows:  125150 124563 128123 124463 126839 124143 124614 123851 122828 123966 119764 120268 123524 121391 123908 119676  total = 32.896276 per ms 
02:16:05.593 16  switches: flows:  126230 126496 128108 125041 126523 123740 124739 125084 124067 125281 118965 123906 123046 123971 124106 119738  total = 33.095399 per ms 
02:17:05.694 16  switches: flows:  122659 122764 121836 121265 121851 121599 121988 121237 121140 121092 118048 117976 118761 118497 120145 119171  total = 32.113546 per ms 
02:18:05.794 16  switches: flows:  114274 115755 114521 111785 114838 113393 114787 112800 113360 112786 109895 111174 111687 109540 113274 110834  total = 30.028243 per ms 
02:19:05.895 16  switches: flows:  123802 126957 127306 121942 125692 124094 127035 123278 124065 125315 119834 121999 119487 123921 120422 121081  total = 32.882238 per ms 
02:20:05.997 16  switches: flows:  124657 127125 126348 121304 126422 121921 125967 122762 125061 125794 120333 123599 120587 122360 119894 122257  total = 32.884842 per ms 
02:21:06.098 16  switches: flows:  123794 125603 127053 121074 123108 121219 125135 122970 124650 122363 117987 120415 120748 119421 121983 119934  total = 32.569836 per ms 
02:22:06.199 16  switches: flows:  123681 123750 125535 121914 123943 122249 122170 123765 121990 121397 118161 121544 119948 118750 119920 119593  total = 32.417718 per ms 
02:23:06.300 16  switches: flows:  126381 125138 125671 122817 125398 123348 123117 124692 123097 122745 119524 123053 122772 120555 122074 120619  total = 32.795258 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30028.24/33095.40/32409.26/10839.48 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:23:06.310393" elapsed="0.000814"/>
</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-07-17T02:23:06.311428" elapsed="0.000544"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-17T02:23:06.312513" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-17T02:23:06.312670" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30028.24/33095.40/32409.26/10839.48 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-07-17T02:23:06.312202" elapsed="0.000506"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:23:06.313287" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30028.24/33095.40/32409.26/10839.48 | 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-07-17T02:23:06.312925" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.316511" 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-07-17T02:23:06.313519" elapsed="0.003054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.318974" level="INFO">30028.24/33095.40/32409.26/10839.48</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:23:06.316749" elapsed="0.002283"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:23:06.321446" 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-07-17T02:23:06.319187" elapsed="0.002288"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-17T02:23:06.323999" level="INFO">@{result_value_list} = [ 30028.24 | 33095.40 | 32409.26 | 10839.48 ]</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-07-17T02:23:06.321731" elapsed="0.002296"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.324510" level="INFO">Length is 4.</msg>
<msg time="2026-07-17T02:23:06.324620" 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-07-17T02:23:06.324185" elapsed="0.000467"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.329446" level="INFO">min :: 30028.24</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-17T02:23:06.325073" elapsed="0.004433"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-17T02:23:06.324939" elapsed="0.004603"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.334146" level="INFO">max :: 33095.40</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-07-17T02:23:06.329796" elapsed="0.004409"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-17T02:23:06.329650" elapsed="0.004591"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.341986" level="INFO">avg :: 32409.26</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-07-17T02:23:06.334454" elapsed="0.007823"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-17T02:23:06.334326" elapsed="0.008086"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.351224" level="INFO">stdev :: 10839.48</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-07-17T02:23:06.343340" elapsed="0.007970"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-17T02:23:06.342812" elapsed="0.008548"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-17T02:23:06.324732" elapsed="0.026675"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.356469" level="INFO">${min} = 30028.24</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-17T02:23:06.351699" elapsed="0.004798"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.360427" level="INFO">${max} = 33095.40</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-07-17T02:23:06.356674" elapsed="0.003781"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.364521" level="INFO">${average} = 32409.26</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-07-17T02:23:06.360629" elapsed="0.003921"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.368654" level="INFO">${stdev} = 10839.48</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-07-17T02:23:06.364727" elapsed="0.003956"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.369335" level="INFO">${date} = 2026-07-17 02:23:06</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-17T02:23:06.368882" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.369989" level="INFO">CBench Result: 2026-07-17 02:23:06,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30028.24,33095.40,32409.26,10839.48</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-07-17T02:23:06.369512" elapsed="0.000546"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-17T02:23:06.372542" 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-07-17T02:23:06.370985" elapsed="0.001908"/>
</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-07-17T02:23:06.373485" elapsed="0.001728"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-17T02:23:06.370318" elapsed="0.005099"/>
</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-07-17T02:12:59.562287" elapsed="606.813385"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.376992" 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-07-17T02:23:06.376105" elapsed="0.001046"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-17T02:23:06.379982" 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-07-17T02:23:06.379196" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-07-17T02:23:06.380413" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-07-17T02:23:06.380168" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-07-17T02:23:06.380123" elapsed="0.000454"/>
</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-07-17T02:23:06.380833" elapsed="0.000033"/>
</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-07-17T02:23:06.381069" elapsed="0.000031"/>
</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-07-17T02:23:06.381308" elapsed="0.000031"/>
</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-07-17T02:23:06.381690" elapsed="0.000033"/>
</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-07-17T02:23:06.381917" elapsed="0.000029"/>
</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-07-17T02:23:06.382128" elapsed="0.000044"/>
</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-07-17T02:23:06.382359" elapsed="0.000029"/>
</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-07-17T02:23:06.382775" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-07-17T02:23:06.382489" elapsed="0.000380"/>
</branch>
<status status="NOT RUN" start="2026-07-17T02:23:06.382464" elapsed="0.000445"/>
</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-07-17T02:23:06.378226" elapsed="0.004768"/>
</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-07-17T02:12:59.560984" elapsed="606.822083"/>
</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-07-17T01:52:43.485010" elapsed="1822.898944"/>
</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>
