<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-06-14T02:55:29.925827" 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-06-14T02:55:30.507520" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-06-14T02:55:30.507383" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-06-14T02:55:30.507354" elapsed="0.000266"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T02:55:30.507780" elapsed="0.000501"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-14T02:55:30.508775" level="INFO">Logging into '10.30.171.175:8101' as 'karaf'.</msg>
<msg time="2026-06-14T02:55:31.345427" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-14T02:55:30.508456" elapsed="0.837168"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-14T02:55:31.394718" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-14T02:55:31.345915" elapsed="0.048949"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-14T02:55:31.396925" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-14T02:55:31.397037" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-14T02:55:31.395118" elapsed="0.001949"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-14T02:55:31.397225" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:55:31.397625" elapsed="0.000219"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:55:31.398325" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:55:31.397996" elapsed="0.000382"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T02:55:31.398431" elapsed="0.000057"/>
</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.175
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-14T02:55:30.507010" elapsed="0.891600"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-06-14T02:55:30.503303" elapsed="0.895368"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T02:55:31.399245" 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-06-14T02:55:31.398878" elapsed="0.000424"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T02:55:31.399709" 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-06-14T02:55:31.399460" elapsed="0.000323"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-14T02:55:31.400333" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-14T02:55:31.399941" elapsed="0.000420"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T02:55:31.400905" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T02:55:31.400551" elapsed="0.000397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-14T02:55:31.401471" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-14T02:55:31.401097" elapsed="0.000401"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T02:55:31.401995" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T02:55:31.401659" elapsed="0.000378"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-06-14T02:55:31.402342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:55:31.402125" elapsed="0.000273"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T02:55:31.406872" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T02:55:31.406423" elapsed="0.000478"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T02:55:31.408013" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T02:55:31.408100" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T02:55:31.407475" elapsed="0.000649"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T02:55:31.408274" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T02:55:31.409716" level="INFO">Logging into '10.30.171.228:22' as 'jenkins'.</msg>
<msg time="2026-06-14T02:55:32.181800" 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 Sun Jun 14 02:55:31 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.228
  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-304-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-14T02:55:31.409187" elapsed="0.772805"/>
</kw>
<msg time="2026-06-14T02:55:32.182098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T02:55:31.408833" elapsed="0.773361"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-14T02:55:31.407121" elapsed="0.775200"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.190942" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-06-14T02:55:32.182547" elapsed="0.010140"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:55:32.192969" elapsed="0.000383"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-06-14T02:55:31.405874" elapsed="0.787566"/>
</kw>
<status status="PASS" start="2026-06-14T02:55:31.402470" elapsed="0.791023"/>
</branch>
<status status="PASS" start="2026-06-14T02:55:31.402100" elapsed="0.791438"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-14T02:55:32.193791" elapsed="0.000790"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-14T02:55:32.203563" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-06-14T02:55:32.203409" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-06-14T02:55:32.203378" elapsed="0.000289"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-14T02:55:32.207486" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-06-14T02:55:32.207353" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-06-14T02:55:32.207326" elapsed="0.000233"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T02:55:32.207695" elapsed="0.000466"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.208577" level="INFO">Logging into '10.30.171.175:8101' as 'karaf'.</msg>
<msg time="2026-06-14T02:55:32.423350" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-14T02:55:32.208313" elapsed="0.215189"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.517876" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-14T02:55:32.423769" elapsed="0.094269"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.529744" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-14T02:55:32.529951" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-14T02:55:32.518296" elapsed="0.011687"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-14T02:55:32.530128" elapsed="0.000208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:55:32.530533" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:55:32.531231" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:55:32.530915" elapsed="0.000372"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T02:55:32.531339" elapsed="0.000057"/>
</return>
<msg time="2026-06-14T02:55:32.531548" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            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.175
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-14T02:55:32.206979" elapsed="0.324601"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-14T02:55:32.531745" elapsed="0.000545"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T02:55:32.532344" elapsed="0.000031"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-06-14T02:55:32.203077" elapsed="0.329398"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-14T02:55:32.536356" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-14T02:55:32.536217" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-06-14T02:55:32.536193" elapsed="0.000235"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T02:55:32.536563" elapsed="0.000475"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.537448" level="INFO">Logging into '10.30.171.175:8101' as 'karaf'.</msg>
<msg time="2026-06-14T02:55:32.696283" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-14T02:55:32.537190" elapsed="0.159258"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.720563" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-14T02:55:32.696718" elapsed="0.023910"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.722435" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-14T02:55:32.722541" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-14T02:55:32.720808" elapsed="0.001767"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-14T02:55:32.722711" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T02:55:32.723093" elapsed="0.000195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:55:32.723766" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:55:32.723426" elapsed="0.000392"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-14T02:55:32.723871" elapsed="0.000056"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.175
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-14T02:55:32.535881" elapsed="0.188166"/>
</kw>
<status status="PASS" start="2026-06-14T02:55:30.501333" elapsed="2.222777"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:55:32.726346" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:55:32.725081" elapsed="0.001331"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T02:55:32.727925" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T02:55:32.727538" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-14T02:55:32.728293" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:55:32.728050" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-14T02:55:32.731407" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-14T02:55:32.731147" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-06-14T02:55:32.731127" elapsed="0.000364"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.731861" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-14T02:55:32.731626" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T02:55:32.732586" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.175 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.228" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T02:55:32.732152" elapsed="0.000494"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.733281" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T02:55:32.732803" elapsed="0.000505"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T02:55:32.734237" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T02:55:32.734328" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T02:55:32.733911" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T02:55:32.734496" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T02:55:32.735746" level="INFO">Logging into '10.30.171.228:22' as 'jenkins'.</msg>
<msg time="2026-06-14T02:55:33.080768" 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 Sun Jun 14 02:55:31 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.228
  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: Sun Jun 14 02:55:32 2026 from 10.30.170.206
[?2004h[jenkins@releng-63164-304-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-14T02:55:32.735371" elapsed="0.345599"/>
</kw>
<msg time="2026-06-14T02:55:33.081065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T02:55:32.735019" elapsed="0.346141"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-14T02:55:32.733511" elapsed="0.347777"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T02:55:33.081891" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.175 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-14T03:05:39.211576" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T03:05:39.211999" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T03:05:39.212067" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T02:55:33.081532" elapsed="606.130578"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T03:05:39.212453" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.213692" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175: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.175. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:56:38.300 16  switches: flows:  110756 110939 108506 110769 110922 109212 109389 109261 107296 107397 104886 109027 107293 102953 105260 104983  total = 28.814150 per ms 
02:57:38.401 16  switches: flows:  124783 124974 126231 123377 124167 122789 124000 122562 119881 119720 119420 120583 117493 115905 120078 118991  total = 32.361802 per ms 
02:58:38.502 16  switches: flows:  126051 125115 126148 124571 126772 125785 126078 124578 124125 120693 121271 121865 119912 118037 121407 120855  total = 32.832850 per ms 
02:59:38.603 16  switches: flows:  118123 113460 115415 113538 114146 115444 116990 113058 112368 110059 112862 111149 111140 108079 112280 110850  total = 30.099011 per ms 
03:00:38.704 16  switches: flows:  128221 127600 123712 125195 127891 128287 125236 122232 121179 120688 123895 122105 125093 118251 121905 121551  total = 32.995452 per ms 
03:01:38.805 16  switches: flows:  126809 125143 123978 123457 124190 126235 124824 122373 120634 118284 122809 121167 121231 117474 122818 121705  total = 32.664316 per ms 
03:02:38.906 16  switches: flows:  127319 125842 123675 123508 124596 125143 124166 122731 120739 119741 123258 123275 120562 117052 122829 120860  total = 32.700349 per ms 
03:03:39.007 16  switches: flows:  127015 126384 123173 123811 123984 126368 124333 123012 119360 119798 122914 122959 120751 117017 121911 120612  total = 32.668828 per ms 
03:04:39.108 16  switches: flows:  127588 126734 123210 125280 124884 125506 123795 122076 119399 120115 122045 122844 122188 116534 119008 120699  total = 32.643917 per ms 
03:05:39.209 16  switches: flows:  116149 115516 117080 114910 113857 117554 115311 113700 110722 110468 112240 111787 112596 109558 109390 112102  total = 30.165332 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30099.01/32995.45/32125.76/10762.65 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.213204" elapsed="0.000718"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-14T03:05:39.214272" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-06-14T03:05:39.214053" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-06-14T03:05:39.214015" elapsed="0.000403"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-14T03:05:39.214556" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-06-14T03:05:39.214503" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-06-14T03:05:39.214480" elapsed="0.000163"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-14T03:05:39.214689" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T03:05:39.218258" elapsed="0.000515"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T03:05:39.219002" elapsed="0.000271"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T03:05:39.219458" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-14T03:05:39.215179" elapsed="0.004493"/>
</kw>
<msg time="2026-06-14T03:05:39.219873" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-14T02:55:32.728702" elapsed="606.491210"/>
</kw>
<status status="PASS" start="2026-06-14T02:55:32.728381" elapsed="606.491600"/>
</branch>
<status status="PASS" start="2026-06-14T02:55:32.728026" elapsed="606.491989"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.220621" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175: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.175. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:56:38.300 16  switches: flows:  110756 110939 108506 110769 110922 109212 109389 109261 107296 107397 104886 109027 107293 102953 105260 104983  total = 28.814150 per ms 
02:57:38.401 16  switches: flows:  124783 124974 126231 123377 124167 122789 124000 122562 119881 119720 119420 120583 117493 115905 120078 118991  total = 32.361802 per ms 
02:58:38.502 16  switches: flows:  126051 125115 126148 124571 126772 125785 126078 124578 124125 120693 121271 121865 119912 118037 121407 120855  total = 32.832850 per ms 
02:59:38.603 16  switches: flows:  118123 113460 115415 113538 114146 115444 116990 113058 112368 110059 112862 111149 111140 108079 112280 110850  total = 30.099011 per ms 
03:00:38.704 16  switches: flows:  128221 127600 123712 125195 127891 128287 125236 122232 121179 120688 123895 122105 125093 118251 121905 121551  total = 32.995452 per ms 
03:01:38.805 16  switches: flows:  126809 125143 123978 123457 124190 126235 124824 122373 120634 118284 122809 121167 121231 117474 122818 121705  total = 32.664316 per ms 
03:02:38.906 16  switches: flows:  127319 125842 123675 123508 124596 125143 124166 122731 120739 119741 123258 123275 120562 117052 122829 120860  total = 32.700349 per ms 
03:03:39.007 16  switches: flows:  127015 126384 123173 123811 123984 126368 124333 123012 119360 119798 122914 122959 120751 117017 121911 120612  total = 32.668828 per ms 
03:04:39.108 16  switches: flows:  127588 126734 123210 125280 124884 125506 123795 122076 119399 120115 122045 122844 122188 116534 119008 120699  total = 32.643917 per ms 
03:05:39.209 16  switches: flows:  116149 115516 117080 114910 113857 117554 115311 113700 110722 110468 112240 111787 112596 109558 109390 112102  total = 30.165332 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30099.01/32995.45/32125.76/10762.65 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.220213" elapsed="0.000531"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-14T03:05:39.220954" elapsed="0.000508"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-14T03:05:39.222019" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-14T03:05:39.222148" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30099.01/32995.45/32125.76/10762.65 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-14T03:05:39.221686" elapsed="0.000497"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:05:39.222798" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30099.01/32995.45/32125.76/10762.65 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:05:39.222399" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.226183" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.223043" elapsed="0.003218"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.229610" level="INFO">30099.01/32995.45/32125.76/10762.65</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.226467" elapsed="0.003224"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:05:39.232515" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:05:39.229924" elapsed="0.002619"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:05:39.235023" level="INFO">@{result_value_list} = [ 30099.01 | 32995.45 | 32125.76 | 10762.65 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:05:39.232748" elapsed="0.002303"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.235510" level="INFO">Length is 4.</msg>
<msg time="2026-06-14T03:05:39.235599" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T03:05:39.235205" elapsed="0.000418"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.240421" level="INFO">min :: 30099.01</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.236068" elapsed="0.004410"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-14T03:05:39.235933" elapsed="0.004580"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.245080" level="INFO">max :: 32995.45</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.240748" elapsed="0.004389"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-14T03:05:39.240606" elapsed="0.004566"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.249784" level="INFO">avg :: 32125.76</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.245390" elapsed="0.004451"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-14T03:05:39.245262" elapsed="0.004612"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.254834" level="INFO">stdev :: 10762.65</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.250095" elapsed="0.004797"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-14T03:05:39.249967" elapsed="0.004960"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-14T03:05:39.235691" elapsed="0.019269"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.258920" level="INFO">${min} = 30099.01</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:05:39.255121" elapsed="0.003827"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.263018" level="INFO">${max} = 32995.45</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:05:39.259103" elapsed="0.003942"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.266980" level="INFO">${average} = 32125.76</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:05:39.263199" elapsed="0.003807"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.270952" level="INFO">${stdev} = 10762.65</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:05:39.267160" elapsed="0.003819"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.271495" level="INFO">${date} = 2026-06-14 03:05:39</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-14T03:05:39.271144" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.272094" level="INFO">CBench Result: 2026-06-14 03:05:39,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30099.01,32995.45,32125.76,10762.65</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.271668" elapsed="0.000482"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T03:05:39.273171" 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-06-14T03:05:39.272773" elapsed="0.000463"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-14T03:05:39.273388" elapsed="0.000475"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-14T03:05:39.272286" elapsed="0.001643"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-06-14T02:55:32.726873" elapsed="606.547117"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.274479" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-14T03:05:39.274150" elapsed="0.000387"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-14T03:05:39.275100" elapsed="0.000265"/>
</kw>
<status status="PASS" start="2026-06-14T03:05:39.274796" elapsed="0.000642"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-14T02:55:32.724266" elapsed="606.551209"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.276950" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.276541" elapsed="0.000466"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.278255" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T03:05:39.277925" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-14T03:05:39.278702" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-06-14T03:05:39.278450" elapsed="0.000329"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-14T03:05:39.281659" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-14T03:05:39.281414" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-06-14T03:05:39.281395" elapsed="0.000359"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-14T03:05:39.282081" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-14T03:05:39.281888" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.282823" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.175 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.228" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:05:39.282362" elapsed="0.000519"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T03:05:39.283413" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T03:05:39.283021" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T03:05:39.284340" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T03:05:39.284429" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T03:05:39.284030" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T03:05:39.284593" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T03:05:39.285790" level="INFO">Logging into '10.30.171.228:22' as 'jenkins'.</msg>
<msg time="2026-06-14T03:05:39.888396" 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 Sun Jun 14 03:05:39 UTC 2026

  System load:  1.0                Processes:             103
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.228
  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: Sun Jun 14 02:55:33 2026 from 10.30.170.206
[?2004h[jenkins@releng-63164-304-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-14T03:05:39.285423" elapsed="0.603180"/>
</kw>
<msg time="2026-06-14T03:05:39.888697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T03:05:39.285082" elapsed="0.603726"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-14T03:05:39.283640" elapsed="0.605291"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T03:05:39.889475" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.175 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-14T03:15:45.954519" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T03:15:45.955160" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T03:15:45.955270" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.175:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T03:05:39.889165" elapsed="606.066175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T03:15:45.955850" elapsed="0.000700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.957700" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.175: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.175. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:06:45.037 16  switches: flows:  485929 494376 493149 500106 489313 477860 482763 483212 467714 476261 480438 484530 493878 479653 475613 485178  total = 129.166217 per ms 
03:07:45.139 16  switches: flows:  510021 512172 529347 526359 516207 526651 515801 531182 513874 502249 519332 524516 520007 522613 528268 528808  total = 138.555395 per ms 
03:08:45.240 16  switches: flows:  564596 545726 558116 551161 557312 556800 561852 560621 548279 557105 555435 555398 565973 540146 565595 556310  total = 148.091196 per ms 
03:09:45.342 16  switches: flows:  585648 587139 590764 588241 578155 585715 595326 594049 594551 589105 585205 596113 596429 597049 585488 595369  total = 157.140218 per ms 
03:10:45.443 16  switches: flows:  599832 602841 596190 599076 587572 604211 605142 600012 599947 596372 598742 605756 607719 601394 600773 603849  total = 159.890042 per ms 
03:11:45.544 16  switches: flows:  568704 590951 597239 595326 601032 565642 600350 599914 587124 598816 590358 608414 589493 591222 585410 605939  total = 157.666822 per ms 
03:12:45.647 16  switches: flows:  608240 607119 607560 611953 604076 608451 607514 616154 609022 613046 613329 608844 612588 611361 603979 617744  total = 162.407741 per ms 
03:13:45.748 16  switches: flows:  595219 602792 600743 599033 595124 603630 605274 600601 608239 600108 592764 595420 605511 601656 597497 605063  total = 159.874395 per ms 
03:14:45.851 16  switches: flows:  579041 561455 560705 575322 568701 567307 573423 569992 562893 568970 568416 565349 564003 569152 567664 563019  total = 151.167571 per ms 
03:15:45.953 16  switches: flows:  612904 611752 603847 611609 608959 612873 610565 608932 600000 601214 611875 619366 615234 617715 607380 608896  total = 162.444182 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 138555.39/162444.18/155248.62/52285.62 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.956944" elapsed="0.001097"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-14T03:15:45.958555" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-06-14T03:15:45.958231" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-06-14T03:15:45.958178" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-14T03:15:45.959041" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-06-14T03:15:45.958933" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-06-14T03:15:45.958896" elapsed="0.000287"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-14T03:15:45.959255" 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-06-14T03:15:45.964084" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T03:15:45.964574" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T03:15:45.964886" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-14T03:15:45.959975" elapsed="0.005066"/>
</kw>
<msg time="2026-06-14T03:15:45.965171" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.175:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-14T03:05:39.279122" elapsed="606.686076"/>
</kw>
<status status="PASS" start="2026-06-14T03:05:39.278806" elapsed="606.686440"/>
</branch>
<status status="PASS" start="2026-06-14T03:05:39.278384" elapsed="606.686886"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.965702" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.175: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.175. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:06:45.037 16  switches: flows:  485929 494376 493149 500106 489313 477860 482763 483212 467714 476261 480438 484530 493878 479653 475613 485178  total = 129.166217 per ms 
03:07:45.139 16  switches: flows:  510021 512172 529347 526359 516207 526651 515801 531182 513874 502249 519332 524516 520007 522613 528268 528808  total = 138.555395 per ms 
03:08:45.240 16  switches: flows:  564596 545726 558116 551161 557312 556800 561852 560621 548279 557105 555435 555398 565973 540146 565595 556310  total = 148.091196 per ms 
03:09:45.342 16  switches: flows:  585648 587139 590764 588241 578155 585715 595326 594049 594551 589105 585205 596113 596429 597049 585488 595369  total = 157.140218 per ms 
03:10:45.443 16  switches: flows:  599832 602841 596190 599076 587572 604211 605142 600012 599947 596372 598742 605756 607719 601394 600773 603849  total = 159.890042 per ms 
03:11:45.544 16  switches: flows:  568704 590951 597239 595326 601032 565642 600350 599914 587124 598816 590358 608414 589493 591222 585410 605939  total = 157.666822 per ms 
03:12:45.647 16  switches: flows:  608240 607119 607560 611953 604076 608451 607514 616154 609022 613046 613329 608844 612588 611361 603979 617744  total = 162.407741 per ms 
03:13:45.748 16  switches: flows:  595219 602792 600743 599033 595124 603630 605274 600601 608239 600108 592764 595420 605511 601656 597497 605063  total = 159.874395 per ms 
03:14:45.851 16  switches: flows:  579041 561455 560705 575322 568701 567307 573423 569992 562893 568970 568416 565349 564003 569152 567664 563019  total = 151.167571 per ms 
03:15:45.953 16  switches: flows:  612904 611752 603847 611609 608959 612873 610565 608932 600000 601214 611875 619366 615234 617715 607380 608896  total = 162.444182 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 138555.39/162444.18/155248.62/52285.62 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.965412" elapsed="0.000379"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-14T03:15:45.965940" elapsed="0.000360"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-14T03:15:45.966686" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-14T03:15:45.966792" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 138555.39/162444.18/155248.62/52285.62 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-14T03:15:45.966463" elapsed="0.000354"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:15:45.967239" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 138555.39/162444.18/155248.62/52285.62 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:15:45.966987" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.969666" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.967419" elapsed="0.002316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.972123" level="INFO">138555.39/162444.18/155248.62/52285.62</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.969883" elapsed="0.002297"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:15:45.974556" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:15:45.972329" elapsed="0.002254"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:15:45.977056" level="INFO">@{result_value_list} = [ 138555.39 | 162444.18 | 155248.62 | 52285.62 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:15:45.974784" elapsed="0.002300"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.977546" level="INFO">Length is 4.</msg>
<msg time="2026-06-14T03:15:45.977636" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T03:15:45.977239" elapsed="0.000422"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.982570" level="INFO">min :: 138555.39</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.978058" elapsed="0.004570"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-14T03:15:45.977927" elapsed="0.004737"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.987267" level="INFO">max :: 162444.18</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.982902" elapsed="0.004422"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-14T03:15:45.982769" elapsed="0.004590"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.991991" level="INFO">avg :: 155248.62</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.987579" elapsed="0.004469"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-14T03:15:45.987450" elapsed="0.004633"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:45.996712" level="INFO">stdev :: 52285.62</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:45.992304" elapsed="0.004484"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-14T03:15:45.992173" elapsed="0.004650"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-14T03:15:45.977737" elapsed="0.019119"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.000791" level="INFO">${min} = 138555.39</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:15:45.997012" elapsed="0.003807"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.004953" level="INFO">${max} = 162444.18</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:15:46.000975" elapsed="0.004005"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.008932" level="INFO">${average} = 155248.62</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:15:46.005134" elapsed="0.003825"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.012899" level="INFO">${stdev} = 52285.62</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:15:46.009111" elapsed="0.003815"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.013432" level="INFO">${date} = 2026-06-14 03:15:46</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-14T03:15:46.013085" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.014036" level="INFO">CBench Result: 2026-06-14 03:15:46,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,138555.39,162444.18,155248.62,52285.62</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:46.013611" elapsed="0.000482"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T03:15:46.015286" 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-06-14T03:15:46.014858" elapsed="0.000496"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-14T03:15:46.015507" elapsed="0.000485"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-14T03:15:46.014228" elapsed="0.001829"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-06-14T03:05:39.277320" elapsed="606.738798"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.016594" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-14T03:15:46.016275" elapsed="0.000376"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-14T03:15:46.017179" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-06-14T03:15:46.016875" elapsed="0.000638"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-14T03:05:39.275931" elapsed="606.741619"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.018924" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:46.018523" elapsed="0.000471"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.020203" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-14T03:15:46.019873" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-14T03:15:46.020621" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-14T03:15:46.020383" 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-06-14T03:15:46.023875" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-14T03:15:46.023608" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-06-14T03:15:46.023588" elapsed="0.000368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-14T03:15:46.024267" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-14T03:15:46.024089" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.024989" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.175 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.228" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:15:46.024552" elapsed="0.000496"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-14T03:15:46.025579" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T03:15:46.025186" elapsed="0.000420"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T03:15:46.026493" level="INFO">Length is 0.</msg>
<msg time="2026-06-14T03:15:46.026581" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T03:15:46.026194" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T03:15:46.026761" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-14T03:15:46.027969" level="INFO">Logging into '10.30.171.228:22' as 'jenkins'.</msg>
<msg time="2026-06-14T03:15:47.190138" 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 Sun Jun 14 03:15:46 UTC 2026

  System load:  0.24               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.228
  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: Sun Jun 14 03:05:39 2026 from 10.30.170.206
[?2004h[jenkins@releng-63164-304-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-14T03:15:46.027596" elapsed="1.162738"/>
</kw>
<msg time="2026-06-14T03:15:47.190424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T03:15:46.027253" elapsed="1.163253"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-14T03:15:46.025821" elapsed="1.164800"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-14T03:15:47.191178" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.175 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-14T03:25:53.237584" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-14T03:25:53.240537" level="INFO">${stdout} = </msg>
<msg time="2026-06-14T03:25:53.240622" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-14T03:15:47.190866" elapsed="606.049795"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T03:25:53.243468" elapsed="0.001504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.246563" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175: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.175. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:16:52.320 16  switches: flows:  121711 118270 119834 117866 118898 120658 119794 121566 117023 119352 119737 117892 116649 119322 118742 116189  total = 31.725050 per ms 
03:17:52.423 16  switches: flows:  123391 117937 120157 118082 123831 122213 121181 121413 117503 120783 120087 120265 117289 121042 119546 115897  total = 31.956878 per ms 
03:18:52.524 16  switches: flows:  129161 123916 123857 121230 126313 125307 126866 126325 123871 127170 124815 124737 120631 125935 124927 121197  total = 33.215475 per ms 
03:19:52.625 16  switches: flows:  131466 126354 126069 123939 127412 126980 127894 128656 124360 127678 128243 127022 122817 127772 126202 122543  total = 33.700465 per ms 
03:20:52.726 16  switches: flows:  129728 125701 125727 122356 128479 125158 127083 128548 122818 128127 127217 124609 122142 126744 126128 122088  total = 33.488299 per ms 
03:21:52.828 16  switches: flows:  128270 123857 124973 121906 124706 124006 124205 126911 122377 127042 125455 125489 119170 125249 124133 120666  total = 33.085028 per ms 
03:22:52.928 16  switches: flows:  130256 125862 125206 123869 127967 127183 127658 128227 122644 129596 126100 126692 122660 130067 126784 121894  total = 33.654885 per ms 
03:23:53.029 16  switches: flows:  132685 127151 127071 125328 128158 126966 128781 127545 125591 130301 127976 128013 124446 129283 128413 122907  total = 33.953567 per ms 
03:24:53.131 16  switches: flows:  131182 125658 125884 123313 127805 125129 127278 126614 123160 128974 128246 126555 123971 127753 125215 121792  total = 33.586010 per ms 
03:25:53.232 16  switches: flows:  130529 126316 127163 123788 127847 125825 126077 126950 123639 128990 128822 126860 123063 128653 124203 122750  total = 33.634961 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31956.88/33953.57/33363.95/11135.11 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.245659" elapsed="0.001112"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-14T03:25:53.247062" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-06-14T03:25:53.246888" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-06-14T03:25:53.246853" elapsed="0.000316"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-14T03:25:53.247276" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-06-14T03:25:53.247238" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-06-14T03:25:53.247220" elapsed="0.000118"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-14T03:25:53.247369" elapsed="0.000013"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-14T03:25:53.251235" elapsed="0.000367"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-14T03:25:53.251779" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-14T03:25:53.252091" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-14T03:25:53.248207" elapsed="0.004050"/>
</kw>
<msg time="2026-06-14T03:25:53.252395" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-14T03:15:46.021039" elapsed="607.231384"/>
</kw>
<status status="PASS" start="2026-06-14T03:15:46.020707" elapsed="607.231766"/>
</branch>
<status status="PASS" start="2026-06-14T03:15:46.020332" elapsed="607.232165"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.252992" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.175: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.175. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:16:52.320 16  switches: flows:  121711 118270 119834 117866 118898 120658 119794 121566 117023 119352 119737 117892 116649 119322 118742 116189  total = 31.725050 per ms 
03:17:52.423 16  switches: flows:  123391 117937 120157 118082 123831 122213 121181 121413 117503 120783 120087 120265 117289 121042 119546 115897  total = 31.956878 per ms 
03:18:52.524 16  switches: flows:  129161 123916 123857 121230 126313 125307 126866 126325 123871 127170 124815 124737 120631 125935 124927 121197  total = 33.215475 per ms 
03:19:52.625 16  switches: flows:  131466 126354 126069 123939 127412 126980 127894 128656 124360 127678 128243 127022 122817 127772 126202 122543  total = 33.700465 per ms 
03:20:52.726 16  switches: flows:  129728 125701 125727 122356 128479 125158 127083 128548 122818 128127 127217 124609 122142 126744 126128 122088  total = 33.488299 per ms 
03:21:52.828 16  switches: flows:  128270 123857 124973 121906 124706 124006 124205 126911 122377 127042 125455 125489 119170 125249 124133 120666  total = 33.085028 per ms 
03:22:52.928 16  switches: flows:  130256 125862 125206 123869 127967 127183 127658 128227 122644 129596 126100 126692 122660 130067 126784 121894  total = 33.654885 per ms 
03:23:53.029 16  switches: flows:  132685 127151 127071 125328 128158 126966 128781 127545 125591 130301 127976 128013 124446 129283 128413 122907  total = 33.953567 per ms 
03:24:53.131 16  switches: flows:  131182 125658 125884 123313 127805 125129 127278 126614 123160 128974 128246 126555 123971 127753 125215 121792  total = 33.586010 per ms 
03:25:53.232 16  switches: flows:  130529 126316 127163 123788 127847 125825 126077 126950 123639 128990 128822 126860 123063 128653 124203 122750  total = 33.634961 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31956.88/33953.57/33363.95/11135.11 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.252669" elapsed="0.000402"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-14T03:25:53.253231" elapsed="0.000377"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-14T03:25:53.254026" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-14T03:25:53.254149" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 31956.88/33953.57/33363.95/11135.11 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-14T03:25:53.253798" elapsed="0.000378"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:25:53.254595" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 31956.88/33953.57/33363.95/11135.11 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:25:53.254337" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.257113" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.254823" elapsed="0.002348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.259602" level="INFO">31956.88/33953.57/33363.95/11135.11</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.257321" elapsed="0.002338"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:25:53.262066" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:25:53.259828" elapsed="0.002283"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-14T03:25:53.264606" level="INFO">@{result_value_list} = [ 31956.88 | 33953.57 | 33363.95 | 11135.11 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-14T03:25:53.262336" elapsed="0.002298"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.265119" level="INFO">Length is 4.</msg>
<msg time="2026-06-14T03:25:53.265210" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-14T03:25:53.264806" elapsed="0.000428"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.270623" level="INFO">min :: 31956.88</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.266140" elapsed="0.004541"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-14T03:25:53.265971" elapsed="0.004745"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.275401" level="INFO">max :: 33953.57</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.270952" elapsed="0.004506"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-14T03:25:53.270823" elapsed="0.004669"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.280270" level="INFO">avg :: 33363.95</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.275703" elapsed="0.004626"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-14T03:25:53.275576" elapsed="0.004788"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.285016" level="INFO">stdev :: 11135.11</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.280583" elapsed="0.004491"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-14T03:25:53.280449" elapsed="0.004660"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-14T03:25:53.265304" elapsed="0.019835"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.289089" level="INFO">${min} = 31956.88</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:25:53.285299" elapsed="0.003817"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.293067" level="INFO">${max} = 33953.57</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:25:53.289271" elapsed="0.003824"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.302652" level="INFO">${average} = 33363.95</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:25:53.293248" elapsed="0.009457"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.307896" level="INFO">${stdev} = 11135.11</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-14T03:25:53.303442" elapsed="0.004482"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.308472" level="INFO">${date} = 2026-06-14 03:25:53</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-14T03:25:53.308113" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.309111" level="INFO">CBench Result: 2026-06-14 03:25:53,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,31956.88,33953.57,33363.95,11135.11</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-14T03:25:53.308667" elapsed="0.000503"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-14T03:25:53.310397" 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-06-14T03:25:53.309834" elapsed="0.000637"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-14T03:25:53.310628" elapsed="0.000500"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-14T03:25:53.309329" elapsed="0.001866"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-06-14T03:15:46.019305" elapsed="607.291949"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.312190" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-14T03:25:53.311872" elapsed="0.000376"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-14T03:25:53.313944" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-14T03:25:53.313437" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-14T03:25:53.314208" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-06-14T03:25:53.314056" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-06-14T03:25:53.314032" elapsed="0.000271"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-06-14T03:25:53.314490" elapsed="0.000023"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-14T03:25:53.315108" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-06-14T03:25:53.315270" 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-06-14T03:25:53.315487" 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-06-14T03:25:53.315639" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-06-14T03:25:53.315803" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-06-14T03:25:53.315958" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-06-14T03:25:53.316190" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-14T03:25:53.316051" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-06-14T03:25:53.316033" elapsed="0.000232"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-06-14T03:25:53.313096" elapsed="0.003221"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-14T03:15:46.017984" elapsed="607.298379"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-06-14T02:55:29.927396" elapsed="1823.391803"/>
</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>
