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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-27T01:52:00.366165" elapsed="0.606266"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-27T01:52:01.021250" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-27T01:52:00.972749" elapsed="0.048639"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-27T01:52:01.023324" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-27T01:52:01.023449" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-27T01:52:01.021611" elapsed="0.001869"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-27T01:52:01.023648" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T01:52:01.024040" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:52:01.024981" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:52:01.024549" elapsed="0.000495"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T01:52:01.025101" elapsed="0.000070"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.22
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-27T01:52:00.364590" elapsed="0.660720"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-27T01:52:00.360850" elapsed="0.664538"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T01:52:01.026088" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-27T01:52:01.025596" elapsed="0.000552"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T01:52:01.026575" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-27T01:52:01.026309" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-27T01:52:01.027277" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-27T01:52:01.026824" elapsed="0.000484"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T01:52:01.027862" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T01:52:01.027487" elapsed="0.000422"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-27T01:52:01.028543" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-27T01:52:01.028068" elapsed="0.000506"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T01:52:01.029107" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T01:52:01.028773" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-04-27T01:52:01.029480" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-27T01:52:01.029253" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T01:52:01.034287" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T01:52:01.033859" elapsed="0.000456"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T01:52:01.035385" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T01:52:01.035471" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T01:52:01.034901" elapsed="0.000595"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T01:52:01.035643" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T01:52:01.037122" level="INFO">Logging into '10.30.171.173:22' as 'jenkins'.</msg>
<msg time="2026-04-27T01:52:01.736645" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Apr 27 01:52:01 UTC 2026

  System load:  0.02               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.173
  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-63164-207-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-27T01:52:01.036588" elapsed="0.700386"/>
</kw>
<msg time="2026-04-27T01:52:01.737142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T01:52:01.036169" elapsed="0.701140"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-27T01:52:01.034528" elapsed="0.702992"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-04-27T01:52:01.747160" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-04-27T01:52:01.737918" elapsed="0.011158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T01:52:01.749554" elapsed="0.000664"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-04-27T01:52:01.033271" elapsed="0.717072"/>
</kw>
<status status="PASS" start="2026-04-27T01:52:01.029825" elapsed="0.720581"/>
</branch>
<status status="PASS" start="2026-04-27T01:52:01.029222" elapsed="0.721251"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-27T01:52:01.750745" elapsed="0.000898"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-27T01:52:01.758543" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-27T01:52:01.758285" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-27T01:52:01.758223" elapsed="0.000497"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-27T01:52:01.763605" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-27T01:52:01.763412" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-27T01:52:01.763371" elapsed="0.000369"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T01:52:01.763976" elapsed="0.000759"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-27T01:52:01.765209" level="INFO">Logging into '10.30.171.22:8101' as 'karaf'.</msg>
<msg time="2026-04-27T01:52:01.965729" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-27T01:52:01.764902" elapsed="0.201110"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.065503" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-27T01:52:01.966467" elapsed="0.099249"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.075917" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-27T01:52:02.076196" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-27T01:52:02.066069" elapsed="0.010161"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-27T01:52:02.076384" elapsed="0.000385"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T01:52:02.076933" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:52:02.077798" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:52:02.077342" elapsed="0.000513"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T01:52:02.077919" elapsed="0.000082"/>
</return>
<msg time="2026-04-27T01:52:02.078179" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.22
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-27T01:52:01.762722" elapsed="0.315489"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-27T01:52:02.078368" elapsed="0.000747"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T01:52:02.079169" elapsed="0.000032"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-04-27T01:52:01.757452" elapsed="0.321890"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-27T01:52:02.083508" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-27T01:52:02.083335" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-27T01:52:02.083307" elapsed="0.000279"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T01:52:02.083751" elapsed="0.000827"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.085045" level="INFO">Logging into '10.30.171.22:8101' as 'karaf'.</msg>
<msg time="2026-04-27T01:52:02.243634" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-27T01:52:02.084766" elapsed="0.159153"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.266849" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-27T01:52:02.244357" elapsed="0.022553"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.268713" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-27T01:52:02.268836" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-27T01:52:02.267065" elapsed="0.001800"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-27T01:52:02.269005" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T01:52:02.269335" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:52:02.270186" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:52:02.269764" elapsed="0.000472"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-27T01:52:02.270302" elapsed="0.000105"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.22
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-27T01:52:02.082941" elapsed="0.187622"/>
</kw>
<status status="PASS" start="2026-04-27T01:52:00.358913" elapsed="1.911727"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:52:02.273894" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:52:02.272137" elapsed="0.001827"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T01:52:02.275683" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T01:52:02.275285" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-04-27T01:52:02.276134" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-27T01:52:02.275827" elapsed="0.000376"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-27T01:52:02.279413" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-27T01:52:02.279157" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-27T01:52:02.279137" elapsed="0.000360"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.279901" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-27T01:52:02.279636" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T01:52:02.280647" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.173" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T01:52:02.280217" elapsed="0.000510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.281398" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T01:52:02.280872" elapsed="0.000553"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T01:52:02.282395" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T01:52:02.282487" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T01:52:02.282037" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T01:52:02.282669" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.283910" level="INFO">Logging into '10.30.171.173:22' as 'jenkins'.</msg>
<msg time="2026-04-27T01:52:02.617254" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Apr 27 01:52:01 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Apr 27 01:52:01 2026 from 10.30.171.147
[?2004h[jenkins@releng-63164-207-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-27T01:52:02.283526" elapsed="0.333996"/>
</kw>
<msg time="2026-04-27T01:52:02.617633" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T01:52:02.283168" elapsed="0.334606"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-27T01:52:02.281634" elapsed="0.336304"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T01:52:02.619107" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-27T02:02:08.729811" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T02:02:08.731009" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T02:02:08.731115" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-27T01:52:02.618254" elapsed="606.112923"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T02:02:08.731756" elapsed="0.001015"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.734021" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:07.804 16  switches: flows:  114918 110465 114333 114777 112143 115189 113828 110751 106626 111264 109105 105981 107652 107539 110277 111781  total = 29.610483 per ms 
01:54:07.905 16  switches: flows:  124368 121015 124502 123663 122317 123642 122133 118713 116930 120064 115906 115358 118570 115505 118668 119903  total = 31.967564 per ms 
01:55:08.006 16  switches: flows:  125689 122331 125530 125568 124804 126109 121386 120320 119520 121990 118831 117677 118836 117562 119181 120853  total = 32.382363 per ms 
01:56:08.107 16  switches: flows:  121041 119218 123257 121641 120816 121606 117270 118998 117103 116695 115966 113134 116341 113831 117903 118882  total = 31.509016 per ms 
01:57:08.208 16  switches: flows:  129960 127618 129165 127830 126782 127824 125462 123552 123667 125522 120926 118808 122358 120831 121629 125206  total = 33.230103 per ms 
01:58:08.309 16  switches: flows:  122524 119548 121604 122254 121102 121515 120358 117276 115653 116837 114997 114434 117449 114426 117255 117082  total = 31.519285 per ms 
01:59:08.410 16  switches: flows:  112204 108405 109461 111213 108809 109177 108744 106628 105027 103425 105604 104346 104903 104954 105826 107322  total = 28.553058 per ms 
02:00:08.511 16  switches: flows:  129784 124185 127371 127759 125010 125074 122259 124610 120500 121544 120119 120357 122603 119045 123513 122869  total = 32.888444 per ms 
02:01:08.613 16  switches: flows:  128418 124171 128547 127465 123700 126240 122432 125139 120943 121616 119312 119085 120059 118850 122868 124087  total = 32.827359 per ms 
02:02:08.714 16  switches: flows:  129507 124074 128307 128469 126504 125600 123720 124487 121342 123446 119746 119843 121556 119614 122187 123584  total = 32.977795 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28553.06/33230.10/31983.89/10746.63 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.733166" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-27T02:02:08.734956" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-27T02:02:08.734576" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-27T02:02:08.734509" elapsed="0.000673"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-27T02:02:08.735404" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-27T02:02:08.735319" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-27T02:02:08.735283" elapsed="0.000264"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-27T02:02:08.735624" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T02:02:08.741562" elapsed="0.000380"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T02:02:08.742095" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T02:02:08.742420" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-27T02:02:08.736394" elapsed="0.006181"/>
</kw>
<msg time="2026-04-27T02:02:08.742732" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-27T01:52:02.276587" elapsed="606.466173"/>
</kw>
<status status="PASS" start="2026-04-27T01:52:02.276238" elapsed="606.466574"/>
</branch>
<status status="PASS" start="2026-04-27T01:52:02.275799" elapsed="606.467038"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.743311" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:53:07.804 16  switches: flows:  114918 110465 114333 114777 112143 115189 113828 110751 106626 111264 109105 105981 107652 107539 110277 111781  total = 29.610483 per ms 
01:54:07.905 16  switches: flows:  124368 121015 124502 123663 122317 123642 122133 118713 116930 120064 115906 115358 118570 115505 118668 119903  total = 31.967564 per ms 
01:55:08.006 16  switches: flows:  125689 122331 125530 125568 124804 126109 121386 120320 119520 121990 118831 117677 118836 117562 119181 120853  total = 32.382363 per ms 
01:56:08.107 16  switches: flows:  121041 119218 123257 121641 120816 121606 117270 118998 117103 116695 115966 113134 116341 113831 117903 118882  total = 31.509016 per ms 
01:57:08.208 16  switches: flows:  129960 127618 129165 127830 126782 127824 125462 123552 123667 125522 120926 118808 122358 120831 121629 125206  total = 33.230103 per ms 
01:58:08.309 16  switches: flows:  122524 119548 121604 122254 121102 121515 120358 117276 115653 116837 114997 114434 117449 114426 117255 117082  total = 31.519285 per ms 
01:59:08.410 16  switches: flows:  112204 108405 109461 111213 108809 109177 108744 106628 105027 103425 105604 104346 104903 104954 105826 107322  total = 28.553058 per ms 
02:00:08.511 16  switches: flows:  129784 124185 127371 127759 125010 125074 122259 124610 120500 121544 120119 120357 122603 119045 123513 122869  total = 32.888444 per ms 
02:01:08.613 16  switches: flows:  128418 124171 128547 127465 123700 126240 122432 125139 120943 121616 119312 119085 120059 118850 122868 124087  total = 32.827359 per ms 
02:02:08.714 16  switches: flows:  129507 124074 128307 128469 126504 125600 123720 124487 121342 123446 119746 119843 121556 119614 122187 123584  total = 32.977795 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28553.06/33230.10/31983.89/10746.63 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.743002" elapsed="0.000383"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-27T02:02:08.743546" elapsed="0.000435"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-27T02:02:08.744397" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-27T02:02:08.744492" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28553.06/33230.10/31983.89/10746.63 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-04-27T02:02:08.744152" elapsed="0.000384"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:02:08.745017" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28553.06/33230.10/31983.89/10746.63 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:02:08.744732" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.747540" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.745194" elapsed="0.002403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.750046" level="INFO">28553.06/33230.10/31983.89/10746.63</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.747761" elapsed="0.002347"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:02:08.752490" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:02:08.750258" elapsed="0.002261"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:02:08.755016" level="INFO">@{result_value_list} = [ 28553.06 | 33230.10 | 31983.89 | 10746.63 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:02:08.752758" elapsed="0.002286"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.755521" level="INFO">Length is 4.</msg>
<msg time="2026-04-27T02:02:08.755611" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T02:02:08.755203" elapsed="0.000432"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.760503" level="INFO">min :: 28553.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-04-27T02:02:08.756092" elapsed="0.004469"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-27T02:02:08.755956" elapsed="0.004640"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.765212" level="INFO">max :: 33230.10</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.760842" elapsed="0.004452"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-27T02:02:08.760707" elapsed="0.004622"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.770041" level="INFO">avg :: 31983.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.765550" elapsed="0.004557"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-27T02:02:08.765419" elapsed="0.004723"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.775224" level="INFO">stdev :: 10746.63</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.770366" elapsed="0.004917"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-27T02:02:08.770235" elapsed="0.005084"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-27T02:02:08.755734" elapsed="0.019619"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.779304" level="INFO">${min} = 28553.06</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:02:08.775522" elapsed="0.003810"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.783253" level="INFO">${max} = 33230.10</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:02:08.779486" elapsed="0.003794"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.787366" level="INFO">${average} = 31983.89</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:02:08.783433" elapsed="0.003960"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.791354" level="INFO">${stdev} = 10746.63</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:02:08.787549" elapsed="0.003832"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.791950" level="INFO">${date} = 2026-04-27 02:02:08</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-27T02:02:08.791543" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.792534" level="INFO">CBench Result: 2026-04-27 02:02:08,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28553.06,33230.10,31983.89,10746.63</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.792123" elapsed="0.000467"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T02:02:08.793787" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-27T02:02:08.793285" elapsed="0.000571"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-27T02:02:08.794045" elapsed="0.000479"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-27T02:02:08.792786" elapsed="0.001804"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-04-27T01:52:02.274540" elapsed="606.520114"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.795167" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-27T02:02:08.794833" elapsed="0.000391"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-04-27T02:02:08.795782" elapsed="0.000274"/>
</kw>
<status status="PASS" start="2026-04-27T02:02:08.795459" elapsed="0.000669"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-04-27T01:52:02.270881" elapsed="606.525286"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.798047" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.797610" elapsed="0.000522"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.799523" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T02:02:08.799179" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-04-27T02:02:08.799956" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-27T02:02:08.799717" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-27T02:02:08.802989" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-27T02:02:08.802736" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-27T02:02:08.802716" elapsed="0.000353"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-27T02:02:08.803427" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-27T02:02:08.803205" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.804161" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.22 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.173" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:02:08.803734" elapsed="0.000486"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T02:02:08.804793" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T02:02:08.804361" elapsed="0.000459"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T02:02:08.805735" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T02:02:08.805826" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T02:02:08.805401" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T02:02:08.805994" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T02:02:08.807228" level="INFO">Logging into '10.30.171.173:22' as 'jenkins'.</msg>
<msg time="2026-04-27T02:02:09.408227" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Apr 27 02:02:09 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.173
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Apr 27 01:52:02 2026 from 10.30.171.147
[?2004h[jenkins@releng-63164-207-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-27T02:02:08.806869" elapsed="0.601643"/>
</kw>
<msg time="2026-04-27T02:02:09.408621" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T02:02:08.806503" elapsed="0.602258"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-27T02:02:08.805023" elapsed="0.603882"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T02:02:09.409595" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.22 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-27T02:12:19.549437" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T02:12:19.550705" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T02:12:19.550817" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-27T02:02:09.409185" elapsed="610.141688"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T02:12:19.552630" elapsed="0.001671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.556092" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:15.133 16  switches: flows:  507138 503453 496055 507466 517010 513302 504165 501167 490980 489355 500111 480105 481834 482724 504505 499204  total = 132.976233 per ms 
02:04:15.235 16  switches: flows:  700960 642423 588591 581672 672240 576616 666071 682808 544991 654013 559042 549270 584502 570583 651945 616625  total = 163.761932 per ms 
02:05:18.748 16  switches: flows:  586085 613628 612915 578890 613265 602723 615249 600482 607835 593685 597587 591706 590478 596292 599457 608705  total = 151.293410 per ms 
02:06:18.851 16  switches: flows:  577838 600140 581135 579739 587878 581959 600415 580418 606813 580278 601704 580866 589356 577951 488643 579291  total = 154.643510 per ms 
02:07:18.952 16  switches: flows:  677919 683478 685266 678173 683966 685378 677420 682360 675677 679639 678770 683692 676472 685707 686379 685873  total = 181.463853 per ms 
02:08:19.133 16  switches: flows:  451067 448703 450759 445764 448399 283544 443749 287642 442882 446475 432445 440843 431772 446075 441075 445324  total = 112.769805 per ms 
02:09:19.234 16  switches: flows:  601573 568356 628086 597315 598803 609322 613115 607058 607128 603181 595248 608977 613649 604321 611220 607810  total = 160.980892 per ms 
02:10:19.338 16  switches: flows:  602992 592824 606356 607537 606889 615406 595646 614646 597285 620273 606146 597502 608702 603365 601535 610792  total = 161.189039 per ms 
02:11:19.439 16  switches: flows:  641295 637605 630089 637896 632591 622439 636645 620687 638410 650900 635696 630220 639196 591235 633789 641411  total = 168.385249 per ms 
02:12:19.541 16  switches: flows:  652445 649817 644200 649923 642172 652599 644203 654629 653773 650603 645432 644677 647551 650368 644609 647560  total = 172.618014 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 112769.81/181463.85/158567.30/55943.48 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.554720" elapsed="0.001693"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-27T02:12:19.556963" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-27T02:12:19.556613" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-27T02:12:19.556560" elapsed="0.000615"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-27T02:12:19.557392" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-27T02:12:19.557307" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-27T02:12:19.557270" elapsed="0.000262"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-27T02:12:19.557605" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T02:12:19.561919" elapsed="0.000406"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T02:12:19.562480" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T02:12:19.562821" elapsed="0.000110"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-27T02:12:19.558941" elapsed="0.004044"/>
</kw>
<msg time="2026-04-27T02:12:19.563130" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-27T02:02:08.800383" elapsed="610.762775"/>
</kw>
<status status="PASS" start="2026-04-27T02:02:08.800043" elapsed="610.763203"/>
</branch>
<status status="PASS" start="2026-04-27T02:02:08.799675" elapsed="610.763602"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.563783" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:03:15.133 16  switches: flows:  507138 503453 496055 507466 517010 513302 504165 501167 490980 489355 500111 480105 481834 482724 504505 499204  total = 132.976233 per ms 
02:04:15.235 16  switches: flows:  700960 642423 588591 581672 672240 576616 666071 682808 544991 654013 559042 549270 584502 570583 651945 616625  total = 163.761932 per ms 
02:05:18.748 16  switches: flows:  586085 613628 612915 578890 613265 602723 615249 600482 607835 593685 597587 591706 590478 596292 599457 608705  total = 151.293410 per ms 
02:06:18.851 16  switches: flows:  577838 600140 581135 579739 587878 581959 600415 580418 606813 580278 601704 580866 589356 577951 488643 579291  total = 154.643510 per ms 
02:07:18.952 16  switches: flows:  677919 683478 685266 678173 683966 685378 677420 682360 675677 679639 678770 683692 676472 685707 686379 685873  total = 181.463853 per ms 
02:08:19.133 16  switches: flows:  451067 448703 450759 445764 448399 283544 443749 287642 442882 446475 432445 440843 431772 446075 441075 445324  total = 112.769805 per ms 
02:09:19.234 16  switches: flows:  601573 568356 628086 597315 598803 609322 613115 607058 607128 603181 595248 608977 613649 604321 611220 607810  total = 160.980892 per ms 
02:10:19.338 16  switches: flows:  602992 592824 606356 607537 606889 615406 595646 614646 597285 620273 606146 597502 608702 603365 601535 610792  total = 161.189039 per ms 
02:11:19.439 16  switches: flows:  641295 637605 630089 637896 632591 622439 636645 620687 638410 650900 635696 630220 639196 591235 633789 641411  total = 168.385249 per ms 
02:12:19.541 16  switches: flows:  652445 649817 644200 649923 642172 652599 644203 654629 653773 650603 645432 644677 647551 650368 644609 647560  total = 172.618014 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 112769.81/181463.85/158567.30/55943.48 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.563445" elapsed="0.000435"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-27T02:12:19.564074" elapsed="0.000904"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-27T02:12:19.565414" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-27T02:12:19.565508" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 112769.81/181463.85/158567.30/55943.48 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-04-27T02:12:19.565166" elapsed="0.000369"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:12:19.565980" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 112769.81/181463.85/158567.30/55943.48 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:12:19.565718" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.568545" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.566170" elapsed="0.002432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.571256" level="INFO">112769.81/181463.85/158567.30/55943.48</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.568771" elapsed="0.002546"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:12:19.574040" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:12:19.571487" elapsed="0.002581"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:12:19.576616" level="INFO">@{result_value_list} = [ 112769.81 | 181463.85 | 158567.30 | 55943.48 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:12:19.574284" elapsed="0.002360"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.577187" level="INFO">Length is 4.</msg>
<msg time="2026-04-27T02:12:19.577281" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T02:12:19.576821" elapsed="0.000485"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.582182" level="INFO">min :: 112769.81</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.577767" elapsed="0.004474"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-27T02:12:19.577605" elapsed="0.004672"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.587188" level="INFO">max :: 181463.85</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.582515" elapsed="0.004737"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-27T02:12:19.582380" elapsed="0.004911"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.591945" level="INFO">avg :: 158567.30</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.587519" elapsed="0.004484"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-27T02:12:19.587388" elapsed="0.004650"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.596740" level="INFO">stdev :: 55943.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.592285" elapsed="0.004514"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-27T02:12:19.592127" elapsed="0.004707"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-27T02:12:19.577379" elapsed="0.019486"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.601058" level="INFO">${min} = 112769.81</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:12:19.597051" elapsed="0.004037"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.605053" level="INFO">${max} = 181463.85</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:12:19.601249" elapsed="0.003832"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.609130" level="INFO">${average} = 158567.30</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:12:19.605253" elapsed="0.003904"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.613145" level="INFO">${stdev} = 55943.48</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:12:19.609326" elapsed="0.003846"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.613704" level="INFO">${date} = 2026-04-27 02:12:19</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-27T02:12:19.613333" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.614293" level="INFO">CBench Result: 2026-04-27 02:12:19,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,112769.81,181463.85,158567.30,55943.48</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.613880" elapsed="0.000470"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T02:12:19.615437" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-27T02:12:19.614999" elapsed="0.000507"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-27T02:12:19.615707" elapsed="0.000510"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-27T02:12:19.614499" elapsed="0.001786"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-04-27T02:02:08.798464" elapsed="610.817882"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.616884" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-27T02:12:19.616536" elapsed="0.000407"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-04-27T02:12:19.617478" elapsed="0.000300"/>
</kw>
<status status="PASS" start="2026-04-27T02:12:19.617153" elapsed="0.000697"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-04-27T02:02:08.797023" elapsed="610.820867"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.619532" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.619109" elapsed="0.000483"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.620875" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-27T02:12:19.620520" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-04-27T02:12:19.621738" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-27T02:12:19.621035" elapsed="0.000774"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-27T02:12:19.624769" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-27T02:12:19.624501" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-27T02:12:19.624481" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-27T02:12:19.625186" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-27T02:12:19.624984" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.625952" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.173" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:12:19.625494" elapsed="0.000518"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-27T02:12:19.626553" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T02:12:19.626155" elapsed="0.000426"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T02:12:19.627678" level="INFO">Length is 0.</msg>
<msg time="2026-04-27T02:12:19.627782" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T02:12:19.627198" elapsed="0.000618"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T02:12:19.627964" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-27T02:12:19.629208" level="INFO">Logging into '10.30.171.173:22' as 'jenkins'.</msg>
<msg time="2026-04-27T02:12:20.199283" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Apr 27 02:12:19 UTC 2026

  System load:  0.35               Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.173
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Apr 27 02:02:09 2026 from 10.30.171.147
[?2004h[jenkins@releng-63164-207-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-27T02:12:19.628849" elapsed="0.570653"/>
</kw>
<msg time="2026-04-27T02:12:20.199599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T02:12:19.628448" elapsed="0.571267"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-27T02:12:19.626801" elapsed="0.573065"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-27T02:12:20.200487" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-27T02:22:26.275957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-27T02:22:26.276725" level="INFO">${stdout} = </msg>
<msg time="2026-04-27T02:22:26.276839" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-27T02:12:20.200127" elapsed="606.076770"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T02:22:26.277428" elapsed="0.000782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.279371" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:13:25.355 16  switches: flows:  101660 102407 100487 103539 101357 101706 101612 101368 100992 99992 99726 100353 101130 100656 98419 98924  total = 26.905467 per ms 
02:14:25.456 16  switches: flows:  126493 124654 125293 123243 125105 124947 124063 121329 122726 122808 121625 123325 120929 118760 121191 121383  total = 32.742850 per ms 
02:15:25.558 16  switches: flows:  121107 118537 119774 119808 118307 118419 119906 118772 118603 116420 118158 118973 117196 115570 117680 115948  total = 31.500336 per ms 
02:16:25.659 16  switches: flows:  127196 122654 123072 126211 124648 125202 127019 125806 122466 124162 122365 122497 124804 123950 121498 120020  total = 33.004339 per ms 
02:17:25.760 16  switches: flows:  127442 123333 123274 126203 123493 125095 126614 127709 124326 124349 125919 122791 124437 122506 121222 121435  total = 33.113783 per ms 
02:18:25.862 16  switches: flows:  127736 122484 123004 125524 125524 124772 126346 126033 122181 122302 124612 122777 127267 124317 122153 122219  total = 33.098824 per ms 
02:19:25.963 16  switches: flows:  128137 123415 123290 125254 123756 125048 127871 126900 123834 124010 125163 122943 125654 124201 120866 121865  total = 33.148088 per ms 
02:20:26.064 16  switches: flows:  127929 124222 124484 125036 124522 124850 125586 127729 124629 122327 124286 122428 125116 123963 122176 121873  total = 33.130610 per ms 
02:21:26.165 16  switches: flows:  117447 116281 113625 116013 114495 117139 114720 115679 114680 111051 115049 114391 112840 113125 113031 110454  total = 30.449523 per ms 
02:22:26.267 16  switches: flows:  124670 123278 121720 125819 119452 123762 122246 123717 124260 120692 121789 122260 121964 120287 120595 117260  total = 32.508364 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30449.52/33148.09/32521.86/10876.77 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.278580" elapsed="0.001186"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-27T02:22:26.280303" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-27T02:22:26.279978" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-27T02:22:26.279917" elapsed="0.000624"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-27T02:22:26.280785" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-27T02:22:26.280698" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-27T02:22:26.280634" elapsed="0.000291"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-27T02:22:26.280994" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-27T02:22:26.286040" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-27T02:22:26.286530" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-27T02:22:26.286846" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-27T02:22:26.281720" elapsed="0.005277"/>
</kw>
<msg time="2026-04-27T02:22:26.287133" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-27T02:12:19.622170" elapsed="606.664990"/>
</kw>
<status status="PASS" start="2026-04-27T02:12:19.621836" elapsed="606.665373"/>
</branch>
<status status="PASS" start="2026-04-27T02:12:19.621011" elapsed="606.666222"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.287684" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:13:25.355 16  switches: flows:  101660 102407 100487 103539 101357 101706 101612 101368 100992 99992 99726 100353 101130 100656 98419 98924  total = 26.905467 per ms 
02:14:25.456 16  switches: flows:  126493 124654 125293 123243 125105 124947 124063 121329 122726 122808 121625 123325 120929 118760 121191 121383  total = 32.742850 per ms 
02:15:25.558 16  switches: flows:  121107 118537 119774 119808 118307 118419 119906 118772 118603 116420 118158 118973 117196 115570 117680 115948  total = 31.500336 per ms 
02:16:25.659 16  switches: flows:  127196 122654 123072 126211 124648 125202 127019 125806 122466 124162 122365 122497 124804 123950 121498 120020  total = 33.004339 per ms 
02:17:25.760 16  switches: flows:  127442 123333 123274 126203 123493 125095 126614 127709 124326 124349 125919 122791 124437 122506 121222 121435  total = 33.113783 per ms 
02:18:25.862 16  switches: flows:  127736 122484 123004 125524 125524 124772 126346 126033 122181 122302 124612 122777 127267 124317 122153 122219  total = 33.098824 per ms 
02:19:25.963 16  switches: flows:  128137 123415 123290 125254 123756 125048 127871 126900 123834 124010 125163 122943 125654 124201 120866 121865  total = 33.148088 per ms 
02:20:26.064 16  switches: flows:  127929 124222 124484 125036 124522 124850 125586 127729 124629 122327 124286 122428 125116 123963 122176 121873  total = 33.130610 per ms 
02:21:26.165 16  switches: flows:  117447 116281 113625 116013 114495 117139 114720 115679 114680 111051 115049 114391 112840 113125 113031 110454  total = 30.449523 per ms 
02:22:26.267 16  switches: flows:  124670 123278 121720 125819 119452 123762 122246 123717 124260 120692 121789 122260 121964 120287 120595 117260  total = 32.508364 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30449.52/33148.09/32521.86/10876.77 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.287381" elapsed="0.000380"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-27T02:22:26.287910" elapsed="0.000378"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-27T02:22:26.288706" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-27T02:22:26.288799" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30449.52/33148.09/32521.86/10876.77 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-04-27T02:22:26.288469" elapsed="0.000355"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:22:26.289234" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30449.52/33148.09/32521.86/10876.77 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:22:26.288978" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.291679" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.289411" elapsed="0.002326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.294296" level="INFO">30449.52/33148.09/32521.86/10876.77</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.291883" elapsed="0.002469"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:22:26.296756" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:22:26.294502" elapsed="0.002282"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-27T02:22:26.299195" level="INFO">@{result_value_list} = [ 30449.52 | 33148.09 | 32521.86 | 10876.77 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-27T02:22:26.296979" elapsed="0.002243"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.299698" level="INFO">Length is 4.</msg>
<msg time="2026-04-27T02:22:26.299787" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-27T02:22:26.299382" elapsed="0.000429"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.304513" level="INFO">min :: 30449.52</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.300188" elapsed="0.004381"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-27T02:22:26.300058" elapsed="0.004546"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.309134" level="INFO">max :: 33148.09</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.304832" elapsed="0.004358"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-27T02:22:26.304704" elapsed="0.004520"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.313796" level="INFO">avg :: 32521.86</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.309437" elapsed="0.004424"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-27T02:22:26.309306" elapsed="0.004589"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.318616" level="INFO">stdev :: 10876.77</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.314106" elapsed="0.004581"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-27T02:22:26.313978" elapsed="0.004745"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-27T02:22:26.299876" elapsed="0.018878"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.322900" level="INFO">${min} = 30449.52</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:22:26.318912" elapsed="0.004015"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.326834" level="INFO">${max} = 33148.09</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:22:26.323081" elapsed="0.003780"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.330811" level="INFO">${average} = 32521.86</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:22:26.327013" elapsed="0.003824"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.334779" level="INFO">${stdev} = 10876.77</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-27T02:22:26.330991" elapsed="0.003815"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.335315" level="INFO">${date} = 2026-04-27 02:22:26</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-27T02:22:26.334966" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.335910" level="INFO">CBench Result: 2026-04-27 02:22:26,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30449.52,33148.09,32521.86,10876.77</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-27T02:22:26.335488" elapsed="0.000479"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-27T02:22:26.337203" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-27T02:22:26.336676" elapsed="0.000595"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-27T02:22:26.337434" elapsed="0.000488"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-27T02:22:26.336104" elapsed="0.001882"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-04-27T02:12:19.619924" elapsed="606.718120"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.338511" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-27T02:22:26.338195" elapsed="0.000372"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-27T02:22:26.339819" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-27T02:22:26.339304" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-27T02:22:26.340068" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-27T02:22:26.339921" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-27T02:22:26.339902" elapsed="0.000251"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.340304" elapsed="0.000025"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.340511" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.340690" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.340886" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.341037" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.341183" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.341325" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-27T02:22:26.341544" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-27T02:22:26.341406" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-27T02:22:26.341390" elapsed="0.000235"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-27T02:22:26.338965" elapsed="0.002726"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-04-27T02:12:19.618497" elapsed="606.723243"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-04-27T01:51:59.759279" elapsed="1826.583057"/>
</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>
