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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-26T01:45:53.355277" elapsed="0.682471"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-26T01:45:54.084386" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-26T01:45:54.038034" elapsed="0.046435"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-26T01:45:54.086190" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-26T01:45:54.086324" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-26T01:45:54.084655" elapsed="0.001700"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-26T01:45:54.086550" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T01:45:54.086959" elapsed="0.000197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:45:54.087710" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:45:54.087332" elapsed="0.000435"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-26T01:45:54.087821" elapsed="0.000052"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.204
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-26T01:45:53.353777" elapsed="0.734219"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-26T01:45:53.350111" elapsed="0.737955"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-26T01:45:54.088650" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-26T01:45:54.088261" elapsed="0.000453"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-26T01:45:54.089128" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-26T01:45:54.088872" elapsed="0.000314"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-26T01:45:54.089801" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-26T01:45:54.089364" elapsed="0.000466"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-26T01:45:54.090385" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-26T01:45:54.090001" elapsed="0.000429"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-26T01:45:54.091027" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-26T01:45:54.090614" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-26T01:45:54.091607" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-26T01:45:54.091217" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-04-26T01:45:54.091981" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-26T01:45:54.091761" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-26T01:45:54.096699" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T01:45:54.096258" elapsed="0.000480"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-26T01:45:54.097782" level="INFO">Length is 0.</msg>
<msg time="2026-04-26T01:45:54.097872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-26T01:45:54.097316" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T01:45:54.098045" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-26T01:45:54.099508" level="INFO">Logging into '10.30.171.254:22' as 'jenkins'.</msg>
<msg time="2026-04-26T01:45:54.791372" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Apr 26 01:45:54 UTC 2026

  System load:  0.05               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.254
  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-206-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-26T01:45:54.098983" elapsed="0.692556"/>
</kw>
<msg time="2026-04-26T01:45:54.791636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T01:45:54.098573" elapsed="0.693153"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-26T01:45:54.096951" elapsed="0.694892"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-04-26T01:45:54.799354" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-04-26T01:45:54.792046" elapsed="0.009034"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T01:45:54.801507" elapsed="0.000575"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-04-26T01:45:54.095709" elapsed="0.706511"/>
</kw>
<status status="PASS" start="2026-04-26T01:45:54.092266" elapsed="0.710070"/>
</branch>
<status status="PASS" start="2026-04-26T01:45:54.091734" elapsed="0.710669"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-26T01:45:54.802736" elapsed="0.001081"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-26T01:45:54.812572" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-26T01:45:54.812449" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-26T01:45:54.812424" elapsed="0.000227"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-26T01:45:54.816256" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-26T01:45:54.816126" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-26T01:45:54.816105" elapsed="0.000225"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T01:45:54.816463" elapsed="0.000447"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-26T01:45:54.817377" level="INFO">Logging into '10.30.170.204:8101' as 'karaf'.</msg>
<msg time="2026-04-26T01:45:54.978437" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-26T01:45:54.817060" elapsed="0.161510"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.074517" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-26T01:45:54.978782" elapsed="0.095809"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.080037" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-26T01:45:55.080222" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-26T01:45:55.074753" elapsed="0.005515"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-26T01:45:55.080411" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T01:45:55.080775" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:45:55.081479" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:45:55.081125" elapsed="0.000409"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-26T01:45:55.081584" elapsed="0.000057"/>
</return>
<msg time="2026-04-26T01:45:55.081794" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.204
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-26T01:45:54.815766" elapsed="0.266059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-26T01:45:55.081974" elapsed="0.000570"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-26T01:45:55.082596" elapsed="0.000030"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-04-26T01:45:54.812122" elapsed="0.270603"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-26T01:45:55.086545" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-26T01:45:55.086411" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-26T01:45:55.086385" elapsed="0.000233"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T01:45:55.086749" elapsed="0.000485"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.087672" level="INFO">Logging into '10.30.170.204:8101' as 'karaf'.</msg>
<msg time="2026-04-26T01:45:55.245939" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-26T01:45:55.087409" elapsed="0.158630"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.271616" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-26T01:45:55.246216" elapsed="0.025459"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.273465" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-26T01:45:55.273561" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-26T01:45:55.271822" elapsed="0.001768"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-26T01:45:55.273724" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T01:45:55.274061" elapsed="0.000200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:45:55.274680" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:45:55.274402" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-26T01:45:55.274777" elapsed="0.000068"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.204
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-26T01:45:55.086050" elapsed="0.188904"/>
</kw>
<status status="PASS" start="2026-04-26T01:45:53.348184" elapsed="1.926830"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:45:55.277886" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:45:55.275937" elapsed="0.002024"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-26T01:45:55.279507" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-26T01:45:55.279127" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-04-26T01:45:55.279862" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-26T01:45:55.279631" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-26T01:45:55.282987" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-26T01:45:55.282724" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-26T01:45:55.282705" elapsed="0.000365"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.283433" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-26T01:45:55.283205" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:45:55.284147" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.254" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:45:55.283723" elapsed="0.000489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.284863" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T01:45:55.284370" elapsed="0.000519"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-26T01:45:55.285811" level="INFO">Length is 0.</msg>
<msg time="2026-04-26T01:45:55.285902" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-26T01:45:55.285489" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T01:45:55.286068" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.287326" level="INFO">Logging into '10.30.171.254:22' as 'jenkins'.</msg>
<msg time="2026-04-26T01:45:55.608446" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Apr 26 01:45:54 UTC 2026

  System load:  0.05               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.254
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Apr 26 01:45:54 2026 from 10.30.170.68
[?2004h[jenkins@releng-63164-206-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-26T01:45:55.286950" elapsed="0.321722"/>
</kw>
<msg time="2026-04-26T01:45:55.608769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T01:45:55.286575" elapsed="0.322298"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-26T01:45:55.285091" elapsed="0.323923"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-26T01:45:55.610013" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-26T01:56:01.727907" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-26T01:56:01.728515" level="INFO">${stdout} = </msg>
<msg time="2026-04-26T01:56:01.728632" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-26T01:45:55.609290" elapsed="606.119405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T01:56:01.729146" elapsed="0.000847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.731211" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204: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.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:47:00.807 16  switches: flows:  108037 106282 105933 106070 103318 104949 102090 101829 103216 99493 101282 102091 101894 104044 101798 101934  total = 27.571000 per ms 
01:48:00.907 16  switches: flows:  98421 96574 96894 97479 95850 96872 96762 95419 95223 93243 92551 92207 94229 93239 93274 94025  total = 25.328723 per ms 
01:49:01.007 16  switches: flows:  123632 124419 122709 125201 120897 121690 121764 121921 119354 116514 118038 116855 119352 117975 119284 119667  total = 32.100951 per ms 
01:50:01.108 16  switches: flows:  122888 125113 122959 122538 124391 121868 124342 123613 122667 119399 117318 119720 116754 119999 118810 117456  total = 32.276693 per ms 
01:51:01.208 16  switches: flows:  121408 123081 122943 120066 122942 122678 121084 121458 119240 116130 117202 116110 116064 118343 116592 117800  total = 31.832513 per ms 
01:52:01.308 16  switches: flows:  127370 129084 127016 125967 127837 125460 125220 124885 124528 121072 121616 121516 122381 123299 123087 122888  total = 33.165083 per ms 
01:53:01.408 16  switches: flows:  127050 130098 127144 125845 126442 124779 123604 122976 125788 120975 122015 121902 121514 123145 123283 122827  total = 33.101178 per ms 
01:54:01.508 16  switches: flows:  119311 119285 117108 117472 116287 117387 116359 115438 116120 113198 113367 112484 113902 113454 113402 113165  total = 30.744344 per ms 
01:55:01.609 16  switches: flows:  126474 128477 125153 127977 124898 126483 125686 122939 122912 121995 123725 119725 124232 122284 123665 122030  total = 33.089007 per ms 
01:56:01.709 16  switches: flows:  123669 123362 122624 123397 123311 124266 122032 121073 118836 120019 120568 117313 119791 117044 119164 119453  total = 32.211594 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25328.72/33165.08/31538.90/10764.07 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.730410" elapsed="0.001147"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-26T01:56:01.732079" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-26T01:56:01.731762" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-26T01:56:01.731701" elapsed="0.000639"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-26T01:56:01.732572" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-26T01:56:01.732483" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-04-26T01:56:01.732444" elapsed="0.000283"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-26T01:56:01.732807" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T01:56:01.739072" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T01:56:01.739899" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T01:56:01.740198" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-26T01:56:01.733572" elapsed="0.006795"/>
</kw>
<msg time="2026-04-26T01:56:01.740494" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-26T01:45:55.280311" elapsed="606.460209"/>
</kw>
<status status="PASS" start="2026-04-26T01:45:55.279950" elapsed="606.460619"/>
</branch>
<status status="PASS" start="2026-04-26T01:45:55.279606" elapsed="606.460985"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.741019" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204: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.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:47:00.807 16  switches: flows:  108037 106282 105933 106070 103318 104949 102090 101829 103216 99493 101282 102091 101894 104044 101798 101934  total = 27.571000 per ms 
01:48:00.907 16  switches: flows:  98421 96574 96894 97479 95850 96872 96762 95419 95223 93243 92551 92207 94229 93239 93274 94025  total = 25.328723 per ms 
01:49:01.007 16  switches: flows:  123632 124419 122709 125201 120897 121690 121764 121921 119354 116514 118038 116855 119352 117975 119284 119667  total = 32.100951 per ms 
01:50:01.108 16  switches: flows:  122888 125113 122959 122538 124391 121868 124342 123613 122667 119399 117318 119720 116754 119999 118810 117456  total = 32.276693 per ms 
01:51:01.208 16  switches: flows:  121408 123081 122943 120066 122942 122678 121084 121458 119240 116130 117202 116110 116064 118343 116592 117800  total = 31.832513 per ms 
01:52:01.308 16  switches: flows:  127370 129084 127016 125967 127837 125460 125220 124885 124528 121072 121616 121516 122381 123299 123087 122888  total = 33.165083 per ms 
01:53:01.408 16  switches: flows:  127050 130098 127144 125845 126442 124779 123604 122976 125788 120975 122015 121902 121514 123145 123283 122827  total = 33.101178 per ms 
01:54:01.508 16  switches: flows:  119311 119285 117108 117472 116287 117387 116359 115438 116120 113198 113367 112484 113902 113454 113402 113165  total = 30.744344 per ms 
01:55:01.609 16  switches: flows:  126474 128477 125153 127977 124898 126483 125686 122939 122912 121995 123725 119725 124232 122284 123665 122030  total = 33.089007 per ms 
01:56:01.709 16  switches: flows:  123669 123362 122624 123397 123311 124266 122032 121073 118836 120019 120568 117313 119791 117044 119164 119453  total = 32.211594 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25328.72/33165.08/31538.90/10764.07 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.740731" elapsed="0.000361"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-26T01:56:01.741255" elapsed="0.000365"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-26T01:56:01.742005" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-26T01:56:01.742096" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25328.72/33165.08/31538.90/10764.07 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-04-26T01:56:01.741780" elapsed="0.000341"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T01:56:01.742546" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25328.72/33165.08/31538.90/10764.07 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T01:56:01.742290" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.744966" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.742723" elapsed="0.002298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.747407" level="INFO">25328.72/33165.08/31538.90/10764.07</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.745166" elapsed="0.002303"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T01:56:01.749946" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T01:56:01.747619" elapsed="0.002356"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T01:56:01.752441" level="INFO">@{result_value_list} = [ 25328.72 | 33165.08 | 31538.90 | 10764.07 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T01:56:01.750170" elapsed="0.002299"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.752935" level="INFO">Length is 4.</msg>
<msg time="2026-04-26T01:56:01.753024" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-26T01:56:01.752630" elapsed="0.000418"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.757873" level="INFO">min :: 25328.72</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.753491" elapsed="0.004439"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-26T01:56:01.753342" elapsed="0.004623"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.762592" level="INFO">max :: 33165.08</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.758186" elapsed="0.004464"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-26T01:56:01.758058" elapsed="0.004628"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.767308" level="INFO">avg :: 31538.90</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.762929" elapsed="0.004443"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-26T01:56:01.762776" elapsed="0.004631"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.773935" level="INFO">stdev :: 10764.07</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.767653" elapsed="0.006361"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-26T01:56:01.767499" elapsed="0.006565"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-26T01:56:01.753115" elapsed="0.020996"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.778457" level="INFO">${min} = 25328.72</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T01:56:01.774355" elapsed="0.004128"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.782490" level="INFO">${max} = 33165.08</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T01:56:01.778638" elapsed="0.003880"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.786558" level="INFO">${average} = 31538.90</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T01:56:01.782672" elapsed="0.003912"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.790571" level="INFO">${stdev} = 10764.07</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T01:56:01.786743" elapsed="0.003859"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.791142" level="INFO">${date} = 2026-04-26 01:56:01</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-26T01:56:01.790770" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.791745" level="INFO">CBench Result: 2026-04-26 01:56:01,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25328.72,33165.08,31538.90,10764.07</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.791333" elapsed="0.000468"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-26T01:56:01.792840" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-26T01:56:01.792439" elapsed="0.000467"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-26T01:56:01.793057" elapsed="0.000467"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-26T01:56:01.791948" elapsed="0.001640"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-04-26T01:45:55.278455" elapsed="606.515198"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.794117" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-26T01:56:01.793803" elapsed="0.000370"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-04-26T01:56:01.794695" elapsed="0.000278"/>
</kw>
<status status="PASS" start="2026-04-26T01:56:01.794398" elapsed="0.000645"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-04-26T01:45:55.275176" elapsed="606.519905"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.796375" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.795982" elapsed="0.000449"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.797688" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-26T01:56:01.797333" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-04-26T01:56:01.798064" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-26T01:56:01.797842" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-26T01:56:01.801229" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-26T01:56:01.800983" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-26T01:56:01.800964" elapsed="0.000363"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-26T01:56:01.801645" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-26T01:56:01.801458" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.802354" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.204 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.254" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T01:56:01.801923" elapsed="0.000488"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-26T01:56:01.802964" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T01:56:01.802549" elapsed="0.000441"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-26T01:56:01.803878" level="INFO">Length is 0.</msg>
<msg time="2026-04-26T01:56:01.803969" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-26T01:56:01.803579" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T01:56:01.804133" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-26T01:56:01.805358" level="INFO">Logging into '10.30.171.254:22' as 'jenkins'.</msg>
<msg time="2026-04-26T01:56:02.393263" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Apr 26 01:56:01 UTC 2026

  System load:  1.01               Processes:             104
  Usage of /:   19.6% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.254
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Apr 26 01:45:55 2026 from 10.30.170.68
[?2004h[jenkins@releng-63164-206-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-26T01:56:01.804963" elapsed="0.588516"/>
</kw>
<msg time="2026-04-26T01:56:02.393576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T01:56:01.804623" elapsed="0.589056"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-26T01:56:01.803192" elapsed="0.590612"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-26T01:56:02.394411" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.204 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-26T02:06:08.446681" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-26T02:06:08.447181" level="INFO">${stdout} = </msg>
<msg time="2026-04-26T02:06:08.447331" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-26T01:56:02.394053" elapsed="606.053337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T02:06:08.447829" elapsed="0.000707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.449664" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.204: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.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:57:07.511 16  switches: flows:  573550 569200 572118 588213 573001 572569 572294 570784 560571 563522 567579 571875 569348 563073 557298 559818  total = 151.746883 per ms 
01:58:07.613 16  switches: flows:  627360 618020 620608 619331 622337 626268 623464 624759 624213 614615 619412 623070 621323 625956 622737 618481  total = 165.587939 per ms 
01:59:07.714 16  switches: flows:  606875 610912 615307 612339 616037 617801 615595 620280 614258 617823 612677 615889 607022 608423 616207 614937  total = 163.432119 per ms 
02:00:07.815 16  switches: flows:  611908 608475 614686 616734 614779 611899 608168 613299 609291 618350 608092 608653 612132 611900 615614 606473  total = 162.899205 per ms 
02:01:07.918 16  switches: flows:  540552 539654 532526 546064 536840 539352 535560 542996 529562 534349 542814 544622 538150 542973 538233 523749  total = 143.224191 per ms 
02:02:08.023 16  switches: flows:  504335 503969 508587 509204 508425 501322 488009 492775 506985 511507 504082 504924 504896 506287 508254 502488  total = 134.200188 per ms 
02:03:08.125 16  switches: flows:  587536 581561 586309 584229 588887 582865 586203 590630 585994 575007 575575 578049 586549 589004 584714 588321  total = 155.594324 per ms 
02:04:08.228 16  switches: flows:  604756 598292 601445 603183 601933 603563 603295 603574 605914 602905 599304 598456 599064 600829 606699 603645  total = 160.342487 per ms 
02:05:08.329 16  switches: flows:  562833 565959 557332 560682 557879 554677 567133 566557 555874 565277 559262 558907 561511 556744 560883 555598  total = 149.201120 per ms 
02:06:08.430 16  switches: flows:  579398 583129 576038 578856 580947 588707 587029 579218 582800 576171 575182 584263 584434 581819 579475 577110  total = 154.648844 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 134200.19/165587.94/154347.82/52386.36 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.448911" elapsed="0.001049"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-26T02:06:08.450500" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-26T02:06:08.450167" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-26T02:06:08.450118" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-26T02:06:08.450918" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-26T02:06:08.450836" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-26T02:06:08.450800" elapsed="0.000257"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-26T02:06:08.451127" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T02:06:08.456722" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T02:06:08.457799" elapsed="0.000397"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T02:06:08.458409" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-26T02:06:08.451857" elapsed="0.006709"/>
</kw>
<msg time="2026-04-26T02:06:08.458693" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-26T01:56:01.798598" elapsed="606.660123"/>
</kw>
<status status="PASS" start="2026-04-26T01:56:01.798150" elapsed="606.660620"/>
</branch>
<status status="PASS" start="2026-04-26T01:56:01.797821" elapsed="606.660972"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.459223" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.204: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.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:57:07.511 16  switches: flows:  573550 569200 572118 588213 573001 572569 572294 570784 560571 563522 567579 571875 569348 563073 557298 559818  total = 151.746883 per ms 
01:58:07.613 16  switches: flows:  627360 618020 620608 619331 622337 626268 623464 624759 624213 614615 619412 623070 621323 625956 622737 618481  total = 165.587939 per ms 
01:59:07.714 16  switches: flows:  606875 610912 615307 612339 616037 617801 615595 620280 614258 617823 612677 615889 607022 608423 616207 614937  total = 163.432119 per ms 
02:00:07.815 16  switches: flows:  611908 608475 614686 616734 614779 611899 608168 613299 609291 618350 608092 608653 612132 611900 615614 606473  total = 162.899205 per ms 
02:01:07.918 16  switches: flows:  540552 539654 532526 546064 536840 539352 535560 542996 529562 534349 542814 544622 538150 542973 538233 523749  total = 143.224191 per ms 
02:02:08.023 16  switches: flows:  504335 503969 508587 509204 508425 501322 488009 492775 506985 511507 504082 504924 504896 506287 508254 502488  total = 134.200188 per ms 
02:03:08.125 16  switches: flows:  587536 581561 586309 584229 588887 582865 586203 590630 585994 575007 575575 578049 586549 589004 584714 588321  total = 155.594324 per ms 
02:04:08.228 16  switches: flows:  604756 598292 601445 603183 601933 603563 603295 603574 605914 602905 599304 598456 599064 600829 606699 603645  total = 160.342487 per ms 
02:05:08.329 16  switches: flows:  562833 565959 557332 560682 557879 554677 567133 566557 555874 565277 559262 558907 561511 556744 560883 555598  total = 149.201120 per ms 
02:06:08.430 16  switches: flows:  579398 583129 576038 578856 580947 588707 587029 579218 582800 576171 575182 584263 584434 581819 579475 577110  total = 154.648844 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 134200.19/165587.94/154347.82/52386.36 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.458934" elapsed="0.000391"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-26T02:06:08.459485" elapsed="0.000361"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-26T02:06:08.460220" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-26T02:06:08.460327" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 134200.19/165587.94/154347.82/52386.36 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-04-26T02:06:08.460005" elapsed="0.000347"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T02:06:08.460759" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 134200.19/165587.94/154347.82/52386.36 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T02:06:08.460507" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.463199" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.460931" elapsed="0.002340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.465770" level="INFO">134200.19/165587.94/154347.82/52386.36</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.463418" elapsed="0.002408"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T02:06:08.468213" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T02:06:08.465976" elapsed="0.002278"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T02:06:08.470704" level="INFO">@{result_value_list} = [ 134200.19 | 165587.94 | 154347.82 | 52386.36 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T02:06:08.468450" elapsed="0.002282"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.471194" level="INFO">Length is 4.</msg>
<msg time="2026-04-26T02:06:08.471299" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-26T02:06:08.470889" elapsed="0.000434"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.476021" level="INFO">min :: 134200.19</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.471692" elapsed="0.004386"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-26T02:06:08.471563" elapsed="0.004549"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.480850" level="INFO">max :: 165587.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-04-26T02:06:08.476377" elapsed="0.004531"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-26T02:06:08.476201" elapsed="0.004743"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.485486" level="INFO">avg :: 154347.82</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.481159" elapsed="0.004383"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-26T02:06:08.481032" elapsed="0.004544"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.490266" level="INFO">stdev :: 52386.36</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.485792" elapsed="0.004533"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-26T02:06:08.485663" elapsed="0.004698"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-26T02:06:08.471385" elapsed="0.019008"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.494485" level="INFO">${min} = 134200.19</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:06:08.490551" elapsed="0.003962"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.498449" level="INFO">${max} = 165587.94</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:06:08.494669" elapsed="0.003815"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.502435" level="INFO">${average} = 154347.82</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:06:08.498646" elapsed="0.003816"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.506426" level="INFO">${stdev} = 52386.36</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:06:08.502614" elapsed="0.003840"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.506965" level="INFO">${date} = 2026-04-26 02:06:08</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-26T02:06:08.506615" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.507580" level="INFO">CBench Result: 2026-04-26 02:06:08,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,134200.19,165587.94,154347.82,52386.36</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.507138" elapsed="0.000499"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-26T02:06:08.508683" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-26T02:06:08.508275" elapsed="0.000473"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-26T02:06:08.508900" elapsed="0.000475"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-26T02:06:08.507782" elapsed="0.001657"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-04-26T01:56:01.796740" elapsed="606.712759"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.509988" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-26T02:06:08.509674" elapsed="0.000392"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-04-26T02:06:08.510596" elapsed="0.000273"/>
</kw>
<status status="PASS" start="2026-04-26T02:06:08.510288" elapsed="0.000652"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-04-26T01:56:01.795412" elapsed="606.715566"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.512567" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.512160" elapsed="0.000465"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.513908" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-26T02:06:08.513508" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-04-26T02:06:08.514360" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-26T02:06:08.514118" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-26T02:06:08.517670" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-26T02:06:08.517415" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-26T02:06:08.517394" elapsed="0.000388"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-26T02:06:08.518159" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-26T02:06:08.517932" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.518897" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.254" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:06:08.518466" elapsed="0.000490"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-26T02:06:08.519511" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T02:06:08.519096" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-26T02:06:08.520590" level="INFO">Length is 0.</msg>
<msg time="2026-04-26T02:06:08.520684" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-26T02:06:08.520112" elapsed="0.000597"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T02:06:08.520850" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-26T02:06:08.522059" level="INFO">Logging into '10.30.171.254:22' as 'jenkins'.</msg>
<msg time="2026-04-26T02:06:09.103941" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun Apr 26 02:06:08 UTC 2026

  System load:  0.25               Processes:             104
  Usage of /:   19.6% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.254
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Apr 26 01:56:02 2026 from 10.30.170.68
[?2004h[jenkins@releng-63164-206-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-26T02:06:08.521687" elapsed="0.582438"/>
</kw>
<msg time="2026-04-26T02:06:09.104210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T02:06:08.521342" elapsed="0.582962"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-26T02:06:08.519739" elapsed="0.584679"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-26T02:06:09.104915" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-26T02:16:15.136352" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-26T02:16:15.136891" level="INFO">${stdout} = </msg>
<msg time="2026-04-26T02:16:15.136998" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-26T02:06:09.104627" elapsed="606.032428"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T02:16:15.137506" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.139345" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204: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.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:07:14.215 16  switches: flows:  105690 107953 107011 106067 103178 107152 106218 104802 105495 105256 103490 103353 105747 104779 103688 105211  total = 28.084833 per ms 
02:08:14.315 16  switches: flows:  123649 123615 124261 123926 118535 120789 123942 120703 119490 121702 119816 118593 122904 120059 118825 118947  total = 32.275251 per ms 
02:09:14.416 16  switches: flows:  114938 117755 116613 118182 111901 114971 117901 115539 113714 117007 115141 113408 116237 115619 115089 113080  total = 30.733513 per ms 
02:10:14.517 16  switches: flows:  122450 126578 125860 129121 124899 126868 126464 126201 126606 122688 121818 120500 125198 122051 123111 123710  total = 33.179290 per ms 
02:11:14.618 16  switches: flows:  120993 129133 126223 126059 122812 125306 126881 125476 126533 126310 122719 124361 124532 124111 123279 124451  total = 33.264103 per ms 
02:12:14.718 16  switches: flows:  121946 124514 127681 127153 122601 123939 126964 123769 126559 124994 123149 123933 125039 123290 122015 122144  total = 33.106200 per ms 
02:13:14.818 16  switches: flows:  121001 126074 127044 127223 122019 124707 126443 125386 127080 125310 123416 123953 123901 123996 123603 122645  total = 33.174634 per ms 
02:14:14.919 16  switches: flows:  120374 125734 122318 125499 119939 125272 126104 124726 125893 124072 120226 122013 124781 123984 121471 120440  total = 32.825950 per ms 
02:15:15.019 16  switches: flows:  121008 126779 125581 126650 121684 123755 126852 124939 125718 124301 123146 122813 125662 122376 122596 121827  total = 33.039626 per ms 
02:16:15.119 16  switches: flows:  117352 120258 121545 122357 118283 118953 122063 121499 120830 119898 118034 119057 120725 118777 117462 119310  total = 31.886819 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30733.51/33264.10/32609.49/10898.95 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.138592" elapsed="0.001053"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-26T02:16:15.140148" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-26T02:16:15.139851" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-26T02:16:15.139800" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-26T02:16:15.140601" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-26T02:16:15.140518" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-26T02:16:15.140483" elapsed="0.000257"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-26T02:16:15.140808" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-26T02:16:15.145299" elapsed="0.000327"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-26T02:16:15.145773" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-26T02:16:15.146058" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-26T02:16:15.141520" elapsed="0.004689"/>
</kw>
<msg time="2026-04-26T02:16:15.146354" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-26T02:06:08.514823" elapsed="606.631562"/>
</kw>
<status status="PASS" start="2026-04-26T02:06:08.514445" elapsed="606.631990"/>
</branch>
<status status="PASS" start="2026-04-26T02:06:08.514096" elapsed="606.632362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.146883" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.204: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.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:07:14.215 16  switches: flows:  105690 107953 107011 106067 103178 107152 106218 104802 105495 105256 103490 103353 105747 104779 103688 105211  total = 28.084833 per ms 
02:08:14.315 16  switches: flows:  123649 123615 124261 123926 118535 120789 123942 120703 119490 121702 119816 118593 122904 120059 118825 118947  total = 32.275251 per ms 
02:09:14.416 16  switches: flows:  114938 117755 116613 118182 111901 114971 117901 115539 113714 117007 115141 113408 116237 115619 115089 113080  total = 30.733513 per ms 
02:10:14.517 16  switches: flows:  122450 126578 125860 129121 124899 126868 126464 126201 126606 122688 121818 120500 125198 122051 123111 123710  total = 33.179290 per ms 
02:11:14.618 16  switches: flows:  120993 129133 126223 126059 122812 125306 126881 125476 126533 126310 122719 124361 124532 124111 123279 124451  total = 33.264103 per ms 
02:12:14.718 16  switches: flows:  121946 124514 127681 127153 122601 123939 126964 123769 126559 124994 123149 123933 125039 123290 122015 122144  total = 33.106200 per ms 
02:13:14.818 16  switches: flows:  121001 126074 127044 127223 122019 124707 126443 125386 127080 125310 123416 123953 123901 123996 123603 122645  total = 33.174634 per ms 
02:14:14.919 16  switches: flows:  120374 125734 122318 125499 119939 125272 126104 124726 125893 124072 120226 122013 124781 123984 121471 120440  total = 32.825950 per ms 
02:15:15.019 16  switches: flows:  121008 126779 125581 126650 121684 123755 126852 124939 125718 124301 123146 122813 125662 122376 122596 121827  total = 33.039626 per ms 
02:16:15.119 16  switches: flows:  117352 120258 121545 122357 118283 118953 122063 121499 120830 119898 118034 119057 120725 118777 117462 119310  total = 31.886819 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30733.51/33264.10/32609.49/10898.95 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.146598" elapsed="0.000360"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-26T02:16:15.147113" elapsed="0.000374"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-26T02:16:15.147877" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-26T02:16:15.147968" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30733.51/33264.10/32609.49/10898.95 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-04-26T02:16:15.147647" elapsed="0.000345"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T02:16:15.148416" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30733.51/33264.10/32609.49/10898.95 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T02:16:15.148148" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.150835" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.148588" elapsed="0.002304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.153453" level="INFO">30733.51/33264.10/32609.49/10898.95</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.151037" elapsed="0.002473"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T02:16:15.155930" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T02:16:15.153661" elapsed="0.002297"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-26T02:16:15.158402" level="INFO">@{result_value_list} = [ 30733.51 | 33264.10 | 32609.49 | 10898.95 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-26T02:16:15.156148" elapsed="0.002283"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.158902" level="INFO">Length is 4.</msg>
<msg time="2026-04-26T02:16:15.158990" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-26T02:16:15.158588" elapsed="0.000425"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.163787" level="INFO">min :: 30733.51</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.159401" elapsed="0.004444"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-26T02:16:15.159272" elapsed="0.004607"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.168440" level="INFO">max :: 33264.10</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.164091" elapsed="0.004403"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-26T02:16:15.163965" elapsed="0.004564"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.173064" level="INFO">avg :: 32609.49</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.168742" elapsed="0.004378"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-26T02:16:15.168611" elapsed="0.004543"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.177725" level="INFO">stdev :: 10898.95</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.173378" elapsed="0.004403"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-26T02:16:15.173236" elapsed="0.004580"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-26T02:16:15.159076" elapsed="0.018769"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.181845" level="INFO">${min} = 30733.51</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:16:15.178075" elapsed="0.003797"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.185990" level="INFO">${max} = 33264.10</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:16:15.182025" elapsed="0.003992"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.189956" level="INFO">${average} = 32609.49</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:16:15.186170" elapsed="0.003812"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.193890" level="INFO">${stdev} = 10898.95</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-26T02:16:15.190134" elapsed="0.003783"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.194442" level="INFO">${date} = 2026-04-26 02:16: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-04-26T02:16:15.194074" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.195017" level="INFO">CBench Result: 2026-04-26 02:16:15,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30733.51,33264.10,32609.49,10898.95</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-26T02:16:15.194613" elapsed="0.000460"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-26T02:16:15.196175" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-04-26T02:16:15.195693" elapsed="0.000565"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-04-26T02:16:15.196419" elapsed="0.000458"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-26T02:16:15.195207" elapsed="0.001733"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-04-26T02:06:08.512930" elapsed="606.684069"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.197496" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-26T02:16:15.197156" elapsed="0.000396"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-26T02:16:15.198767" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-26T02:16:15.198266" elapsed="0.000529"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-26T02:16:15.199018" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-26T02:16:15.198872" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-26T02:16:15.198852" elapsed="0.000252"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.199268" elapsed="0.000023"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.199430" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.199590" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.199807" elapsed="0.000034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.199980" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.200129" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.200294" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-26T02:16:15.200527" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-26T02:16:15.200380" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-26T02:16:15.200363" elapsed="0.000254"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-26T02:16:15.197916" elapsed="0.002751"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-04-26T02:06:08.511581" elapsed="606.689132"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-04-26T01:45:52.784199" elapsed="1822.417115"/>
</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>
