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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-10T01:45:27.034375" elapsed="0.683659"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-10T01:45:27.767721" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-10T01:45:27.718328" elapsed="0.049477"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-10T01:45:27.769477" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-10T01:45:27.769585" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-10T01:45:27.767970" elapsed="0.001644"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-10T01:45:27.769784" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T01:45:27.770149" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:45:27.770866" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:45:27.770504" elapsed="0.000416"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-10T01:45:27.770973" elapsed="0.000055"/>
</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.118
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-10T01:45:27.032865" elapsed="0.738285"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-06-10T01:45:27.029248" elapsed="0.741965"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-10T01:45:27.771784" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-10T01:45:27.771398" elapsed="0.000444"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-10T01:45:27.772241" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-10T01:45:27.771995" elapsed="0.000302"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-10T01:45:27.772887" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-10T01:45:27.772451" elapsed="0.000501"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-10T01:45:27.773457" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-10T01:45:27.773123" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-10T01:45:27.774078" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-10T01:45:27.773648" elapsed="0.000460"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-10T01:45:27.774575" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-10T01:45:27.774266" elapsed="0.000351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-06-10T01:45:27.774976" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-10T01:45:27.774704" elapsed="0.000328"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-10T01:45:27.779330" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T01:45:27.778931" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-10T01:45:27.780664" level="INFO">Length is 0.</msg>
<msg time="2026-06-10T01:45:27.780753" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-10T01:45:27.779928" elapsed="0.000870"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T01:45:27.780964" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-10T01:45:27.782335" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-06-10T01:45:28.473854" 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 Wed Jun 10 01:45:28 UTC 2026

  System load:  0.07               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.206
  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-745-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-10T01:45:27.781836" elapsed="0.692157"/>
</kw>
<msg time="2026-06-10T01:45:28.474078" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T01:45:27.781466" elapsed="0.692700"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-10T01:45:27.779565" elapsed="0.694718"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.481813" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-06-10T01:45:28.474494" elapsed="0.009078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T01:45:28.483848" elapsed="0.000376"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-06-10T01:45:27.778398" elapsed="0.705914"/>
</kw>
<status status="PASS" start="2026-06-10T01:45:27.775117" elapsed="0.709246"/>
</branch>
<status status="PASS" start="2026-06-10T01:45:27.774680" elapsed="0.709729"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-10T01:45:28.484661" elapsed="0.000666"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-10T01:45:28.491386" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-06-10T01:45:28.491221" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-06-10T01:45:28.491189" elapsed="0.000305"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-10T01:45:28.496467" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-06-10T01:45:28.496311" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-06-10T01:45:28.496285" elapsed="0.000299"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T01:45:28.496784" elapsed="0.000594"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.497959" level="INFO">Logging into '10.30.170.118:8101' as 'karaf'.</msg>
<msg time="2026-06-10T01:45:28.663450" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-10T01:45:28.497584" elapsed="0.165951"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.756788" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-10T01:45:28.663691" elapsed="0.093157"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.760686" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-10T01:45:28.760863" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-10T01:45:28.756990" elapsed="0.003905"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-10T01:45:28.761032" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T01:45:28.761358" elapsed="0.000172"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:45:28.761963" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:45:28.761664" elapsed="0.000354"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-10T01:45:28.762063" elapsed="0.000040"/>
</return>
<msg time="2026-06-10T01:45:28.762236" 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.118
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-10T01:45:28.495822" elapsed="0.266445"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-10T01:45:28.762410" elapsed="0.000504"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-10T01:45:28.762964" elapsed="0.000032"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-06-10T01:45:28.490802" elapsed="0.272314"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-10T01:45:28.766690" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-06-10T01:45:28.766568" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-06-10T01:45:28.766546" elapsed="0.000233"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T01:45:28.766909" elapsed="0.000416"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.767723" level="INFO">Logging into '10.30.170.118:8101' as 'karaf'.</msg>
<msg time="2026-06-10T01:45:28.935787" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-10T01:45:28.767471" elapsed="0.168396"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.957567" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-10T01:45:28.936017" elapsed="0.021605"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.959317" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-10T01:45:28.959408" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-10T01:45:28.957777" elapsed="0.001659"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-10T01:45:28.959568" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T01:45:28.959888" elapsed="0.000152"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:45:28.960450" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:45:28.960172" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-10T01:45:28.960544" elapsed="0.000036"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.118
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-10T01:45:28.766259" elapsed="0.194419"/>
</kw>
<status status="PASS" start="2026-06-10T01:45:27.027377" elapsed="1.933361"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:45:28.962494" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:45:28.961570" elapsed="0.000988"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-10T01:45:28.963951" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-10T01:45:28.963589" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-10T01:45:28.964287" elapsed="0.000209"/>
</kw>
<status status="NOT RUN" start="2026-06-10T01:45:28.964066" elapsed="0.000468"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-10T01:45:28.967447" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-10T01:45:28.967193" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-06-10T01:45:28.967174" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.968179" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-10T01:45:28.967659" elapsed="0.000694"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:45:28.968935" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.118 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:45:28.968491" elapsed="0.000511"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.969599" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T01:45:28.969141" elapsed="0.000485"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-10T01:45:28.970528" level="INFO">Length is 0.</msg>
<msg time="2026-06-10T01:45:28.970618" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-10T01:45:28.970218" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T01:45:28.970806" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-10T01:45:28.971993" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-06-10T01:45:29.295494" 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 Wed Jun 10 01:45:28 UTC 2026

  System load:  0.07               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.206
  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: Wed Jun 10 01:45:28 2026 from 10.30.171.36
[?2004h[jenkins@releng-48317-745-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-10T01:45:28.971627" elapsed="0.323989"/>
</kw>
<msg time="2026-06-10T01:45:29.295682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T01:45:28.971286" elapsed="0.324470"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-10T01:45:28.969845" elapsed="0.326030"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-10T01:45:29.296339" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.118 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-10T01:55:35.439844" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-10T01:55:35.440373" level="INFO">${stdout} = </msg>
<msg time="2026-06-10T01:55:35.440518" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-10T01:45:29.296052" elapsed="606.144547"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T01:55:35.441090" elapsed="0.000747"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.442978" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118: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.118. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:46:34.529 16  switches: flows:  115770 115466 114157 113570 114016 113314 112241 114728 112636 110173 109965 111248 110971 110852 112578 110310  total = 30.033250 per ms 
01:47:34.630 16  switches: flows:  125687 128329 126303 126723 126215 125992 125118 125655 123105 123306 123562 123398 122620 123373 124064 121191  total = 33.188567 per ms 
01:48:34.730 16  switches: flows:  111161 116731 113454 112364 109982 111622 110453 114129 112085 109846 107346 112062 110612 111621 111588 108211  total = 29.671577 per ms 
01:49:34.830 16  switches: flows:  115530 118598 117803 115181 116287 115448 114822 116280 114288 110331 113161 112882 113713 114413 115618 110398  total = 30.528252 per ms 
01:50:34.930 16  switches: flows:  117621 123376 120215 118714 119289 119691 116700 120495 118340 115151 115761 117153 117464 118821 118740 115476  total = 31.497508 per ms 
01:51:35.031 16  switches: flows:  120584 125561 121477 120340 119986 120963 118273 121505 119415 117022 118480 118183 118431 118979 119031 115106  total = 31.835814 per ms 
01:52:35.131 16  switches: flows:  125355 131838 127300 126584 125921 126162 125364 127621 124771 123028 123473 124154 125156 126951 125433 122937  total = 33.478238 per ms 
01:53:35.231 16  switches: flows:  122176 127089 123364 121733 122321 122690 120334 120745 120825 118986 119671 120105 121366 120941 120920 115513  total = 32.259135 per ms 
01:54:35.331 16  switches: flows:  124914 130972 125377 125013 124709 125177 124238 125587 123844 122426 121889 122483 124639 124542 125459 121852  total = 33.163271 per ms 
01:55:35.432 16  switches: flows:  125628 130827 128487 128056 129487 126229 126212 127013 123541 122703 125177 124460 124927 125178 125961 123375  total = 33.564904 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29671.58/33564.90/32131.92/10789.08 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.442205" elapsed="0.001063"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-10T01:55:35.443904" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-06-10T01:55:35.443477" elapsed="0.000603"/>
</branch>
<status status="PASS" start="2026-06-10T01:55:35.443404" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-10T01:55:35.444252" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-06-10T01:55:35.444201" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-06-10T01:55:35.444178" elapsed="0.000159"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-10T01:55:35.444382" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T01:55:35.448024" elapsed="0.000470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T01:55:35.448734" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T01:55:35.449172" elapsed="0.000140"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-10T01:55:35.444849" elapsed="0.004535"/>
</kw>
<msg time="2026-06-10T01:55:35.449561" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-10T01:45:28.964905" elapsed="606.484693"/>
</kw>
<status status="PASS" start="2026-06-10T01:45:28.964561" elapsed="606.485106"/>
</branch>
<status status="PASS" start="2026-06-10T01:45:28.964046" elapsed="606.485653"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.450322" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118: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.118. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:46:34.529 16  switches: flows:  115770 115466 114157 113570 114016 113314 112241 114728 112636 110173 109965 111248 110971 110852 112578 110310  total = 30.033250 per ms 
01:47:34.630 16  switches: flows:  125687 128329 126303 126723 126215 125992 125118 125655 123105 123306 123562 123398 122620 123373 124064 121191  total = 33.188567 per ms 
01:48:34.730 16  switches: flows:  111161 116731 113454 112364 109982 111622 110453 114129 112085 109846 107346 112062 110612 111621 111588 108211  total = 29.671577 per ms 
01:49:34.830 16  switches: flows:  115530 118598 117803 115181 116287 115448 114822 116280 114288 110331 113161 112882 113713 114413 115618 110398  total = 30.528252 per ms 
01:50:34.930 16  switches: flows:  117621 123376 120215 118714 119289 119691 116700 120495 118340 115151 115761 117153 117464 118821 118740 115476  total = 31.497508 per ms 
01:51:35.031 16  switches: flows:  120584 125561 121477 120340 119986 120963 118273 121505 119415 117022 118480 118183 118431 118979 119031 115106  total = 31.835814 per ms 
01:52:35.131 16  switches: flows:  125355 131838 127300 126584 125921 126162 125364 127621 124771 123028 123473 124154 125156 126951 125433 122937  total = 33.478238 per ms 
01:53:35.231 16  switches: flows:  122176 127089 123364 121733 122321 122690 120334 120745 120825 118986 119671 120105 121366 120941 120920 115513  total = 32.259135 per ms 
01:54:35.331 16  switches: flows:  124914 130972 125377 125013 124709 125177 124238 125587 123844 122426 121889 122483 124639 124542 125459 121852  total = 33.163271 per ms 
01:55:35.432 16  switches: flows:  125628 130827 128487 128056 129487 126229 126212 127013 123541 122703 125177 124460 124927 125178 125961 123375  total = 33.564904 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29671.58/33564.90/32131.92/10789.08 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.449914" elapsed="0.000511"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-10T01:55:35.450627" elapsed="0.000539"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-10T01:55:35.451710" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-10T01:55:35.451892" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29671.58/33564.90/32131.92/10789.08 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-10T01:55:35.451387" elapsed="0.000542"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T01:55:35.452508" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29671.58/33564.90/32131.92/10789.08 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T01:55:35.452143" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.456026" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.452748" elapsed="0.003363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.460594" level="INFO">29671.58/33564.90/32131.92/10789.08</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.456314" elapsed="0.004359"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T01:55:35.464019" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T01:55:35.460901" elapsed="0.003153"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T01:55:35.466431" level="INFO">@{result_value_list} = [ 29671.58 | 33564.90 | 32131.92 | 10789.08 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T01:55:35.464243" elapsed="0.002215"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.466995" level="INFO">Length is 4.</msg>
<msg time="2026-06-10T01:55:35.467090" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-10T01:55:35.466609" elapsed="0.000505"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.471845" level="INFO">min :: 29671.58</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.467503" elapsed="0.004402"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-10T01:55:35.467373" elapsed="0.004567"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.476570" level="INFO">max :: 33564.90</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.472159" elapsed="0.004468"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-10T01:55:35.472032" elapsed="0.004630"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.481333" level="INFO">avg :: 32131.92</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.476906" elapsed="0.004484"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-10T01:55:35.476751" elapsed="0.004674"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.486025" level="INFO">stdev :: 10789.08</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.481644" elapsed="0.004442"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-10T01:55:35.481517" elapsed="0.004605"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-10T01:55:35.467183" elapsed="0.018973"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.490073" level="INFO">${min} = 29671.58</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T01:55:35.486313" elapsed="0.003788"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.494115" level="INFO">${max} = 33564.90</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T01:55:35.490255" elapsed="0.003887"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.497991" level="INFO">${average} = 32131.92</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T01:55:35.494294" elapsed="0.003724"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.501955" level="INFO">${stdev} = 10789.08</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T01:55:35.498169" elapsed="0.003813"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.502498" level="INFO">${date} = 2026-06-10 01:55:35</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-10T01:55:35.502141" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.503095" level="INFO">CBench Result: 2026-06-10 01:55:35,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29671.58,33564.90,32131.92,10789.08</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.502670" elapsed="0.000480"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-10T01:55:35.504186" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-10T01:55:35.503754" elapsed="0.000497"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-10T01:55:35.504401" elapsed="0.000473"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-10T01:55:35.503290" elapsed="0.001651"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-06-10T01:45:28.962973" elapsed="606.542029"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.505483" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-10T01:55:35.505153" elapsed="0.000388"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-10T01:55:35.506069" elapsed="0.000264"/>
</kw>
<status status="PASS" start="2026-06-10T01:55:35.505771" elapsed="0.000633"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-10T01:45:28.960904" elapsed="606.545538"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.507874" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.507467" elapsed="0.000463"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.509149" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-10T01:55:35.508822" elapsed="0.000370"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-10T01:55:35.509520" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-10T01:55:35.509300" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-10T01:55:35.512557" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-10T01:55:35.512311" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-06-10T01:55:35.512291" elapsed="0.000346"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-10T01:55:35.512991" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-10T01:55:35.512795" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.513685" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.118 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T01:55:35.513271" elapsed="0.000471"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-10T01:55:35.514296" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T01:55:35.513899" elapsed="0.000423"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-10T01:55:35.515203" level="INFO">Length is 0.</msg>
<msg time="2026-06-10T01:55:35.515289" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-10T01:55:35.514905" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T01:55:35.515451" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-10T01:55:35.516634" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-06-10T01:55:36.108471" 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 Wed Jun 10 01:55:35 UTC 2026

  System load:  1.0                Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.206
  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: Wed Jun 10 01:45:29 2026 from 10.30.171.36
[?2004h[jenkins@releng-48317-745-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-10T01:55:35.516291" elapsed="0.592331"/>
</kw>
<msg time="2026-06-10T01:55:36.108699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T01:55:35.515952" elapsed="0.592856"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-10T01:55:35.514521" elapsed="0.594396"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-10T01:55:36.109418" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.118 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-10T02:05:42.163918" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-10T02:05:42.164339" level="INFO">${stdout} = </msg>
<msg time="2026-06-10T02:05:42.164407" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.118:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-10T01:55:36.109126" elapsed="606.055318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T02:05:42.164800" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.166151" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.118: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.118. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:41.232 16  switches: flows:  464152 453575 457014 456015 456380 442957 458256 450387 442632 447409 436482 451928 445404 442875 441703 445399  total = 119.876133 per ms 
01:57:41.333 16  switches: flows:  437554 420928 430782 422118 437589 435392 429953 433447 406590 438812 438648 426995 424172 418727 423482 418935  total = 113.876533 per ms 
01:58:41.435 16  switches: flows:  444619 452272 449823 454839 448935 447701 449566 444119 453572 448524 450277 446688 447272 460366 445725 445782  total = 119.633593 per ms 
01:59:41.538 16  switches: flows:  511333 501945 506397 503469 499732 504731 507551 511797 507638 501865 503924 503218 508802 510196 511734 507712  total = 134.804726 per ms 
02:00:41.640 16  switches: flows:  509287 519414 512454 515262 509388 516788 516009 516833 512675 513060 516412 518569 517917 521552 518567 514527  total = 137.246286 per ms 
02:01:41.741 16  switches: flows:  502618 507771 503385 506773 508686 510661 501652 509054 499701 509743 507438 500748 501874 503091 508821 504981  total = 134.555680 per ms 
02:02:41.843 16  switches: flows:  527373 527706 530547 528465 521551 541395 530450 541464 531365 535220 522910 527565 519635 522200 528985 517873  total = 140.675099 per ms 
02:03:41.945 16  switches: flows:  485081 484485 486187 485799 488620 490594 490835 480084 486674 486096 491143 475403 483024 482371 486352 488781  total = 129.307056 per ms 
02:04:42.047 16  switches: flows:  557930 561553 560661 565145 554230 558043 558596 565359 568908 565793 551859 557608 557941 567767 557409 561877  total = 149.260271 per ms 
02:05:42.149 16  switches: flows:  550916 548962 555107 547835 551238 542467 547421 545295 549792 553685 541517 462016 555332 545810 544820 549949  total = 144.625352 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 113876.53/149260.27/133776.07/45863.06 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.165624" elapsed="0.000727"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-10T02:05:42.166710" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-06-10T02:05:42.166485" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-06-10T02:05:42.166438" elapsed="0.000432"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-10T02:05:42.167002" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-06-10T02:05:42.166950" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-06-10T02:05:42.166927" elapsed="0.000162"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-10T02:05:42.167131" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T02:05:42.170699" elapsed="0.000494"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T02:05:42.171400" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T02:05:42.171828" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-10T02:05:42.167602" elapsed="0.004448"/>
</kw>
<msg time="2026-06-10T02:05:42.172227" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.118:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-10T01:55:35.509931" elapsed="606.662333"/>
</kw>
<status status="PASS" start="2026-06-10T01:55:35.509604" elapsed="606.662728"/>
</branch>
<status status="PASS" start="2026-06-10T01:55:35.509279" elapsed="606.663085"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.172984" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.118: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.118. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:41.232 16  switches: flows:  464152 453575 457014 456015 456380 442957 458256 450387 442632 447409 436482 451928 445404 442875 441703 445399  total = 119.876133 per ms 
01:57:41.333 16  switches: flows:  437554 420928 430782 422118 437589 435392 429953 433447 406590 438812 438648 426995 424172 418727 423482 418935  total = 113.876533 per ms 
01:58:41.435 16  switches: flows:  444619 452272 449823 454839 448935 447701 449566 444119 453572 448524 450277 446688 447272 460366 445725 445782  total = 119.633593 per ms 
01:59:41.538 16  switches: flows:  511333 501945 506397 503469 499732 504731 507551 511797 507638 501865 503924 503218 508802 510196 511734 507712  total = 134.804726 per ms 
02:00:41.640 16  switches: flows:  509287 519414 512454 515262 509388 516788 516009 516833 512675 513060 516412 518569 517917 521552 518567 514527  total = 137.246286 per ms 
02:01:41.741 16  switches: flows:  502618 507771 503385 506773 508686 510661 501652 509054 499701 509743 507438 500748 501874 503091 508821 504981  total = 134.555680 per ms 
02:02:41.843 16  switches: flows:  527373 527706 530547 528465 521551 541395 530450 541464 531365 535220 522910 527565 519635 522200 528985 517873  total = 140.675099 per ms 
02:03:41.945 16  switches: flows:  485081 484485 486187 485799 488620 490594 490835 480084 486674 486096 491143 475403 483024 482371 486352 488781  total = 129.307056 per ms 
02:04:42.047 16  switches: flows:  557930 561553 560661 565145 554230 558043 558596 565359 568908 565793 551859 557608 557941 567767 557409 561877  total = 149.260271 per ms 
02:05:42.149 16  switches: flows:  550916 548962 555107 547835 551238 542467 547421 545295 549792 553685 541517 462016 555332 545810 544820 549949  total = 144.625352 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 113876.53/149260.27/133776.07/45863.06 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.172558" elapsed="0.000529"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-10T02:05:42.173291" elapsed="0.000537"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-10T02:05:42.174355" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-10T02:05:42.174479" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 113876.53/149260.27/133776.07/45863.06 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-10T02:05:42.174053" elapsed="0.000460"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T02:05:42.175165" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 113876.53/149260.27/133776.07/45863.06 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T02:05:42.174787" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.177682" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.175404" elapsed="0.002335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.180103" level="INFO">113876.53/149260.27/133776.07/45863.06</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.177900" elapsed="0.002260"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T02:05:42.182507" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T02:05:42.180309" elapsed="0.002256"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T02:05:42.184994" level="INFO">@{result_value_list} = [ 113876.53 | 149260.27 | 133776.07 | 45863.06 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T02:05:42.182780" elapsed="0.002242"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.185490" level="INFO">Length is 4.</msg>
<msg time="2026-06-10T02:05:42.185578" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-10T02:05:42.185177" elapsed="0.000425"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.190487" level="INFO">min :: 113876.53</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.186008" elapsed="0.004562"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-10T02:05:42.185877" elapsed="0.004730"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.195131" level="INFO">max :: 149260.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-06-10T02:05:42.190849" elapsed="0.004338"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-10T02:05:42.190699" elapsed="0.004524"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.199725" level="INFO">avg :: 133776.07</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.195435" elapsed="0.004362"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-10T02:05:42.195311" elapsed="0.004521"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.204305" level="INFO">stdev :: 45863.06</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.200048" elapsed="0.004314"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-10T02:05:42.199920" elapsed="0.004477"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-10T02:05:42.185668" elapsed="0.018761"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.208393" level="INFO">${min} = 113876.53</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T02:05:42.204585" elapsed="0.003838"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.212693" level="INFO">${max} = 149260.27</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T02:05:42.208578" elapsed="0.004144"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.216624" level="INFO">${average} = 133776.07</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T02:05:42.212901" elapsed="0.003750"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.220525" level="INFO">${stdev} = 45863.06</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T02:05:42.216819" elapsed="0.003733"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.221082" level="INFO">${date} = 2026-06-10 02:05:42</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-10T02:05:42.220710" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.221666" level="INFO">CBench Result: 2026-06-10 02:05:42,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,113876.53,149260.27,133776.07,45863.06</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.221256" elapsed="0.000467"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-10T02:05:42.222865" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-10T02:05:42.222358" elapsed="0.000573"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-10T02:05:42.223082" elapsed="0.000478"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-10T02:05:42.221887" elapsed="0.001739"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-06-10T01:55:35.508236" elapsed="606.715450"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.224176" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-10T02:05:42.223850" elapsed="0.000384"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-10T02:05:42.224739" elapsed="0.000281"/>
</kw>
<status status="PASS" start="2026-06-10T02:05:42.224440" elapsed="0.000652"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-10T01:55:35.506898" elapsed="606.718232"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.226310" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.225932" elapsed="0.000435"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.227619" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-10T02:05:42.227291" elapsed="0.000369"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-10T02:05:42.228015" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-10T02:05:42.227795" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-10T02:05:42.231213" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-10T02:05:42.230952" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-06-10T02:05:42.230931" elapsed="0.000363"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-10T02:05:42.231636" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-10T02:05:42.231427" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.232443" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.118 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:05:42.231972" elapsed="0.000533"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-10T02:05:42.233096" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T02:05:42.232648" elapsed="0.000477"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-10T02:05:42.234039" level="INFO">Length is 0.</msg>
<msg time="2026-06-10T02:05:42.234138" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-10T02:05:42.233701" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T02:05:42.234305" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-10T02:05:42.235581" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-06-10T02:05:42.883493" 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 Wed Jun 10 02:05:42 UTC 2026

  System load:  0.32               Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.206
  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: Wed Jun 10 01:55:36 2026 from 10.30.171.36
[?2004h[jenkins@releng-48317-745-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-10T02:05:42.235187" elapsed="0.648502"/>
</kw>
<msg time="2026-06-10T02:05:42.883793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T02:05:42.234821" elapsed="0.649057"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-10T02:05:42.233329" elapsed="0.650663"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-10T02:05:42.884493" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.118 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-10T02:15:48.926264" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-10T02:15:48.926953" level="INFO">${stdout} = </msg>
<msg time="2026-06-10T02:15:48.927060" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-10T02:05:42.884202" elapsed="606.042914"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T02:15:48.927608" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.929625" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118: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.118. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:48.001 16  switches: flows:  118784 121223 119921 119149 118903 120807 121329 120470 118775 118448 118142 119520 119326 116517 117892 115421  total = 31.743783 per ms 
02:07:48.101 16  switches: flows:  126199 128372 126968 125314 127049 128952 126706 127514 126537 123480 124457 128377 125273 124750 124746 121175  total = 33.541766 per ms 
02:08:48.202 16  switches: flows:  123113 123101 122695 122625 122337 125530 124789 121469 124269 122287 120598 122450 122771 120312 119341 118983  total = 32.556803 per ms 
02:09:48.302 16  switches: flows:  129790 129415 130720 131003 127800 133184 132325 128578 129956 131623 127510 127675 130289 126223 125339 128297  total = 34.437917 per ms 
02:10:48.402 16  switches: flows:  132222 129570 130708 132137 131028 135091 134782 128895 132169 130268 126924 129342 131604 127027 125773 128640  total = 34.711709 per ms 
02:11:48.502 16  switches: flows:  129411 128723 130981 130271 129143 130840 132048 127709 130950 130246 127086 126969 130546 124150 125513 127234  total = 34.306405 per ms 
02:12:48.603 16  switches: flows:  128359 128329 131684 131390 128534 131160 131313 128378 130148 128788 127268 127927 130383 124346 124075 127655  total = 34.271683 per ms 
02:13:48.703 16  switches: flows:  128984 130341 130984 132145 129665 131429 131323 128126 131506 130697 126899 128484 131458 126184 124229 128639  total = 34.460660 per ms 
02:14:48.803 16  switches: flows:  126892 126371 129629 129850 125762 129273 130013 126191 129446 127759 124549 125924 128922 124154 122690 125044  total = 33.818038 per ms 
02:15:48.904 16  switches: flows:  120815 123145 123896 123473 120867 122652 123681 121146 122700 122615 119542 120319 122403 118483 116506 119493  total = 32.308318 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32308.32/34711.71/33823.70/11304.03 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.928897" elapsed="0.001145"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-10T02:15:48.930554" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-06-10T02:15:48.930249" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-06-10T02:15:48.930182" 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-06-10T02:15:48.931003" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-06-10T02:15:48.930923" elapsed="0.000168"/>
</branch>
<status status="NOT RUN" start="2026-06-10T02:15:48.930888" elapsed="0.000250"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-10T02:15:48.931208" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-10T02:15:48.935648" elapsed="0.000353"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-10T02:15:48.936159" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-10T02:15:48.936454" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-10T02:15:48.931942" elapsed="0.004666"/>
</kw>
<msg time="2026-06-10T02:15:48.936737" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-10T02:05:42.228409" elapsed="606.708370"/>
</kw>
<status status="PASS" start="2026-06-10T02:05:42.228098" elapsed="606.708734"/>
</branch>
<status status="PASS" start="2026-06-10T02:05:42.227770" elapsed="606.709085"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.937286" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.118: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.118. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:48.001 16  switches: flows:  118784 121223 119921 119149 118903 120807 121329 120470 118775 118448 118142 119520 119326 116517 117892 115421  total = 31.743783 per ms 
02:07:48.101 16  switches: flows:  126199 128372 126968 125314 127049 128952 126706 127514 126537 123480 124457 128377 125273 124750 124746 121175  total = 33.541766 per ms 
02:08:48.202 16  switches: flows:  123113 123101 122695 122625 122337 125530 124789 121469 124269 122287 120598 122450 122771 120312 119341 118983  total = 32.556803 per ms 
02:09:48.302 16  switches: flows:  129790 129415 130720 131003 127800 133184 132325 128578 129956 131623 127510 127675 130289 126223 125339 128297  total = 34.437917 per ms 
02:10:48.402 16  switches: flows:  132222 129570 130708 132137 131028 135091 134782 128895 132169 130268 126924 129342 131604 127027 125773 128640  total = 34.711709 per ms 
02:11:48.502 16  switches: flows:  129411 128723 130981 130271 129143 130840 132048 127709 130950 130246 127086 126969 130546 124150 125513 127234  total = 34.306405 per ms 
02:12:48.603 16  switches: flows:  128359 128329 131684 131390 128534 131160 131313 128378 130148 128788 127268 127927 130383 124346 124075 127655  total = 34.271683 per ms 
02:13:48.703 16  switches: flows:  128984 130341 130984 132145 129665 131429 131323 128126 131506 130697 126899 128484 131458 126184 124229 128639  total = 34.460660 per ms 
02:14:48.803 16  switches: flows:  126892 126371 129629 129850 125762 129273 130013 126191 129446 127759 124549 125924 128922 124154 122690 125044  total = 33.818038 per ms 
02:15:48.904 16  switches: flows:  120815 123145 123896 123473 120867 122652 123681 121146 122700 122615 119542 120319 122403 118483 116506 119493  total = 32.308318 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32308.32/34711.71/33823.70/11304.03 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.936997" elapsed="0.000366"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-10T02:15:48.937511" elapsed="0.000389"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-10T02:15:48.938309" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-10T02:15:48.938404" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 32308.32/34711.71/33823.70/11304.03 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-10T02:15:48.938091" elapsed="0.000339"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T02:15:48.938853" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 32308.32/34711.71/33823.70/11304.03 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T02:15:48.938585" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.941332" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.939024" elapsed="0.002365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.943790" level="INFO">32308.32/34711.71/33823.70/11304.03</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.941536" elapsed="0.002312"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T02:15:48.946226" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T02:15:48.943999" elapsed="0.002257"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-10T02:15:48.948662" level="INFO">@{result_value_list} = [ 32308.32 | 34711.71 | 33823.70 | 11304.03 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-10T02:15:48.946454" elapsed="0.002236"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.949165" level="INFO">Length is 4.</msg>
<msg time="2026-06-10T02:15:48.949253" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-10T02:15:48.948859" elapsed="0.000419"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.953970" level="INFO">min :: 32308.32</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.949666" elapsed="0.004394"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-10T02:15:48.949531" elapsed="0.004566"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.958613" level="INFO">max :: 34711.71</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.954311" elapsed="0.004358"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-10T02:15:48.954185" elapsed="0.004518"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.963423" level="INFO">avg :: 33823.70</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.958931" elapsed="0.004573"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-10T02:15:48.958801" elapsed="0.004746"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.968874" level="INFO">stdev :: 11304.03</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.963827" elapsed="0.005107"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-10T02:15:48.963639" elapsed="0.005330"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-10T02:15:48.949344" elapsed="0.019655"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.973220" level="INFO">${min} = 32308.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-06-10T02:15:48.969190" elapsed="0.004058"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.977161" level="INFO">${max} = 34711.71</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T02:15:48.973404" elapsed="0.003785"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.981049" level="INFO">${average} = 33823.70</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T02:15:48.977342" elapsed="0.003734"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.984935" level="INFO">${stdev} = 11304.03</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-10T02:15:48.981227" elapsed="0.003734"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.985466" level="INFO">${date} = 2026-06-10 02:15:48</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-10T02:15:48.985121" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.986098" level="INFO">CBench Result: 2026-06-10 02:15:48,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,32308.32,34711.71,33823.70,11304.03</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-10T02:15:48.985644" elapsed="0.000517"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-10T02:15:48.987243" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-10T02:15:48.986780" elapsed="0.000529"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-10T02:15:48.987459" elapsed="0.000472"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-10T02:15:48.986301" elapsed="0.001694"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-06-10T02:05:42.226692" elapsed="606.761361"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.988528" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-10T02:15:48.988201" elapsed="0.000384"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-10T02:15:48.989804" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-10T02:15:48.989303" elapsed="0.000528"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-10T02:15:48.990083" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-06-10T02:15:48.989908" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-06-10T02:15:48.989887" elapsed="0.000284"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.990323" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.990480" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.990640" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.990850" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.991008" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.991154" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.991300" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-06-10T02:15:48.991518" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-10T02:15:48.991382" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-06-10T02:15:48.991366" elapsed="0.000227"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-06-10T02:15:48.988971" elapsed="0.002674"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-10T02:05:42.225416" elapsed="606.766273"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-06-10T01:45:26.460889" elapsed="1822.531228"/>
</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>
