<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-07-16T00:45:06.105745" 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-07-16T00:45:06.671431" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-07-16T00:45:06.671289" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-07-16T00:45:06.671259" elapsed="0.000294"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T00:45:06.671698" elapsed="0.000513"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-16T00:45:06.672696" level="INFO">Logging into '10.30.170.77:8101' as 'karaf'.</msg>
<msg time="2026-07-16T00:45:07.475244" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-07-16T00:45:06.672382" elapsed="0.803079"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-16T00:45:07.524445" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-07-16T00:45:07.475823" elapsed="0.048817"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-16T00:45:07.527457" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-16T00:45:07.527627" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-07-16T00:45:07.525000" elapsed="0.002669"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-07-16T00:45:07.527881" elapsed="0.000324"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T00:45:07.528414" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:45:07.529349" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:45:07.528924" elapsed="0.000497"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-16T00:45:07.529563" elapsed="0.000075"/>
</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.77
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-16T00:45:06.670897" elapsed="0.858906"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-07-16T00:45:06.666750" elapsed="0.863182"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-16T00:45:07.530653" 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-07-16T00:45:07.530179" elapsed="0.000551"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-16T00:45:07.531524" 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-07-16T00:45:07.530962" elapsed="0.000655"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-16T00:45:07.532333" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-07-16T00:45:07.531830" elapsed="0.000539"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-16T00:45:07.533057" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-07-16T00:45:07.532624" elapsed="0.000488"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-16T00:45:07.533847" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-07-16T00:45:07.533309" elapsed="0.000576"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-16T00:45:07.534398" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-07-16T00:45:07.534069" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-07-16T00:45:07.534784" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-16T00:45:07.534558" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-16T00:45:07.539248" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T00:45:07.538827" elapsed="0.000449"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-16T00:45:07.540312" level="INFO">Length is 0.</msg>
<msg time="2026-07-16T00:45:07.540397" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-07-16T00:45:07.539856" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T00:45:07.540587" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-16T00:45:07.542004" level="INFO">Logging into '10.30.170.227:22' as 'jenkins'.</msg>
<msg time="2026-07-16T00:45:08.267306" 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 Thu Jul 16 00:45:07 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.227
  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-341-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-07-16T00:45:07.541456" elapsed="0.726013"/>
</kw>
<msg time="2026-07-16T00:45:08.267584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T00:45:07.541102" elapsed="0.726582"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-07-16T00:45:07.539490" elapsed="0.728345"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.275296" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-07-16T00:45:08.268105" elapsed="0.008397"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T00:45:08.276703" elapsed="0.000331"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-07-16T00:45:07.538274" elapsed="0.738828"/>
</kw>
<status status="PASS" start="2026-07-16T00:45:07.534916" elapsed="0.742225"/>
</branch>
<status status="PASS" start="2026-07-16T00:45:07.534528" elapsed="0.742647"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-07-16T00:45:08.277353" elapsed="0.000569"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-07-16T00:45:08.283283" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-07-16T00:45:08.283101" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-07-16T00:45:08.283063" elapsed="0.000333"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-07-16T00:45:08.288852" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-07-16T00:45:08.288615" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-07-16T00:45:08.288566" elapsed="0.000400"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T00:45:08.289230" elapsed="0.000613"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.290269" level="INFO">Logging into '10.30.170.77:8101' as 'karaf'.</msg>
<msg time="2026-07-16T00:45:08.492890" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-07-16T00:45:08.289995" elapsed="0.203074"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.572420" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-07-16T00:45:08.493339" elapsed="0.079215"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.610883" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-16T00:45:08.611100" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-07-16T00:45:08.572774" elapsed="0.038359"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-07-16T00:45:08.611307" elapsed="0.000276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T00:45:08.611736" elapsed="0.000219"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:45:08.612423" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:45:08.612094" elapsed="0.000390"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-16T00:45:08.612565" elapsed="0.000053"/>
</return>
<msg time="2026-07-16T00:45:08.612774" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.77
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-16T00:45:08.287890" elapsed="0.324917"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-07-16T00:45:08.612956" elapsed="0.000586"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-16T00:45:08.613595" elapsed="0.000033"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-07-16T00:45:08.282630" elapsed="0.331101"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-07-16T00:45:08.617712" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-07-16T00:45:08.617565" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-07-16T00:45:08.617534" elapsed="0.000253"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T00:45:08.617923" elapsed="0.000810"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.619170" level="INFO">Logging into '10.30.170.77:8101' as 'karaf'.</msg>
<msg time="2026-07-16T00:45:08.795512" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-07-16T00:45:08.618897" elapsed="0.176799"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.818621" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-07-16T00:45:08.795949" elapsed="0.022764"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.820626" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-16T00:45:08.820738" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-07-16T00:45:08.818910" elapsed="0.001856"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-07-16T00:45:08.820904" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T00:45:08.821242" elapsed="0.000195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:45:08.821914" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:45:08.821600" elapsed="0.000363"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-16T00:45:08.822017" elapsed="0.000054"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.77
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-16T00:45:08.617201" elapsed="0.204990"/>
</kw>
<status status="PASS" start="2026-07-16T00:45:06.664897" elapsed="2.157358"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:45:08.824666" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:45:08.823301" elapsed="0.001431"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-16T00:45:08.826164" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-07-16T00:45:08.825816" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-07-16T00:45:08.826555" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-16T00:45:08.826292" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-07-16T00:45:08.829619" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-16T00:45:08.829339" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-07-16T00:45:08.829319" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.830041" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-07-16T00:45:08.829835" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:45:08.830814" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.77 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.227" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:45:08.830333" elapsed="0.000544"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.831528" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T00:45:08.831019" elapsed="0.000538"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-16T00:45:08.832482" level="INFO">Length is 0.</msg>
<msg time="2026-07-16T00:45:08.832593" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-07-16T00:45:08.832149" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T00:45:08.832764" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-16T00:45:08.833986" level="INFO">Logging into '10.30.170.227:22' as 'jenkins'.</msg>
<msg time="2026-07-16T00:45:09.224409" 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 Thu Jul 16 00:45:07 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.227
  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: Thu Jul 16 00:45:08 2026 from 10.30.171.119
[?2004h[jenkins@releng-63164-341-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-07-16T00:45:08.833607" elapsed="0.391040"/>
</kw>
<msg time="2026-07-16T00:45:09.224738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T00:45:08.833248" elapsed="0.391577"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-07-16T00:45:08.831767" elapsed="0.393177"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-16T00:45:09.225480" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.77 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-16T00:55:15.318222" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-16T00:55:15.319042" level="INFO">${stdout} = </msg>
<msg time="2026-07-16T00:55:15.319152" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-07-16T00:45:09.225167" elapsed="606.094044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T00:55:15.319756" elapsed="0.001245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.322432" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77: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.77. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:46:14.401 16  switches: flows:  113165 113561 114787 111371 111507 111684 113035 110411 110223 108447 109581 109523 107437 108706 109438 108239  total = 29.518583 per ms 
00:47:14.502 16  switches: flows:  121202 123056 122456 120254 120970 119290 119171 121257 117294 116231 117927 117317 115803 116462 115067 116985  total = 31.626197 per ms 
00:48:14.602 16  switches: flows:  124094 125813 124394 124059 123035 123953 124217 123251 121421 118992 119913 120973 117956 118552 120277 119247  total = 32.448275 per ms 
00:49:14.703 16  switches: flows:  123804 127571 125352 123967 123962 125795 123006 125272 121510 120881 121968 123538 119790 121023 121268 120895  total = 32.771937 per ms 
00:50:14.804 16  switches: flows:  126067 128630 127627 126511 126059 124161 122335 125976 123586 121856 122528 122537 120001 121040 120970 120970  total = 32.959176 per ms 
00:51:14.905 16  switches: flows:  126489 127869 128845 124531 124164 124723 123100 124456 122723 121177 122395 122061 119953 121215 120279 119870  total = 32.842648 per ms 
00:52:15.006 16  switches: flows:  124795 129462 128411 125604 126450 127007 123747 126225 124579 122393 123091 122193 119807 123893 122712 121750  total = 33.146579 per ms 
00:53:15.107 16  switches: flows:  123167 129353 128028 124933 125390 126500 124051 126333 124051 120800 123230 122629 121001 122537 120590 120588  total = 32.997899 per ms 
00:54:15.208 16  switches: flows:  123757 128732 127150 125522 124931 126887 123440 125699 122568 119714 122727 122564 120201 121854 119032 120220  total = 32.861745 per ms 
00:55:15.309 16  switches: flows:  126966 132844 128916 126978 126142 127610 125561 128329 125296 124138 124909 123468 122213 122849 122185 121127  total = 33.436315 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31626.20/33436.32/32787.86/10939.94 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.321658" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-16T00:55:15.323478" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-07-16T00:55:15.323128" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-07-16T00:55:15.323053" elapsed="0.000686"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-16T00:55:15.324091" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-07-16T00:55:15.323995" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-07-16T00:55:15.323951" elapsed="0.000307"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-16T00:55:15.324335" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T00:55:15.328618" elapsed="0.000531"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T00:55:15.329303" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T00:55:15.329721" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-16T00:55:15.325183" elapsed="0.004699"/>
</kw>
<msg time="2026-07-16T00:55:15.330011" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-07-16T00:45:08.826988" elapsed="606.503050"/>
</kw>
<status status="PASS" start="2026-07-16T00:45:08.826643" elapsed="606.503451"/>
</branch>
<status status="PASS" start="2026-07-16T00:45:08.826268" elapsed="606.503852"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.330613" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77: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.77. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:46:14.401 16  switches: flows:  113165 113561 114787 111371 111507 111684 113035 110411 110223 108447 109581 109523 107437 108706 109438 108239  total = 29.518583 per ms 
00:47:14.502 16  switches: flows:  121202 123056 122456 120254 120970 119290 119171 121257 117294 116231 117927 117317 115803 116462 115067 116985  total = 31.626197 per ms 
00:48:14.602 16  switches: flows:  124094 125813 124394 124059 123035 123953 124217 123251 121421 118992 119913 120973 117956 118552 120277 119247  total = 32.448275 per ms 
00:49:14.703 16  switches: flows:  123804 127571 125352 123967 123962 125795 123006 125272 121510 120881 121968 123538 119790 121023 121268 120895  total = 32.771937 per ms 
00:50:14.804 16  switches: flows:  126067 128630 127627 126511 126059 124161 122335 125976 123586 121856 122528 122537 120001 121040 120970 120970  total = 32.959176 per ms 
00:51:14.905 16  switches: flows:  126489 127869 128845 124531 124164 124723 123100 124456 122723 121177 122395 122061 119953 121215 120279 119870  total = 32.842648 per ms 
00:52:15.006 16  switches: flows:  124795 129462 128411 125604 126450 127007 123747 126225 124579 122393 123091 122193 119807 123893 122712 121750  total = 33.146579 per ms 
00:53:15.107 16  switches: flows:  123167 129353 128028 124933 125390 126500 124051 126333 124051 120800 123230 122629 121001 122537 120590 120588  total = 32.997899 per ms 
00:54:15.208 16  switches: flows:  123757 128732 127150 125522 124931 126887 123440 125699 122568 119714 122727 122564 120201 121854 119032 120220  total = 32.861745 per ms 
00:55:15.309 16  switches: flows:  126966 132844 128916 126978 126142 127610 125561 128329 125296 124138 124909 123468 122213 122849 122185 121127  total = 33.436315 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31626.20/33436.32/32787.86/10939.94 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.330302" elapsed="0.000387"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-07-16T00:55:15.330864" elapsed="0.000425"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-16T00:55:15.331698" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-16T00:55:15.331791" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 31626.20/33436.32/32787.86/10939.94 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-07-16T00:55:15.331451" elapsed="0.000365"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T00:55:15.332316" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 31626.20/33436.32/32787.86/10939.94 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T00:55:15.331973" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.334927" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.332518" elapsed="0.002472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.337727" level="INFO">31626.20/33436.32/32787.86/10939.94</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.335142" elapsed="0.002644"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T00:55:15.340182" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T00:55:15.337938" elapsed="0.002272"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T00:55:15.342678" level="INFO">@{result_value_list} = [ 31626.20 | 33436.32 | 32787.86 | 10939.94 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T00:55:15.340399" elapsed="0.002308"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.343183" level="INFO">Length is 4.</msg>
<msg time="2026-07-16T00:55:15.343274" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-07-16T00:55:15.342872" elapsed="0.000426"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.348042" level="INFO">min :: 31626.20</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.343727" elapsed="0.004374"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-16T00:55:15.343592" elapsed="0.004545"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.352725" level="INFO">max :: 33436.32</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.348362" elapsed="0.004422"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-16T00:55:15.348231" elapsed="0.004589"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.357441" level="INFO">avg :: 32787.86</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.353042" elapsed="0.004472"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-16T00:55:15.352909" elapsed="0.004641"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.362178" level="INFO">stdev :: 10939.94</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.357772" elapsed="0.004478"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-16T00:55:15.357643" elapsed="0.004651"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-16T00:55:15.343367" elapsed="0.018968"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.366550" level="INFO">${min} = 31626.20</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T00:55:15.362541" elapsed="0.004043"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.371035" level="INFO">${max} = 33436.32</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T00:55:15.366781" elapsed="0.004282"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.375073" level="INFO">${average} = 32787.86</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T00:55:15.371218" elapsed="0.003882"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.379025" level="INFO">${stdev} = 10939.94</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T00:55:15.375257" elapsed="0.003795"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.379596" level="INFO">${date} = 2026-07-16 00:55:15</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-16T00:55:15.379214" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.380182" level="INFO">CBench Result: 2026-07-16 00:55:15,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,31626.20,33436.32,32787.86,10939.94</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.379773" elapsed="0.000465"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-16T00:55:15.381324" 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-07-16T00:55:15.380913" elapsed="0.000479"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-07-16T00:55:15.381563" elapsed="0.000465"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-16T00:55:15.380383" elapsed="0.001709"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-07-16T00:45:08.825163" elapsed="606.557001"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.382675" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-07-16T00:55:15.382321" elapsed="0.000414"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-07-16T00:55:15.383252" elapsed="0.000286"/>
</kw>
<status status="PASS" start="2026-07-16T00:55:15.382951" elapsed="0.000659"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-07-16T00:45:08.822431" elapsed="606.561217"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.385327" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.384922" elapsed="0.000466"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.387213" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-07-16T00:55:15.386869" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-07-16T00:55:15.387830" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-07-16T00:55:15.387384" elapsed="0.000509"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-07-16T00:55:15.390886" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-16T00:55:15.390631" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-07-16T00:55:15.390599" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-16T00:55:15.391325" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-07-16T00:55:15.391105" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.392058" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.77 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.227" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T00:55:15.391632" elapsed="0.000485"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-16T00:55:15.392713" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T00:55:15.392258" elapsed="0.000482"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-16T00:55:15.393661" level="INFO">Length is 0.</msg>
<msg time="2026-07-16T00:55:15.393760" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-07-16T00:55:15.393315" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T00:55:15.393947" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-16T00:55:15.395183" level="INFO">Logging into '10.30.170.227:22' as 'jenkins'.</msg>
<msg time="2026-07-16T00:55:15.984721" 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 Thu Jul 16 00:55:15 UTC 2026

  System load:  1.06               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.227
  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: Thu Jul 16 00:45:09 2026 from 10.30.171.119
[?2004h[jenkins@releng-63164-341-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-07-16T00:55:15.394815" elapsed="0.590112"/>
</kw>
<msg time="2026-07-16T00:55:15.985058" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T00:55:15.394439" elapsed="0.590711"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-07-16T00:55:15.392942" elapsed="0.592326"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-16T00:55:15.985818" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.77 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-16T01:05:23.004602" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-16T01:05:23.005348" level="INFO">${stdout} = </msg>
<msg time="2026-07-16T01:05:23.005486" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.77:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-07-16T00:55:15.985509" elapsed="607.020092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T01:05:23.006212" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.008443" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.77: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.77. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:56:21.106 16  switches: flows:  531539 516984 519836 524850 525512 522010 530725 525977 516968 517442 515414 508235 516069 507361 511107 472197  total = 137.703767 per ms 
00:57:21.212 16  switches: flows:  521076 519007 515440 514306 514104 516553 508467 520779 511527 514248 527217 517956 522637 513047 526319 515870  total = 137.736243 per ms 
00:58:21.401 16  switches: flows:  497527 491363 507650 514240 494613 502780 493245 497806 501076 496350 487722 488430 495463 484638 507410 506987  total = 132.370886 per ms 
00:59:21.504 16  switches: flows:  607264 603181 608004 610612 605310 608776 599851 596860 602953 604177 596415 594804 593682 597448 605536 610438  total = 160.483381 per ms 
01:00:21.607 16  switches: flows:  616854 610904 611032 618897 612324 618763 614388 615791 613777 618509 611903 613730 609598 616108 613306 613142  total = 163.540545 per ms 
01:01:21.708 16  switches: flows:  633900 625482 629041 625910 621519 630676 628536 623694 623453 627940 625678 624240 619470 628657 625086 629747  total = 166.768536 per ms 
01:02:21.810 16  switches: flows:  632226 618681 616112 619167 616934 633898 618944 622487 628079 611650 626336 624509 627400 614747 619104 615641  total = 165.486483 per ms 
01:03:21.912 16  switches: flows:  626342 620581 626271 621761 619202 624631 620686 620968 622244 619992 621976 622153 620274 624164 622743 622653  total = 165.664563 per ms 
01:04:22.893 16  switches: flows:  595961 541251 585041 594137 583486 592938 589445 567084 553550 595541 579226 557617 583240 572194 577310 594415  total = 151.893166 per ms 
01:05:22.995 16  switches: flows:  650796 637008 649051 639333 640027 640475 641087 643544 644570 640226 637604 600109 644855 639465 643619 644817  total = 170.322770 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 132370.89/170322.77/157140.73/53925.59 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.007637" elapsed="0.001167"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-16T01:05:23.009366" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-07-16T01:05:23.009028" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-07-16T01:05:23.008971" elapsed="0.000690"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-16T01:05:23.009949" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-07-16T01:05:23.009836" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-07-16T01:05:23.009789" elapsed="0.000330"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-16T01:05:23.010196" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T01:05:23.014580" elapsed="0.000349"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T01:05:23.015092" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T01:05:23.015517" elapsed="0.000136"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-16T01:05:23.010991" elapsed="0.004730"/>
</kw>
<msg time="2026-07-16T01:05:23.015879" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.77:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-07-16T00:55:15.388275" elapsed="607.627640"/>
</kw>
<status status="PASS" start="2026-07-16T00:55:15.387920" elapsed="607.628068"/>
</branch>
<status status="PASS" start="2026-07-16T00:55:15.387361" elapsed="607.628657"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.016593" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.77: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.77. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:56:21.106 16  switches: flows:  531539 516984 519836 524850 525512 522010 530725 525977 516968 517442 515414 508235 516069 507361 511107 472197  total = 137.703767 per ms 
00:57:21.212 16  switches: flows:  521076 519007 515440 514306 514104 516553 508467 520779 511527 514248 527217 517956 522637 513047 526319 515870  total = 137.736243 per ms 
00:58:21.401 16  switches: flows:  497527 491363 507650 514240 494613 502780 493245 497806 501076 496350 487722 488430 495463 484638 507410 506987  total = 132.370886 per ms 
00:59:21.504 16  switches: flows:  607264 603181 608004 610612 605310 608776 599851 596860 602953 604177 596415 594804 593682 597448 605536 610438  total = 160.483381 per ms 
01:00:21.607 16  switches: flows:  616854 610904 611032 618897 612324 618763 614388 615791 613777 618509 611903 613730 609598 616108 613306 613142  total = 163.540545 per ms 
01:01:21.708 16  switches: flows:  633900 625482 629041 625910 621519 630676 628536 623694 623453 627940 625678 624240 619470 628657 625086 629747  total = 166.768536 per ms 
01:02:21.810 16  switches: flows:  632226 618681 616112 619167 616934 633898 618944 622487 628079 611650 626336 624509 627400 614747 619104 615641  total = 165.486483 per ms 
01:03:21.912 16  switches: flows:  626342 620581 626271 621761 619202 624631 620686 620968 622244 619992 621976 622153 620274 624164 622743 622653  total = 165.664563 per ms 
01:04:22.893 16  switches: flows:  595961 541251 585041 594137 583486 592938 589445 567084 553550 595541 579226 557617 583240 572194 577310 594415  total = 151.893166 per ms 
01:05:22.995 16  switches: flows:  650796 637008 649051 639333 640027 640475 641087 643544 644570 640226 637604 600109 644855 639465 643619 644817  total = 170.322770 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 132370.89/170322.77/157140.73/53925.59 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.016200" elapsed="0.000473"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-07-16T01:05:23.016824" elapsed="0.000398"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-16T01:05:23.017641" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-16T01:05:23.017740" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 132370.89/170322.77/157140.73/53925.59 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-07-16T01:05:23.017388" elapsed="0.000378"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T01:05:23.018210" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 132370.89/170322.77/157140.73/53925.59 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T01:05:23.017944" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.020652" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.018390" elapsed="0.002321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.023171" level="INFO">132370.89/170322.77/157140.73/53925.59</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.020859" elapsed="0.002371"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T01:05:23.026065" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T01:05:23.023407" elapsed="0.002686"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T01:05:23.028586" level="INFO">@{result_value_list} = [ 132370.89 | 170322.77 | 157140.73 | 53925.59 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T01:05:23.026286" elapsed="0.002330"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.029114" level="INFO">Length is 4.</msg>
<msg time="2026-07-16T01:05:23.029206" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-07-16T01:05:23.028775" elapsed="0.000455"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.034234" level="INFO">min :: 132370.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.029671" elapsed="0.004623"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-16T01:05:23.029539" elapsed="0.004791"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.038962" level="INFO">max :: 170322.77</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.034569" elapsed="0.004452"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-16T01:05:23.034423" elapsed="0.004633"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.044056" level="INFO">avg :: 157140.73</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.039275" elapsed="0.004842"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-16T01:05:23.039145" elapsed="0.005007"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.049904" level="INFO">stdev :: 53925.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-07-16T01:05:23.044377" elapsed="0.005588"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-16T01:05:23.044241" elapsed="0.005760"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-16T01:05:23.029298" elapsed="0.020735"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.054012" level="INFO">${min} = 132370.89</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:05:23.050192" elapsed="0.003849"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.058596" level="INFO">${max} = 170322.77</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:05:23.054196" elapsed="0.004428"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.062566" level="INFO">${average} = 157140.73</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:05:23.058780" elapsed="0.003814"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.066563" level="INFO">${stdev} = 53925.59</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:05:23.062748" elapsed="0.003844"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.067150" level="INFO">${date} = 2026-07-16 01:05:23</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-16T01:05:23.066756" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.067760" level="INFO">CBench Result: 2026-07-16 01:05:23,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,132370.89,170322.77,157140.73,53925.59</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.067329" elapsed="0.000488"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-16T01:05:23.068917" 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-07-16T01:05:23.068466" elapsed="0.000520"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-07-16T01:05:23.069139" elapsed="0.000480"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-16T01:05:23.067986" elapsed="0.001700"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-07-16T00:55:15.386240" elapsed="607.683506"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.070231" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-07-16T01:05:23.069910" elapsed="0.000380"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-07-16T01:05:23.070876" elapsed="0.000273"/>
</kw>
<status status="PASS" start="2026-07-16T01:05:23.070513" elapsed="0.000710"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-07-16T00:55:15.384236" elapsed="607.687026"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.072896" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.072470" elapsed="0.000488"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.074709" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-07-16T01:05:23.074125" elapsed="0.000636"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-07-16T01:05:23.075125" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-16T01:05:23.074896" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-07-16T01:05:23.078383" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-16T01:05:23.078129" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-07-16T01:05:23.078108" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-16T01:05:23.078848" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-07-16T01:05:23.078653" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.079641" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.77 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.227" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:05:23.079132" elapsed="0.000574"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-16T01:05:23.080267" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T01:05:23.079862" elapsed="0.000432"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-16T01:05:23.081216" level="INFO">Length is 0.</msg>
<msg time="2026-07-16T01:05:23.081308" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-07-16T01:05:23.080903" 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-07-16T01:05:23.081477" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-16T01:05:23.082816" level="INFO">Logging into '10.30.170.227:22' as 'jenkins'.</msg>
<msg time="2026-07-16T01:05:23.736547" 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 Thu Jul 16 01:05:23 UTC 2026

  System load:  0.29               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.227
  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: Thu Jul 16 00:55:15 2026 from 10.30.171.119
[?2004h[jenkins@releng-63164-341-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-07-16T01:05:23.082407" elapsed="0.654339"/>
</kw>
<msg time="2026-07-16T01:05:23.736847" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T01:05:23.082027" elapsed="0.654903"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-07-16T01:05:23.080515" elapsed="0.656531"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-16T01:05:23.737602" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.77 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-16T01:15:29.778319" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-16T01:15:29.778809" level="INFO">${stdout} = </msg>
<msg time="2026-07-16T01:15:29.778880" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-07-16T01:05:23.737275" elapsed="606.041645"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T01:15:29.779290" elapsed="0.000634"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.780684" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77: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.77. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:28.858 16  switches: flows:  121381 122131 121607 121257 120973 122433 122059 123034 119517 120403 119480 119801 120352 120789 118568 117749  total = 32.192233 per ms 
01:07:28.960 16  switches: flows:  124722 125969 125668 124977 124125 125259 125161 127503 124357 124064 124537 123751 125346 126477 121343 120746  total = 33.177980 per ms 
01:08:29.061 16  switches: flows:  115407 116129 116087 116989 113204 115104 115308 116695 114398 114009 113248 112683 114348 114625 111550 113893  total = 30.510272 per ms 
01:09:29.162 16  switches: flows:  123607 123868 123761 124958 121170 120189 120988 121922 120777 119828 121461 119289 121464 122555 118359 121560  total = 32.375190 per ms 
01:10:29.264 16  switches: flows:  116662 116749 116436 116850 115019 114872 114063 114888 115204 114045 113416 111346 115392 116481 113130 116081  total = 30.626086 per ms 
01:11:29.366 16  switches: flows:  118375 120979 119622 119883 116524 117346 116189 117362 116590 116435 119050 113693 113981 117404 116414 117145  total = 31.230995 per ms 
01:12:29.467 16  switches: flows:  120478 120041 121877 119671 116883 118232 119325 120584 114636 115587 117930 112568 117246 119071 118681 115025  total = 31.411455 per ms 
01:13:29.568 16  switches: flows:  106259 107829 109069 109815 107794 109099 107644 107210 105742 107140 108660 105333 106225 106154 104421 106309  total = 28.530738 per ms 
01:14:29.669 16  switches: flows:  123641 124837 124314 122312 122398 121653 123691 122652 120063 121179 119423 119813 122338 123457 116878 123161  total = 32.475944 per ms 
01:15:29.770 16  switches: flows:  123396 125214 126581 123228 122675 122782 124994 123087 120251 121023 120418 121674 122261 124170 117844 123266  total = 32.659873 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28530.74/33177.98/31444.28/10568.48 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.780167" 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-07-16T01:15:29.781228" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-07-16T01:15:29.781027" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-07-16T01:15:29.780990" elapsed="0.000373"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-16T01:15:29.781506" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-07-16T01:15:29.781439" elapsed="0.000121"/>
</branch>
<status status="NOT RUN" start="2026-07-16T01:15:29.781419" elapsed="0.000168"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-16T01:15:29.781625" elapsed="0.000016"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-16T01:15:29.785399" elapsed="0.000535"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-07-16T01:15:29.786160" elapsed="0.000238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-16T01:15:29.786595" 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-07-16T01:15:29.782133" elapsed="0.004673"/>
</kw>
<msg time="2026-07-16T01:15:29.786981" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-07-16T01:05:23.075551" elapsed="606.711467"/>
</kw>
<status status="PASS" start="2026-07-16T01:05:23.075211" elapsed="606.711893"/>
</branch>
<status status="PASS" start="2026-07-16T01:05:23.074873" elapsed="606.712269"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.787789" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.77: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.77. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:28.858 16  switches: flows:  121381 122131 121607 121257 120973 122433 122059 123034 119517 120403 119480 119801 120352 120789 118568 117749  total = 32.192233 per ms 
01:07:28.960 16  switches: flows:  124722 125969 125668 124977 124125 125259 125161 127503 124357 124064 124537 123751 125346 126477 121343 120746  total = 33.177980 per ms 
01:08:29.061 16  switches: flows:  115407 116129 116087 116989 113204 115104 115308 116695 114398 114009 113248 112683 114348 114625 111550 113893  total = 30.510272 per ms 
01:09:29.162 16  switches: flows:  123607 123868 123761 124958 121170 120189 120988 121922 120777 119828 121461 119289 121464 122555 118359 121560  total = 32.375190 per ms 
01:10:29.264 16  switches: flows:  116662 116749 116436 116850 115019 114872 114063 114888 115204 114045 113416 111346 115392 116481 113130 116081  total = 30.626086 per ms 
01:11:29.366 16  switches: flows:  118375 120979 119622 119883 116524 117346 116189 117362 116590 116435 119050 113693 113981 117404 116414 117145  total = 31.230995 per ms 
01:12:29.467 16  switches: flows:  120478 120041 121877 119671 116883 118232 119325 120584 114636 115587 117930 112568 117246 119071 118681 115025  total = 31.411455 per ms 
01:13:29.568 16  switches: flows:  106259 107829 109069 109815 107794 109099 107644 107210 105742 107140 108660 105333 106225 106154 104421 106309  total = 28.530738 per ms 
01:14:29.669 16  switches: flows:  123641 124837 124314 122312 122398 121653 123691 122652 120063 121179 119423 119813 122338 123457 116878 123161  total = 32.475944 per ms 
01:15:29.770 16  switches: flows:  123396 125214 126581 123228 122675 122782 124994 123087 120251 121023 120418 121674 122261 124170 117844 123266  total = 32.659873 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28530.74/33177.98/31444.28/10568.48 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.787352" elapsed="0.000535"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-07-16T01:15:29.788083" elapsed="0.000490"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-16T01:15:29.789066" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-16T01:15:29.789187" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28530.74/33177.98/31444.28/10568.48 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-07-16T01:15:29.788784" elapsed="0.000436"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T01:15:29.789795" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28530.74/33177.98/31444.28/10568.48 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T01:15:29.789426" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.793056" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.790040" elapsed="0.003088"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.796352" level="INFO">28530.74/33177.98/31444.28/10568.48</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.793327" elapsed="0.003114"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T01:15:29.799694" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T01:15:29.796698" elapsed="0.003038"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-16T01:15:29.803000" level="INFO">@{result_value_list} = [ 28530.74 | 33177.98 | 31444.28 | 10568.48 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-07-16T01:15:29.800071" elapsed="0.002969"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.803781" level="INFO">Length is 4.</msg>
<msg time="2026-07-16T01:15:29.803918" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-07-16T01:15:29.803292" elapsed="0.000657"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.813324" level="INFO">min :: 28530.74</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.804480" elapsed="0.008964"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-16T01:15:29.804306" elapsed="0.009236"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.820906" level="INFO">max :: 33177.98</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.814011" elapsed="0.007012"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-16T01:15:29.813714" elapsed="0.007380"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.827234" level="INFO">avg :: 31444.28</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.821555" elapsed="0.005773"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-16T01:15:29.821264" elapsed="0.006121"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.832356" level="INFO">stdev :: 10568.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.827787" elapsed="0.004652"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-16T01:15:29.827581" elapsed="0.004923"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-16T01:15:29.804035" elapsed="0.028511"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.836725" level="INFO">${min} = 28530.74</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:15:29.832767" elapsed="0.004003"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.841069" level="INFO">${max} = 33177.98</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:15:29.837015" elapsed="0.004093"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.845311" level="INFO">${average} = 31444.28</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:15:29.841338" elapsed="0.004012"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.849596" level="INFO">${stdev} = 10568.48</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-07-16T01:15:29.845593" elapsed="0.004043"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.850330" level="INFO">${date} = 2026-07-16 01:15:29</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-16T01:15:29.849910" elapsed="0.000446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.851005" level="INFO">CBench Result: 2026-07-16 01:15:29,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28530.74,33177.98,31444.28,10568.48</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-16T01:15:29.850535" elapsed="0.000532"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-16T01:15:29.852319" 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-07-16T01:15:29.851760" elapsed="0.000632"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-07-16T01:15:29.852571" elapsed="0.000502"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-16T01:15:29.851238" elapsed="0.001903"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-07-16T01:05:23.073348" elapsed="606.779857"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.853709" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-07-16T01:15:29.853360" elapsed="0.000438"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-16T01:15:29.855191" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-07-16T01:15:29.854602" elapsed="0.000617"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-07-16T01:15:29.855467" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-07-16T01:15:29.855311" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-07-16T01:15:29.855285" elapsed="0.000301"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-07-16T01:15:29.855736" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-07-16T01:15:29.855924" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-07-16T01:15:29.856098" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-07-16T01:15:29.856347" 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-07-16T01:15:29.856548" elapsed="0.000025"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-07-16T01:15:29.856707" elapsed="0.000033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-07-16T01:15:29.856877" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-07-16T01:15:29.857131" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-16T01:15:29.856989" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-07-16T01:15:29.856970" elapsed="0.000241"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-07-16T01:15:29.854210" elapsed="0.003058"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-07-16T01:05:23.071847" elapsed="606.785476"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-07-16T00:45:06.107421" elapsed="1823.750602"/>
</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>
