<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-06-08T03:05:39.666647" 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-08T03:05:40.238504" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-06-08T03:05:40.238363" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-06-08T03:05:40.238330" elapsed="0.000287"/>
</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-08T03:05:40.238764" elapsed="0.000528"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-08T03:05:40.239774" level="INFO">Logging into '10.30.170.85:8101' as 'karaf'.</msg>
<msg time="2026-06-08T03:05:41.074895" 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-08T03:05:40.239468" elapsed="0.835615"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-08T03:05:41.123458" 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-08T03:05:41.075326" elapsed="0.048225"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-08T03:05:41.125276" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-08T03:05:41.125392" 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-08T03:05:41.123735" elapsed="0.001687"/>
</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-08T03:05:41.125580" elapsed="0.000208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:05:41.125962" elapsed="0.000207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:05:41.126629" 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-08T03:05:41.126320" elapsed="0.000363"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-08T03:05:41.126734" elapsed="0.000052"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.85
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-08T03:05:40.237979" elapsed="0.888923"/>
</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-08T03:05:40.234341" elapsed="0.892649"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-08T03:05:41.127677" 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-08T03:05:41.127341" elapsed="0.000395"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-08T03:05:41.128154" 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-08T03:05:41.127890" elapsed="0.000321"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-08T03:05:41.128783" 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-08T03:05:41.128365" elapsed="0.000448"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-08T03:05:41.129377" 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-08T03:05:41.129006" elapsed="0.000414"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-08T03:05:41.129964" 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-08T03:05:41.129569" elapsed="0.000424"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-08T03:05:41.130468" 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-08T03:05:41.130155" elapsed="0.000354"/>
</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-08T03:05:41.130813" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:05:41.130599" elapsed="0.000269"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-08T03:05:41.135516" 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-08T03:05:41.135109" elapsed="0.000434"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-08T03:05:41.136597" level="INFO">Length is 0.</msg>
<msg time="2026-06-08T03:05:41.136679" 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-08T03:05:41.136124" elapsed="0.000580"/>
</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-08T03:05:41.136875" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-08T03:05:41.138307" level="INFO">Logging into '10.30.171.68:22' as 'jenkins'.</msg>
<msg time="2026-06-08T03:05:41.901184" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  8 03:05:41 UTC 2026

  System load:  0.07               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.68
  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-292-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-08T03:05:41.137778" elapsed="0.763494"/>
</kw>
<msg time="2026-06-08T03:05:41.901342" 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-08T03:05:41.137430" elapsed="0.763981"/>
</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-08T03:05:41.135748" elapsed="0.765756"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-08T03:05:41.909403" 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-08T03:05:41.901661" elapsed="0.009771"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:05:41.911676" elapsed="0.000409"/>
</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-08T03:05:41.134574" elapsed="0.777602"/>
</kw>
<status status="PASS" start="2026-06-08T03:05:41.131142" elapsed="0.781087"/>
</branch>
<status status="PASS" start="2026-06-08T03:05:41.130572" elapsed="0.781698"/>
</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-08T03:05:41.912492" elapsed="0.000672"/>
</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-08T03:05:41.922246" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-06-08T03:05:41.922127" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-06-08T03:05:41.922105" elapsed="0.000216"/>
</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-08T03:05:41.925913" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-06-08T03:05:41.925801" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-06-08T03:05:41.925782" elapsed="0.000221"/>
</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-08T03:05:41.926136" elapsed="0.000424"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-08T03:05:41.926983" level="INFO">Logging into '10.30.170.85:8101' as 'karaf'.</msg>
<msg time="2026-06-08T03:05:42.126924" 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-08T03:05:41.926709" elapsed="0.200315"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.222862" 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-08T03:05:42.127181" elapsed="0.095766"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.227314" 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-08T03:05:42.227466" 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-08T03:05:42.223105" elapsed="0.004393"/>
</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-08T03:05:42.227641" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:05:42.227999" elapsed="0.000175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:05:42.228576" 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-08T03:05:42.228312" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-08T03:05:42.228676" elapsed="0.000035"/>
</return>
<msg time="2026-06-08T03:05:42.228843" 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.170.85
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-08T03:05:41.925446" elapsed="0.303428"/>
</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-08T03:05:42.229038" elapsed="0.000509"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-08T03:05:42.229599" elapsed="0.000032"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-06-08T03:05:41.921606" elapsed="0.308123"/>
</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-08T03:05:42.233378" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-06-08T03:05:42.233231" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-06-08T03:05:42.233210" elapsed="0.000238"/>
</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-08T03:05:42.233578" elapsed="0.000435"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.234415" level="INFO">Logging into '10.30.170.85:8101' as 'karaf'.</msg>
<msg time="2026-06-08T03:05:42.385354" 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-08T03:05:42.234161" elapsed="0.151280"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.409647" 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-08T03:05:42.385600" elapsed="0.024105"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.411502" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-08T03:05:42.411595" 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-08T03:05:42.409850" elapsed="0.001774"/>
</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-08T03:05:42.411759" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:05:42.412093" elapsed="0.000154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:05:42.412643" 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-08T03:05:42.412381" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-08T03:05:42.412740" elapsed="0.000036"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.85
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-08T03:05:42.232901" elapsed="0.179976"/>
</kw>
<status status="PASS" start="2026-06-08T03:05:40.232551" elapsed="2.180409"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:05:42.415449" 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-08T03:05:42.413878" elapsed="0.001647"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-08T03:05:42.416989" 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-08T03:05:42.416620" elapsed="0.000413"/>
</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-08T03:05:42.417338" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:05:42.417111" elapsed="0.000315"/>
</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-08T03:05:42.420455" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:05:42.420206" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-06-08T03:05:42.420181" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.420872" 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-08T03:05:42.421019" 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-08T03:05:42.420671" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:05:42.421627" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.85 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.68" 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-08T03:05:42.421184" elapsed="0.000502"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.422319" 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-08T03:05:42.421828" elapsed="0.000518"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-08T03:05:42.423258" level="INFO">Length is 0.</msg>
<msg time="2026-06-08T03:05:42.423348" 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-08T03:05:42.422943" elapsed="0.000429"/>
</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-08T03:05:42.423515" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.424715" level="INFO">Logging into '10.30.171.68:22' as 'jenkins'.</msg>
<msg time="2026-06-08T03:05:42.751576" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  8 03:05:41 UTC 2026

  System load:  0.07               Processes:             114
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.68
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Jun  8 03:05:41 2026 from 10.30.171.80
[?2004h[jenkins@releng-63164-292-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-08T03:05:42.424361" elapsed="0.327326"/>
</kw>
<msg time="2026-06-08T03:05:42.751749" 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-08T03:05:42.424012" elapsed="0.327800"/>
</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-08T03:05:42.422549" elapsed="0.329352"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-08T03:05:42.752474" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.85 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-08T03:15:48.863301" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-08T03:15:48.863719" level="INFO">${stdout} = </msg>
<msg time="2026-06-08T03:15:48.863787" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-08T03:05:42.752082" elapsed="606.111748"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:15:48.864195" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.866620" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.85. 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:47.942 16  switches: flows:  108780 110270 110740 110103 108864 108948 110293 108425 104547 107083 105399 107646 107866 104703 102758 103605  total = 28.667167 per ms 
03:07:48.043 16  switches: flows:  120779 120957 121706 119750 118924 120187 119495 120858 113966 118443 114773 118154 115199 116448 112096 114049  total = 31.377229 per ms 
03:08:48.144 16  switches: flows:  121660 123480 124626 120317 121868 120446 122448 119609 116503 116519 116181 120896 117118 120025 113432 116639  total = 31.809652 per ms 
03:09:48.245 16  switches: flows:  122314 125983 124397 121974 121795 121301 124967 120857 117603 118364 116972 120351 117823 120790 115098 117295  total = 32.077828 per ms 
03:10:48.346 16  switches: flows:  122708 125342 123273 121123 121940 119184 123483 121384 117890 117116 116577 120387 117207 119830 115761 118132  total = 31.968891 per ms 
03:11:48.447 16  switches: flows:  120277 122365 124287 118858 120405 119491 121222 118566 117127 115636 115268 119898 116718 118471 114689 115915  total = 31.600473 per ms 
03:12:48.547 16  switches: flows:  122773 126001 123962 122157 121469 120212 123921 120221 118340 120309 118128 121239 117800 120402 115394 117981  total = 32.118172 per ms 
03:13:48.648 16  switches: flows:  117096 119102 119165 116795 116420 115172 116210 116162 111876 113718 113789 114191 113964 113959 110793 114033  total = 30.656241 per ms 
03:14:48.749 16  switches: flows:  122922 124469 124074 121370 121379 120881 121085 122391 116722 118302 116794 118062 117290 117986 115492 117934  total = 31.899165 per ms 
03:15:48.850 16  switches: flows:  123128 125715 125896 124472 121994 124568 123428 122800 118610 118473 117435 119133 117808 117779 115896 116985  total = 32.181592 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30656.24/32181.59/31743.25/10590.85 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:15:48.866127" elapsed="0.000727"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-08T03:15:48.867252" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-06-08T03:15:48.867046" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-06-08T03:15:48.866994" elapsed="0.000404"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-08T03:15:48.867549" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-06-08T03:15:48.867492" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-06-08T03:15:48.867468" elapsed="0.000167"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-08T03:15:48.867679" elapsed="0.000018"/>
</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-08T03:15:48.871385" elapsed="0.000457"/>
</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-08T03:15:48.872073" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:15:48.872495" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-08T03:15:48.868169" elapsed="0.004537"/>
</kw>
<msg time="2026-06-08T03:15:48.872886" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-08T03:05:42.417784" elapsed="606.455143"/>
</kw>
<status status="PASS" start="2026-06-08T03:05:42.417455" elapsed="606.455563"/>
</branch>
<status status="PASS" start="2026-06-08T03:05:42.417088" elapsed="606.455963"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.873679" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.85. 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:47.942 16  switches: flows:  108780 110270 110740 110103 108864 108948 110293 108425 104547 107083 105399 107646 107866 104703 102758 103605  total = 28.667167 per ms 
03:07:48.043 16  switches: flows:  120779 120957 121706 119750 118924 120187 119495 120858 113966 118443 114773 118154 115199 116448 112096 114049  total = 31.377229 per ms 
03:08:48.144 16  switches: flows:  121660 123480 124626 120317 121868 120446 122448 119609 116503 116519 116181 120896 117118 120025 113432 116639  total = 31.809652 per ms 
03:09:48.245 16  switches: flows:  122314 125983 124397 121974 121795 121301 124967 120857 117603 118364 116972 120351 117823 120790 115098 117295  total = 32.077828 per ms 
03:10:48.346 16  switches: flows:  122708 125342 123273 121123 121940 119184 123483 121384 117890 117116 116577 120387 117207 119830 115761 118132  total = 31.968891 per ms 
03:11:48.447 16  switches: flows:  120277 122365 124287 118858 120405 119491 121222 118566 117127 115636 115268 119898 116718 118471 114689 115915  total = 31.600473 per ms 
03:12:48.547 16  switches: flows:  122773 126001 123962 122157 121469 120212 123921 120221 118340 120309 118128 121239 117800 120402 115394 117981  total = 32.118172 per ms 
03:13:48.648 16  switches: flows:  117096 119102 119165 116795 116420 115172 116210 116162 111876 113718 113789 114191 113964 113959 110793 114033  total = 30.656241 per ms 
03:14:48.749 16  switches: flows:  122922 124469 124074 121370 121379 120881 121085 122391 116722 118302 116794 118062 117290 117986 115492 117934  total = 31.899165 per ms 
03:15:48.850 16  switches: flows:  123128 125715 125896 124472 121994 124568 123428 122800 118610 118473 117435 119133 117808 117779 115896 116985  total = 32.181592 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30656.24/32181.59/31743.25/10590.85 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:15:48.873247" elapsed="0.000543"/>
</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-08T03:15:48.874018" elapsed="0.000507"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-08T03:15:48.875117" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-08T03:15:48.875245" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30656.24/32181.59/31743.25/10590.85 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-08T03:15:48.874747" elapsed="0.000532"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:15:48.875850" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30656.24/32181.59/31743.25/10590.85 | 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-08T03:15:48.875495" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.879358" 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-08T03:15:48.876116" elapsed="0.003320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.882605" level="INFO">30656.24/32181.59/31743.25/10590.85</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:15:48.879640" elapsed="0.003024"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:15:48.885064" 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-08T03:15:48.882817" elapsed="0.002276"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:15:48.887518" level="INFO">@{result_value_list} = [ 30656.24 | 32181.59 | 31743.25 | 10590.85 ]</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-08T03:15:48.885280" elapsed="0.002266"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.888038" level="INFO">Length is 4.</msg>
<msg time="2026-06-08T03:15:48.888127" 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-08T03:15:48.887701" elapsed="0.000450"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.892895" level="INFO">min :: 30656.24</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:15:48.888557" elapsed="0.004412"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-08T03:15:48.888414" elapsed="0.004591"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.897533" level="INFO">max :: 32181.59</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-08T03:15:48.893227" elapsed="0.004363"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-08T03:15:48.893098" elapsed="0.004632"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.902245" level="INFO">avg :: 31743.25</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-08T03:15:48.897969" elapsed="0.004332"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-08T03:15:48.897825" elapsed="0.004510"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.907021" level="INFO">stdev :: 10590.85</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:15:48.902553" elapsed="0.004544"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-08T03:15:48.902427" elapsed="0.004706"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-08T03:15:48.888222" elapsed="0.018944"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.911068" level="INFO">${min} = 30656.24</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-08T03:15:48.907325" elapsed="0.003771"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.915220" level="INFO">${max} = 32181.59</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-08T03:15:48.911247" elapsed="0.004001"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.919276" level="INFO">${average} = 31743.25</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-08T03:15:48.915402" elapsed="0.003901"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.923211" level="INFO">${stdev} = 10590.85</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-08T03:15:48.919455" elapsed="0.003783"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.923762" level="INFO">${date} = 2026-06-08 03:15:48</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-08T03:15:48.923398" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.924366" level="INFO">CBench Result: 2026-06-08 03:15:48,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30656.24,32181.59,31743.25,10590.85</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-08T03:15:48.923950" elapsed="0.000472"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-08T03:15:48.925463" 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-08T03:15:48.925060" elapsed="0.000469"/>
</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-08T03:15:48.925706" 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-08T03:15:48.924565" elapsed="0.001680"/>
</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-08T03:05:42.415985" elapsed="606.510320"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.926771" 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-08T03:15:48.926456" elapsed="0.000370"/>
</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-08T03:15:48.927356" elapsed="0.000272"/>
</kw>
<status status="PASS" start="2026-06-08T03:15:48.927054" elapsed="0.000645"/>
</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-08T03:05:42.413117" elapsed="606.514619"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.929085" 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-08T03:15:48.928683" elapsed="0.000458"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.930432" 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-08T03:15:48.930092" elapsed="0.000383"/>
</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-08T03:15:48.930805" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:15:48.930584" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-08T03:15:48.933827" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:15:48.933555" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-06-08T03:15:48.933536" elapsed="0.000371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-08T03:15:48.934256" 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-08T03:15:48.934374" 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-08T03:15:48.934063" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.934968" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.85 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.68" 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-08T03:15:48.934535" elapsed="0.000492"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-08T03:15:48.935561" 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-08T03:15:48.935165" elapsed="0.000423"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-08T03:15:48.936483" level="INFO">Length is 0.</msg>
<msg time="2026-06-08T03:15:48.936572" 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-08T03:15:48.936178" elapsed="0.000418"/>
</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-08T03:15:48.936735" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-08T03:15:48.937973" level="INFO">Logging into '10.30.171.68:22' as 'jenkins'.</msg>
<msg time="2026-06-08T03:15:49.557675" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  8 03:15:49 UTC 2026

  System load:  1.0                Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.68
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Jun  8 03:05:42 2026 from 10.30.171.80
[?2004h[jenkins@releng-63164-292-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-08T03:15:48.937574" elapsed="0.620227"/>
</kw>
<msg time="2026-06-08T03:15:49.557870" 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-08T03:15:48.937224" elapsed="0.620744"/>
</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-08T03:15:48.935787" elapsed="0.622276"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-08T03:15:49.558479" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.85 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-08T03:25:56.758419" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-08T03:25:56.759012" level="INFO">${stdout} = </msg>
<msg time="2026-06-08T03:25:56.759127" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.85: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-08T03:15:49.558234" elapsed="607.200958"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:25:56.759662" elapsed="0.000754"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.761624" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.85. 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:54.670 16  switches: flows:  613497 611661 621386 617045 623844 617281 614157 612522 594028 593896 599978 597799 596839 604557 607912 600295  total = 162.111617 per ms 
03:17:54.772 16  switches: flows:  616023 618716 618011 623234 620155 625699 620609 617245 623153 617638 615676 628086 614325 624437 622119 617855  total = 165.104843 per ms 
03:18:55.780 16  switches: flows:  608858 618590 614909 620993 620284 616693 623327 616136 620506 613051 620314 617043 620405 614062 616042 615385  total = 161.892008 per ms 
03:19:55.882 16  switches: flows:  593021 593524 597022 598946 592854 602796 594491 593917 593931 598836 598196 599135 603100 588920 601707 595017  total = 158.821248 per ms 
03:20:55.984 16  switches: flows:  584438 580199 576965 583521 559703 579937 579013 578185 566597 584001 589440 580225 594000 579739 582440 571040  total = 154.231407 per ms 
03:21:56.340 16  switches: flows:  619067 624266 622844 620715 619624 623272 615632 619244 621850 620870 623729 625211 619630 622886 617765 622348  total = 164.672626 per ms 
03:22:56.441 16  switches: flows:  562855 577993 583412 578659 567514 579934 555890 575466 568947 561992 572928 567880 576529 574207 562807 566487  total = 151.969635 per ms 
03:23:56.544 16  switches: flows:  594466 593008 596594 593249 601959 591481 595897 600786 595972 594034 597420 593471 596348 600615 593048 604181  total = 158.771976 per ms 
03:24:56.646 16  switches: flows:  550730 552406 549035 550609 556172 544217 542314 547037 546905 552181 560489 563590 550407 553086 563020 548975  total = 146.938909 per ms 
03:25:56.748 16  switches: flows:  639864 641933 637826 644607 623437 643051 633157 615297 627548 635385 627772 631714 626665 632162 630889 634202  total = 168.473701 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 146938.91/168473.70/158986.26/53397.79 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:25:56.760812" elapsed="0.001131"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-08T03:25:56.762477" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-06-08T03:25:56.762169" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-06-08T03:25:56.762114" elapsed="0.000573"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-08T03:25:56.762912" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-06-08T03:25:56.762829" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-06-08T03:25:56.762793" elapsed="0.000297"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-08T03:25:56.763161" 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-08T03:25:56.767952" elapsed="0.000496"/>
</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-08T03:25:56.768658" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:25:56.769120" elapsed="0.000151"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-08T03:25:56.763838" elapsed="0.005510"/>
</kw>
<msg time="2026-06-08T03:25:56.769541" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.85: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-08T03:15:48.931222" elapsed="607.838357"/>
</kw>
<status status="PASS" start="2026-06-08T03:15:48.930889" elapsed="607.838759"/>
</branch>
<status status="PASS" start="2026-06-08T03:15:48.930563" elapsed="607.839118"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.770332" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.85. 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:54.670 16  switches: flows:  613497 611661 621386 617045 623844 617281 614157 612522 594028 593896 599978 597799 596839 604557 607912 600295  total = 162.111617 per ms 
03:17:54.772 16  switches: flows:  616023 618716 618011 623234 620155 625699 620609 617245 623153 617638 615676 628086 614325 624437 622119 617855  total = 165.104843 per ms 
03:18:55.780 16  switches: flows:  608858 618590 614909 620993 620284 616693 623327 616136 620506 613051 620314 617043 620405 614062 616042 615385  total = 161.892008 per ms 
03:19:55.882 16  switches: flows:  593021 593524 597022 598946 592854 602796 594491 593917 593931 598836 598196 599135 603100 588920 601707 595017  total = 158.821248 per ms 
03:20:55.984 16  switches: flows:  584438 580199 576965 583521 559703 579937 579013 578185 566597 584001 589440 580225 594000 579739 582440 571040  total = 154.231407 per ms 
03:21:56.340 16  switches: flows:  619067 624266 622844 620715 619624 623272 615632 619244 621850 620870 623729 625211 619630 622886 617765 622348  total = 164.672626 per ms 
03:22:56.441 16  switches: flows:  562855 577993 583412 578659 567514 579934 555890 575466 568947 561992 572928 567880 576529 574207 562807 566487  total = 151.969635 per ms 
03:23:56.544 16  switches: flows:  594466 593008 596594 593249 601959 591481 595897 600786 595972 594034 597420 593471 596348 600615 593048 604181  total = 158.771976 per ms 
03:24:56.646 16  switches: flows:  550730 552406 549035 550609 556172 544217 542314 547037 546905 552181 560489 563590 550407 553086 563020 548975  total = 146.938909 per ms 
03:25:56.748 16  switches: flows:  639864 641933 637826 644607 623437 643051 633157 615297 627548 635385 627772 631714 626665 632162 630889 634202  total = 168.473701 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 146938.91/168473.70/158986.26/53397.79 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:25:56.769888" elapsed="0.000547"/>
</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-08T03:25:56.770642" elapsed="0.000525"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-08T03:25:56.771695" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-08T03:25:56.771819" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 146938.91/168473.70/158986.26/53397.79 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-08T03:25:56.771392" elapsed="0.000461"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:25:56.772443" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 146938.91/168473.70/158986.26/53397.79 | 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-08T03:25:56.772091" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.775350" 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-08T03:25:56.772681" elapsed="0.002726"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.777793" level="INFO">146938.91/168473.70/158986.26/53397.79</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:25:56.775553" elapsed="0.002297"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:25:56.780240" 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-08T03:25:56.778016" elapsed="0.002252"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:25:56.782731" level="INFO">@{result_value_list} = [ 146938.91 | 168473.70 | 158986.26 | 53397.79 ]</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-08T03:25:56.780475" elapsed="0.002283"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.783241" level="INFO">Length is 4.</msg>
<msg time="2026-06-08T03:25:56.783338" 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-08T03:25:56.782915" elapsed="0.000447"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.788120" level="INFO">min :: 146938.91</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:25:56.783759" elapsed="0.004420"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-08T03:25:56.783628" elapsed="0.004587"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.793036" level="INFO">max :: 168473.70</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:25:56.788443" elapsed="0.004656"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-08T03:25:56.788312" elapsed="0.004822"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.797687" level="INFO">avg :: 158986.26</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:25:56.793351" elapsed="0.004396"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-08T03:25:56.793223" elapsed="0.004560"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.802511" level="INFO">stdev :: 53397.79</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-08T03:25:56.798047" elapsed="0.004520"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-08T03:25:56.797871" elapsed="0.004738"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-08T03:25:56.783432" elapsed="0.019209"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.806684" level="INFO">${min} = 146938.91</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-08T03:25:56.802802" elapsed="0.003910"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.810712" level="INFO">${max} = 168473.70</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-08T03:25:56.806872" elapsed="0.003868"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.814889" level="INFO">${average} = 158986.26</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-08T03:25:56.810898" elapsed="0.004018"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.818942" level="INFO">${stdev} = 53397.79</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-08T03:25:56.815095" elapsed="0.003893"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.819519" level="INFO">${date} = 2026-06-08 03:25:56</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-08T03:25:56.819155" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.820136" level="INFO">CBench Result: 2026-06-08 03:25:56,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,146938.91,168473.70,158986.26,53397.79</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-08T03:25:56.819692" elapsed="0.000500"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-08T03:25:56.821340" 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-08T03:25:56.820859" elapsed="0.000547"/>
</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-08T03:25:56.821560" elapsed="0.000487"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-08T03:25:56.820353" elapsed="0.001762"/>
</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-08T03:15:48.929463" elapsed="607.892712"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.822648" 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-08T03:25:56.822329" elapsed="0.000402"/>
</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-08T03:25:56.823273" elapsed="0.000276"/>
</kw>
<status status="PASS" start="2026-06-08T03:25:56.822946" elapsed="0.000674"/>
</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-08T03:15:48.928065" elapsed="607.895593"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.827452" 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-08T03:25:56.826367" elapsed="0.001216"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.829592" 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-08T03:25:56.829085" elapsed="0.000571"/>
</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-08T03:25:56.830210" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:25:56.829847" elapsed="0.000451"/>
</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-08T03:25:56.834519" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:25:56.834170" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-06-08T03:25:56.834144" elapsed="0.000488"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-08T03:25:56.835157" 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-08T03:25:56.835335" 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-08T03:25:56.834819" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.836133" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.85 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.68" 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-08T03:25:56.835562" elapsed="0.000630"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-08T03:25:56.836737" 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-08T03:25:56.836335" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-08T03:25:56.837847" level="INFO">Length is 0.</msg>
<msg time="2026-06-08T03:25:56.837946" 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-08T03:25:56.837363" elapsed="0.000622"/>
</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-08T03:25:56.838132" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-08T03:25:56.839357" level="INFO">Logging into '10.30.171.68:22' as 'jenkins'.</msg>
<msg time="2026-06-08T03:25:57.452890" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  8 03:25:57 UTC 2026

  System load:  0.09               Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.68
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Jun  8 03:15:49 2026 from 10.30.171.80
[?2004h[jenkins@releng-63164-292-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-08T03:25:56.838983" elapsed="0.614287"/>
</kw>
<msg time="2026-06-08T03:25:57.453421" 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-08T03:25:56.838613" elapsed="0.614955"/>
</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-08T03:25:56.836984" elapsed="0.616797"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-08T03:25:57.454825" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.85 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-08T03:36:03.502556" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-08T03:36:03.503209" level="INFO">${stdout} = </msg>
<msg time="2026-06-08T03:36:03.503317" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-08T03:25:57.454274" elapsed="606.049109"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:36:03.503872" elapsed="0.001013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.506106" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.85. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:27:02.584 16  switches: flows:  97951 0 0 0 99565 97687 98098 107617 96382 0 0 105369 97731 98279 98513 0  total = 16.619867 per ms 
03:28:02.686 16  switches: flows:  124902 126449 125763 126016 126132 123573 124421 124006 120560 123922 124591 121743 121901 122407 122578 122157  total = 32.963635 per ms 
03:29:02.786 16  switches: flows:  123682 127248 123382 123880 126081 123428 123243 125207 120713 124249 123719 121117 122514 122552 123568 122488  total = 32.896230 per ms 
03:30:02.887 16  switches: flows:  122162 123594 120888 121822 123934 123306 120716 122477 118793 122062 121409 120230 120600 120054 118852 120714  total = 32.306256 per ms 
03:31:02.988 16  switches: flows:  120427 120591 121520 120105 121452 119119 119500 119646 118601 119583 119570 118237 118942 119086 117805 119731  total = 31.845314 per ms 
03:32:03.089 16  switches: flows:  120037 121005 120840 120545 119108 117372 119733 119060 116257 118929 116914 116676 119729 118649 115938 116878  total = 31.575072 per ms 
03:33:03.191 16  switches: flows:  115265 117848 116901 117872 116621 114650 116777 116700 113114 115157 115366 113503 115065 115838 113319 113480  total = 30.739897 per ms 
03:34:03.292 16  switches: flows:  119765 122302 121550 122747 123198 120424 123293 119891 121574 121567 122158 118943 119089 121174 117902 121748  total = 32.234872 per ms 
03:35:03.394 16  switches: flows:  111068 112947 114756 116537 114830 111863 114788 113118 112141 113458 114434 110401 111508 113610 111425 112818  total = 30.110917 per ms 
03:36:03.496 16  switches: flows:  122994 125549 128352 127190 125968 126124 123508 125823 123085 123160 124213 122656 125899 123836 123070 122745  total = 33.180173 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30110.92/33180.17/31983.60/10706.09 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:36:03.505336" elapsed="0.001084"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-08T03:36:03.507053" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-06-08T03:36:03.506614" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-06-08T03:36:03.506563" elapsed="0.000708"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-08T03:36:03.507499" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-06-08T03:36:03.507416" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-06-08T03:36:03.507379" elapsed="0.000260"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-08T03:36:03.507709" 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-08T03:36:03.511352" elapsed="0.000456"/>
</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-08T03:36:03.512086" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-08T03:36:03.512491" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-08T03:36:03.508233" elapsed="0.004470"/>
</kw>
<msg time="2026-06-08T03:36:03.512881" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-08T03:25:56.830805" elapsed="606.682114"/>
</kw>
<status status="PASS" start="2026-06-08T03:25:56.830336" elapsed="606.682675"/>
</branch>
<status status="PASS" start="2026-06-08T03:25:56.829813" elapsed="606.683230"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.513644" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.85:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.85. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:27:02.584 16  switches: flows:  97951 0 0 0 99565 97687 98098 107617 96382 0 0 105369 97731 98279 98513 0  total = 16.619867 per ms 
03:28:02.686 16  switches: flows:  124902 126449 125763 126016 126132 123573 124421 124006 120560 123922 124591 121743 121901 122407 122578 122157  total = 32.963635 per ms 
03:29:02.786 16  switches: flows:  123682 127248 123382 123880 126081 123428 123243 125207 120713 124249 123719 121117 122514 122552 123568 122488  total = 32.896230 per ms 
03:30:02.887 16  switches: flows:  122162 123594 120888 121822 123934 123306 120716 122477 118793 122062 121409 120230 120600 120054 118852 120714  total = 32.306256 per ms 
03:31:02.988 16  switches: flows:  120427 120591 121520 120105 121452 119119 119500 119646 118601 119583 119570 118237 118942 119086 117805 119731  total = 31.845314 per ms 
03:32:03.089 16  switches: flows:  120037 121005 120840 120545 119108 117372 119733 119060 116257 118929 116914 116676 119729 118649 115938 116878  total = 31.575072 per ms 
03:33:03.191 16  switches: flows:  115265 117848 116901 117872 116621 114650 116777 116700 113114 115157 115366 113503 115065 115838 113319 113480  total = 30.739897 per ms 
03:34:03.292 16  switches: flows:  119765 122302 121550 122747 123198 120424 123293 119891 121574 121567 122158 118943 119089 121174 117902 121748  total = 32.234872 per ms 
03:35:03.394 16  switches: flows:  111068 112947 114756 116537 114830 111863 114788 113118 112141 113458 114434 110401 111508 113610 111425 112818  total = 30.110917 per ms 
03:36:03.496 16  switches: flows:  122994 125549 128352 127190 125968 126124 123508 125823 123085 123160 124213 122656 125899 123836 123070 122745  total = 33.180173 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30110.92/33180.17/31983.60/10706.09 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:36:03.513238" elapsed="0.000521"/>
</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-08T03:36:03.513985" elapsed="0.000506"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-08T03:36:03.515073" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-08T03:36:03.515202" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30110.92/33180.17/31983.60/10706.09 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-08T03:36:03.514714" elapsed="0.000523"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:36:03.515804" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30110.92/33180.17/31983.60/10706.09 | 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-08T03:36:03.515451" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.518354" 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-08T03:36:03.516094" elapsed="0.002316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.520960" level="INFO">30110.92/33180.17/31983.60/10706.09</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:36:03.518553" elapsed="0.002465"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:36:03.523433" 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-08T03:36:03.521169" elapsed="0.002291"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-08T03:36:03.525888" level="INFO">@{result_value_list} = [ 30110.92 | 33180.17 | 31983.60 | 10706.09 ]</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-08T03:36:03.523650" elapsed="0.002266"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.526393" level="INFO">Length is 4.</msg>
<msg time="2026-06-08T03:36:03.526481" 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-08T03:36:03.526088" elapsed="0.000418"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.531276" level="INFO">min :: 30110.92</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:36:03.526897" elapsed="0.004436"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-08T03:36:03.526755" elapsed="0.004613"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.535894" level="INFO">max :: 33180.17</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-08T03:36:03.531583" elapsed="0.004383"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-08T03:36:03.531456" elapsed="0.004545"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.540535" level="INFO">avg :: 31983.60</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-08T03:36:03.536211" elapsed="0.004379"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-08T03:36:03.536085" elapsed="0.004539"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.545159" level="INFO">stdev :: 10706.09</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-08T03:36:03.540832" elapsed="0.004383"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-08T03:36:03.540707" elapsed="0.004542"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-08T03:36:03.526572" elapsed="0.018707"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.549243" level="INFO">${min} = 30110.92</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-08T03:36:03.545437" elapsed="0.003832"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.553718" level="INFO">${max} = 33180.17</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-08T03:36:03.549425" elapsed="0.004321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.557897" level="INFO">${average} = 31983.60</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-08T03:36:03.553905" elapsed="0.004019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.561879" level="INFO">${stdev} = 10706.09</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-08T03:36:03.558096" elapsed="0.003810"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.562430" level="INFO">${date} = 2026-06-08 03:36:03</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-08T03:36:03.562083" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.563061" level="INFO">CBench Result: 2026-06-08 03:36:03,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30110.92,33180.17,31983.60,10706.09</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-08T03:36:03.562608" elapsed="0.000510"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-08T03:36:03.564224" 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-08T03:36:03.563738" elapsed="0.000560"/>
</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-08T03:36:03.564452" elapsed="0.000461"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-08T03:36:03.563263" elapsed="0.001734"/>
</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-08T03:25:56.828147" elapsed="606.736911"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.565516" 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-08T03:36:03.565208" elapsed="0.000365"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-08T03:36:03.566772" 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-08T03:36:03.566301" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-08T03:36:03.567050" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-06-08T03:36:03.566876" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-06-08T03:36:03.566856" elapsed="0.000282"/>
</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-08T03:36:03.567281" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-08T03:36:03.567438" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-06-08T03:36:03.567600" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-08T03:36:03.567795" 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-08T03:36:03.567965" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-06-08T03:36:03.568114" 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-08T03:36:03.568261" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-06-08T03:36:03.568484" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-08T03:36:03.568344" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-06-08T03:36:03.568327" elapsed="0.000233"/>
</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-08T03:36:03.565964" elapsed="0.002647"/>
</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-08T03:25:56.825088" elapsed="606.743568"/>
</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-08T03:05:39.668246" elapsed="1823.900981"/>
</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>
