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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-18T00:40:59.317142" elapsed="0.773615"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-18T00:41:00.138698" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-18T00:41:00.091031" elapsed="0.047740"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-18T00:41:00.140678" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-18T00:41:00.140790" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-18T00:41:00.138932" elapsed="0.001887"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-18T00:41:00.140975" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T00:41:00.141328" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:41:00.142024" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:41:00.141688" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T00:41:00.142129" elapsed="0.000054"/>
</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.22
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-18T00:40:59.315686" elapsed="0.826618"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-06-18T00:40:59.312071" elapsed="0.830315"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T00:41:00.142933" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-18T00:41:00.142579" elapsed="0.000408"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T00:41:00.143409" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-18T00:41:00.143144" elapsed="0.000322"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-18T00:41:00.144046" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-18T00:41:00.143622" elapsed="0.000453"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T00:41:00.144614" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-18T00:41:00.144259" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-18T00:41:00.145178" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-18T00:41:00.144805" elapsed="0.000399"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T00:41:00.145697" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-18T00:41:00.145382" elapsed="0.000357"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-06-18T00:41:00.146040" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-18T00:41:00.145825" elapsed="0.000270"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T00:41:00.150564" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T00:41:00.150143" elapsed="0.000448"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T00:41:00.151597" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T00:41:00.151680" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-18T00:41:00.151146" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T00:41:00.151851" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T00:41:00.153206" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-06-18T00:41:00.829158" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jun 18 00:41:00 UTC 2026

  System load:  0.02               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.36
  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-311-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-18T00:41:00.152727" elapsed="0.676540"/>
</kw>
<msg time="2026-06-18T00:41:00.829358" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T00:41:00.152377" elapsed="0.677062"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-18T00:41:00.150800" elapsed="0.678743"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-18T00:41:00.836532" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-06-18T00:41:00.829732" elapsed="0.008693"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T00:41:00.838662" elapsed="0.000348"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-06-18T00:41:00.149629" elapsed="0.689465"/>
</kw>
<status status="PASS" start="2026-06-18T00:41:00.146316" elapsed="0.692830"/>
</branch>
<status status="PASS" start="2026-06-18T00:41:00.145800" elapsed="0.693386"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-18T00:41:00.839415" elapsed="0.000604"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-18T00:41:00.846034" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-06-18T00:41:00.845869" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-06-18T00:41:00.845838" elapsed="0.000311"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-18T00:41:00.851116" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-06-18T00:41:00.850959" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-06-18T00:41:00.850932" elapsed="0.000281"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T00:41:00.851413" elapsed="0.000587"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-18T00:41:00.852586" level="INFO">Logging into '10.30.170.22:8101' as 'karaf'.</msg>
<msg time="2026-06-18T00:41:01.066653" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-18T00:41:00.852206" elapsed="0.214552"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.177856" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-18T00:41:01.066945" elapsed="0.110988"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.187661" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-18T00:41:01.187835" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-18T00:41:01.178082" elapsed="0.009785"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-18T00:41:01.188008" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T00:41:01.188327" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:41:01.188951" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:41:01.188654" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T00:41:01.189053" elapsed="0.000044"/>
</return>
<msg time="2026-06-18T00:41:01.189240" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.22
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-18T00:41:00.850465" elapsed="0.338807"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-18T00:41:01.189462" elapsed="0.000504"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T00:41:01.190018" elapsed="0.000032"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-06-18T00:41:00.845458" elapsed="0.344689"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-18T00:41:01.193870" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-18T00:41:01.193743" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-06-18T00:41:01.193721" elapsed="0.000220"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T00:41:01.194071" elapsed="0.000458"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.194945" level="INFO">Logging into '10.30.170.22:8101' as 'karaf'.</msg>
<msg time="2026-06-18T00:41:01.351624" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-18T00:41:01.194678" elapsed="0.157063"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.371147" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-18T00:41:01.351951" elapsed="0.019329"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.375256" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-18T00:41:01.375493" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-18T00:41:01.371642" elapsed="0.003917"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-18T00:41:01.375863" elapsed="0.000373"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T00:41:01.376574" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:41:01.377891" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:41:01.377205" elapsed="0.000796"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-18T00:41:01.378107" elapsed="0.000086"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.22
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-18T00:41:01.193420" elapsed="0.185032"/>
</kw>
<status status="PASS" start="2026-06-18T00:40:59.310247" elapsed="2.068335"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:41:01.382091" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:41:01.380215" elapsed="0.001941"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T00:41:01.383567" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-18T00:41:01.383203" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-18T00:41:01.383925" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-18T00:41:01.383688" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-18T00:41:01.386913" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-18T00:41:01.386658" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-06-18T00:41:01.386637" elapsed="0.000360"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.387326" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-18T00:41:01.387129" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:41:01.388065" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.36" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:41:01.387640" elapsed="0.000485"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.388760" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T00:41:01.388274" elapsed="0.000513"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T00:41:01.389703" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T00:41:01.389794" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-18T00:41:01.389383" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T00:41:01.389961" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.391157" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-06-18T00:41:01.709082" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jun 18 00:41:00 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Jun 18 00:41:00 2026 from 10.30.171.59
[?2004h[jenkins@releng-63164-311-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-18T00:41:01.390806" elapsed="0.318581"/>
</kw>
<msg time="2026-06-18T00:41:01.709530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T00:41:01.390460" elapsed="0.319212"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-18T00:41:01.388991" elapsed="0.320883"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-18T00:41:01.710774" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-18T00:51:07.806847" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-18T00:51:07.807300" level="INFO">${stdout} = </msg>
<msg time="2026-06-18T00:51:07.807401" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-18T00:41:01.710232" elapsed="606.097216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T00:51:07.807817" elapsed="0.000618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.809247" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:42:06.889 16  switches: flows:  105453 105385 104775 105894 105262 103156 102385 105148 100468 100328 100331 102321 99616 101669 101921 98620  total = 27.378867 per ms 
00:43:06.990 16  switches: flows:  116712 114997 117337 115070 116519 112957 111920 113020 110784 112253 109066 109684 109042 110447 114149 110204  total = 30.019172 per ms 
00:44:07.090 16  switches: flows:  125638 124196 126322 121117 122882 120590 120036 120582 119865 121165 117698 121040 118290 119813 121766 116405  total = 32.236194 per ms 
00:45:07.190 16  switches: flows:  128068 129520 129835 125590 126755 125722 123943 127100 123818 126557 120696 126110 122972 124038 126047 122254  total = 33.427886 per ms 
00:46:07.291 16  switches: flows:  127363 126670 129171 124857 125782 122791 122881 125379 122076 124406 120464 124067 121399 122293 122099 121191  total = 32.993059 per ms 
00:47:07.391 16  switches: flows:  125515 125125 127031 123186 123943 120358 120145 124302 119826 121527 119591 121452 120206 119373 119903 118441  total = 32.444522 per ms 
00:48:07.492 16  switches: flows:  128040 126068 128526 124264 126397 122437 124994 126429 121417 124511 121780 123965 122221 122211 121795 119444  total = 33.019356 per ms 
00:49:07.593 16  switches: flows:  125903 124662 126422 123741 125686 122417 122847 124417 121691 121594 119037 121641 121724 121640 119918 118463  total = 32.642169 per ms 
00:50:07.693 16  switches: flows:  124393 124086 126385 121833 124021 120615 122172 122429 120371 119513 119444 120447 121529 119233 118739 118050  total = 32.333642 per ms 
00:51:07.793 16  switches: flows:  125793 124159 124857 121430 122442 121063 123501 122596 121272 120054 119022 119304 120812 119662 119633 117243  total = 32.326714 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30019.17/33427.89/32382.52/10832.99 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.808702" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-18T00:51:07.810147" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-06-18T00:51:07.809729" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-06-18T00:51:07.809639" elapsed="0.000835"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-18T00:51:07.810829" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-06-18T00:51:07.810725" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-06-18T00:51:07.810676" elapsed="0.000330"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-18T00:51:07.811099" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T00:51:07.816101" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T00:51:07.817064" elapsed="0.000365"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T00:51:07.817669" elapsed="0.000180"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-18T00:51:07.811849" elapsed="0.006098"/>
</kw>
<msg time="2026-06-18T00:51:07.818186" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-18T00:41:01.384331" elapsed="606.433903"/>
</kw>
<status status="PASS" start="2026-06-18T00:41:01.384013" elapsed="606.434308"/>
</branch>
<status status="PASS" start="2026-06-18T00:41:01.383665" elapsed="606.434725"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.818999" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:42:06.889 16  switches: flows:  105453 105385 104775 105894 105262 103156 102385 105148 100468 100328 100331 102321 99616 101669 101921 98620  total = 27.378867 per ms 
00:43:06.990 16  switches: flows:  116712 114997 117337 115070 116519 112957 111920 113020 110784 112253 109066 109684 109042 110447 114149 110204  total = 30.019172 per ms 
00:44:07.090 16  switches: flows:  125638 124196 126322 121117 122882 120590 120036 120582 119865 121165 117698 121040 118290 119813 121766 116405  total = 32.236194 per ms 
00:45:07.190 16  switches: flows:  128068 129520 129835 125590 126755 125722 123943 127100 123818 126557 120696 126110 122972 124038 126047 122254  total = 33.427886 per ms 
00:46:07.291 16  switches: flows:  127363 126670 129171 124857 125782 122791 122881 125379 122076 124406 120464 124067 121399 122293 122099 121191  total = 32.993059 per ms 
00:47:07.391 16  switches: flows:  125515 125125 127031 123186 123943 120358 120145 124302 119826 121527 119591 121452 120206 119373 119903 118441  total = 32.444522 per ms 
00:48:07.492 16  switches: flows:  128040 126068 128526 124264 126397 122437 124994 126429 121417 124511 121780 123965 122221 122211 121795 119444  total = 33.019356 per ms 
00:49:07.593 16  switches: flows:  125903 124662 126422 123741 125686 122417 122847 124417 121691 121594 119037 121641 121724 121640 119918 118463  total = 32.642169 per ms 
00:50:07.693 16  switches: flows:  124393 124086 126385 121833 124021 120615 122172 122429 120371 119513 119444 120447 121529 119233 118739 118050  total = 32.333642 per ms 
00:51:07.793 16  switches: flows:  125793 124159 124857 121430 122442 121063 123501 122596 121272 120054 119022 119304 120812 119662 119633 117243  total = 32.326714 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30019.17/33427.89/32382.52/10832.99 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.818619" elapsed="0.000460"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-18T00:51:07.819235" elapsed="0.000432"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-18T00:51:07.820096" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-18T00:51:07.820192" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30019.17/33427.89/32382.52/10832.99 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-18T00:51:07.819839" elapsed="0.000380"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T00:51:07.820668" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30019.17/33427.89/32382.52/10832.99 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T00:51:07.820400" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.823451" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.820848" elapsed="0.002665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.825949" level="INFO">30019.17/33427.89/32382.52/10832.99</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.823672" elapsed="0.002338"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T00:51:07.828554" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T00:51:07.826167" elapsed="0.002417"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T00:51:07.831192" level="INFO">@{result_value_list} = [ 30019.17 | 33427.89 | 32382.52 | 10832.99 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T00:51:07.828809" elapsed="0.002412"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.831728" level="INFO">Length is 4.</msg>
<msg time="2026-06-18T00:51:07.831825" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-18T00:51:07.831399" elapsed="0.000454"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.836746" level="INFO">min :: 30019.17</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.832303" elapsed="0.004502"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-18T00:51:07.832164" elapsed="0.004679"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.841490" level="INFO">max :: 33427.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.837084" elapsed="0.004465"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-18T00:51:07.836951" elapsed="0.004635"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.846380" level="INFO">avg :: 32382.52</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.841814" elapsed="0.004628"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-18T00:51:07.841682" elapsed="0.004795"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.851162" level="INFO">stdev :: 10832.99</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.846742" elapsed="0.004479"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-18T00:51:07.846609" elapsed="0.004647"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-18T00:51:07.831943" elapsed="0.019348"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.855470" level="INFO">${min} = 30019.17</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T00:51:07.851644" elapsed="0.003855"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.859630" level="INFO">${max} = 33427.89</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T00:51:07.855659" elapsed="0.003999"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.863549" level="INFO">${average} = 32382.52</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T00:51:07.859810" elapsed="0.003766"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.867470" level="INFO">${stdev} = 10832.99</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T00:51:07.863728" elapsed="0.003769"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.868023" level="INFO">${date} = 2026-06-18 00:51:07</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-18T00:51:07.867657" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.868622" level="INFO">CBench Result: 2026-06-18 00:51:07,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30019.17,33427.89,32382.52,10832.99</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.868198" elapsed="0.000480"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T00:51:07.869740" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-18T00:51:07.869311" elapsed="0.000496"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-18T00:51:07.869959" elapsed="0.000479"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-18T00:51:07.868829" elapsed="0.001676"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-06-18T00:41:01.382575" elapsed="606.487996"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.871080" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-18T00:51:07.870762" elapsed="0.000375"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-18T00:51:07.871670" elapsed="0.000267"/>
</kw>
<status status="PASS" start="2026-06-18T00:51:07.871366" elapsed="0.000643"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-18T00:41:01.378861" elapsed="606.493195"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.873394" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.872987" elapsed="0.000465"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.874770" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-18T00:51:07.874376" elapsed="0.000438"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-18T00:51:07.875162" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-18T00:51:07.874935" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-18T00:51:07.878121" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-18T00:51:07.877876" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-06-18T00:51:07.877856" elapsed="0.000345"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-18T00:51:07.878563" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-18T00:51:07.878333" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.879277" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.22 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.36" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T00:51:07.878859" elapsed="0.000488"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T00:51:07.879887" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T00:51:07.879490" elapsed="0.000424"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T00:51:07.880810" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T00:51:07.880898" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-18T00:51:07.880501" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T00:51:07.881062" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T00:51:07.882250" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-06-18T00:51:08.528045" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jun 18 00:51:08 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Jun 18 00:41:01 2026 from 10.30.171.59
[?2004h[jenkins@releng-63164-311-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-18T00:51:07.881897" elapsed="0.646339"/>
</kw>
<msg time="2026-06-18T00:51:08.528351" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T00:51:07.881553" elapsed="0.646887"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-18T00:51:07.880112" elapsed="0.648452"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-18T00:51:08.529092" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.22 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-18T01:01:14.571157" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-18T01:01:14.571806" level="INFO">${stdout} = </msg>
<msg time="2026-06-18T01:01:14.571913" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-18T00:51:08.528777" elapsed="606.043199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T01:01:14.572487" elapsed="0.000710"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.574580" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:52:13.641 16  switches: flows:  467008 429592 470202 462734 473293 461239 462360 460902 433695 447267 442906 455217 438394 462242 448719 443884  total = 120.994233 per ms 
00:53:13.742 16  switches: flows:  620534 609433 615690 612930 614677 614516 608826 612650 621459 609650 617947 615815 613171 601545 615419 614581  total = 163.372107 per ms 
00:54:13.844 16  switches: flows:  645998 630279 634073 645056 639407 631371 638184 641017 629722 643622 636783 623202 622525 640416 638308 643461  total = 169.438478 per ms 
00:55:13.947 16  switches: flows:  567355 555765 553822 567741 560524 568481 560791 564727 564912 560952 562848 562924 564271 556975 563342 553246  total = 149.556423 per ms 
00:56:14.047 16  switches: flows:  601931 618085 609657 614425 615438 600116 619337 597835 614970 555997 548467 623592 570899 601627 545735 564371  total = 158.109427 per ms 
00:57:14.150 16  switches: flows:  566575 552049 547216 537065 528279 521779 554925 535327 544952 545990 541724 563221 548549 545641 550179 556618  total = 145.422788 per ms 
00:58:14.252 16  switches: flows:  545395 528278 546334 564416 574187 529277 548838 543576 534888 534507 547776 533291 532265 583480 529216 525088  total = 144.769606 per ms 
00:59:14.353 16  switches: flows:  572045 575509 569526 576391 580771 551795 566056 563395 563685 524540 573959 572850 571961 566994 566831 564538  total = 150.759696 per ms 
01:00:14.456 16  switches: flows:  636251 615749 612528 607795 620412 606416 548520 611707 621778 616538 622017 612618 614828 621371 624373 607401  total = 163.062411 per ms 
01:01:14.558 16  switches: flows:  616845 561619 583423 566649 558627 571129 566380 528109 597527 524534 551038 548917 544272 527541 548412 600163  total = 149.667924 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 144769.61/169438.48/154906.54/52304.26 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.573617" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-18T01:01:14.575470" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-06-18T01:01:14.575132" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-06-18T01:01:14.575078" elapsed="0.000599"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-18T01:01:14.575889" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-06-18T01:01:14.575806" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-06-18T01:01:14.575770" elapsed="0.000260"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-18T01:01:14.576099" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T01:01:14.580100" elapsed="0.000368"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T01:01:14.580619" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T01:01:14.580924" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-18T01:01:14.576837" elapsed="0.004247"/>
</kw>
<msg time="2026-06-18T01:01:14.581224" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-18T00:51:07.875584" elapsed="606.705668"/>
</kw>
<status status="PASS" start="2026-06-18T00:51:07.875248" elapsed="606.706054"/>
</branch>
<status status="PASS" start="2026-06-18T00:51:07.874911" elapsed="606.706416"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.581796" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:52:13.641 16  switches: flows:  467008 429592 470202 462734 473293 461239 462360 460902 433695 447267 442906 455217 438394 462242 448719 443884  total = 120.994233 per ms 
00:53:13.742 16  switches: flows:  620534 609433 615690 612930 614677 614516 608826 612650 621459 609650 617947 615815 613171 601545 615419 614581  total = 163.372107 per ms 
00:54:13.844 16  switches: flows:  645998 630279 634073 645056 639407 631371 638184 641017 629722 643622 636783 623202 622525 640416 638308 643461  total = 169.438478 per ms 
00:55:13.947 16  switches: flows:  567355 555765 553822 567741 560524 568481 560791 564727 564912 560952 562848 562924 564271 556975 563342 553246  total = 149.556423 per ms 
00:56:14.047 16  switches: flows:  601931 618085 609657 614425 615438 600116 619337 597835 614970 555997 548467 623592 570899 601627 545735 564371  total = 158.109427 per ms 
00:57:14.150 16  switches: flows:  566575 552049 547216 537065 528279 521779 554925 535327 544952 545990 541724 563221 548549 545641 550179 556618  total = 145.422788 per ms 
00:58:14.252 16  switches: flows:  545395 528278 546334 564416 574187 529277 548838 543576 534888 534507 547776 533291 532265 583480 529216 525088  total = 144.769606 per ms 
00:59:14.353 16  switches: flows:  572045 575509 569526 576391 580771 551795 566056 563395 563685 524540 573959 572850 571961 566994 566831 564538  total = 150.759696 per ms 
01:00:14.456 16  switches: flows:  636251 615749 612528 607795 620412 606416 548520 611707 621778 616538 622017 612618 614828 621371 624373 607401  total = 163.062411 per ms 
01:01:14.558 16  switches: flows:  616845 561619 583423 566649 558627 571129 566380 528109 597527 524534 551038 548917 544272 527541 548412 600163  total = 149.667924 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 144769.61/169438.48/154906.54/52304.26 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.581497" elapsed="0.000374"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-18T01:01:14.582023" elapsed="0.000406"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-18T01:01:14.582818" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-18T01:01:14.582908" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 144769.61/169438.48/154906.54/52304.26 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-18T01:01:14.582593" elapsed="0.000340"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T01:01:14.583357" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 144769.61/169438.48/154906.54/52304.26 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T01:01:14.583087" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.585769" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.583534" elapsed="0.002292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.588185" level="INFO">144769.61/169438.48/154906.54/52304.26</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.585975" elapsed="0.002268"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T01:01:14.590645" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T01:01:14.588412" elapsed="0.002260"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T01:01:14.593110" level="INFO">@{result_value_list} = [ 144769.61 | 169438.48 | 154906.54 | 52304.26 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T01:01:14.590889" elapsed="0.002248"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.593630" level="INFO">Length is 4.</msg>
<msg time="2026-06-18T01:01:14.593721" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-18T01:01:14.593293" elapsed="0.000453"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.598693" level="INFO">min :: 144769.61</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.594159" elapsed="0.004593"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-18T01:01:14.594015" elapsed="0.004773"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.603364" level="INFO">max :: 169438.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.599014" elapsed="0.004409"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-18T01:01:14.598884" elapsed="0.004574"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.608005" level="INFO">avg :: 154906.54</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.603678" elapsed="0.004384"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-18T01:01:14.603549" elapsed="0.004548"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.612732" level="INFO">stdev :: 52304.26</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.608321" elapsed="0.004469"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-18T01:01:14.608188" elapsed="0.004638"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-18T01:01:14.593815" elapsed="0.019044"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.616875" level="INFO">${min} = 144769.61</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:01:14.613048" elapsed="0.003854"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.621335" level="INFO">${max} = 169438.48</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:01:14.617059" elapsed="0.004321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.625369" level="INFO">${average} = 154906.54</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:01:14.621539" elapsed="0.003858"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.629334" level="INFO">${stdev} = 52304.26</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:01:14.625553" elapsed="0.003823"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.629912" level="INFO">${date} = 2026-06-18 01:01:14</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-18T01:01:14.629544" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.630565" level="INFO">CBench Result: 2026-06-18 01:01:14,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,144769.61,169438.48,154906.54,52304.26</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.630123" elapsed="0.000500"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T01:01:14.631742" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-18T01:01:14.631273" elapsed="0.000537"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-18T01:01:14.631963" elapsed="0.000498"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-18T01:01:14.630787" elapsed="0.001742"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-06-18T00:51:07.873770" elapsed="606.758820"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.633067" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-18T01:01:14.632748" elapsed="0.000376"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-18T01:01:14.633652" elapsed="0.000272"/>
</kw>
<status status="PASS" start="2026-06-18T01:01:14.633331" elapsed="0.000664"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-18T00:51:07.872379" elapsed="606.761664"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.635319" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.634933" elapsed="0.000461"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.636763" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-18T01:01:14.636266" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-18T01:01:14.637215" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-18T01:01:14.636961" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-18T01:01:14.640421" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-18T01:01:14.640150" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-06-18T01:01:14.640129" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-18T01:01:14.640865" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-18T01:01:14.640642" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.641600" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.36" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:01:14.641151" elapsed="0.000510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-18T01:01:14.642318" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T01:01:14.641831" elapsed="0.000538"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T01:01:14.643307" level="INFO">Length is 0.</msg>
<msg time="2026-06-18T01:01:14.643415" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-18T01:01:14.642985" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T01:01:14.643585" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-18T01:01:14.644824" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-06-18T01:01:15.206325" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jun 18 01:01:14 UTC 2026

  System load:  0.32               Processes:             107
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.36
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Jun 18 00:51:08 2026 from 10.30.171.59
[?2004h[jenkins@releng-63164-311-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-18T01:01:14.644451" elapsed="0.562157"/>
</kw>
<msg time="2026-06-18T01:01:15.206719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-18T01:01:14.644086" elapsed="0.562742"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-18T01:01:14.642591" elapsed="0.564383"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-18T01:01:15.207674" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.22 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-18T01:11:21.276933" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-18T01:11:21.277639" level="INFO">${stdout} = </msg>
<msg time="2026-06-18T01:11:21.277811" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-18T01:01:15.207254" elapsed="606.070682"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T01:11:21.278481" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.280755" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:02:20.347 16  switches: flows:  120666 121274 122210 120800 120439 120936 119599 119539 120325 120375 117893 115705 115658 120163 120607 116263  total = 31.874200 per ms 
01:03:20.447 16  switches: flows:  112127 112290 112865 112591 113447 112068 111411 112398 110477 111083 110883 109886 110687 111113 110835 108850  total = 29.667291 per ms 
01:04:20.548 16  switches: flows:  122471 125707 120692 124872 125399 125527 120036 121172 122546 121227 121432 118614 119284 120775 123483 121089  total = 32.517677 per ms 
01:05:20.649 16  switches: flows:  123308 125239 123406 125674 124043 125921 121269 121666 123159 119750 122905 119997 119534 121277 124524 121844  total = 32.670721 per ms 
01:06:20.750 16  switches: flows:  120685 126577 122756 123307 124336 123811 121150 120940 123019 120374 122090 118580 118345 119432 123466 121908  total = 32.458716 per ms 
01:07:20.853 16  switches: flows:  118101 122542 121258 124463 123665 123371 120115 120711 122266 117622 121410 118824 119178 119134 122460 121977  total = 32.230350 per ms 
01:08:20.954 16  switches: flows:  123104 124508 122459 125184 124359 124623 122085 120556 125953 119970 123309 119786 120369 119896 124808 121221  total = 32.648608 per ms 
01:09:21.055 16  switches: flows:  124574 124962 125593 124755 124634 125136 122918 122501 120994 120263 121080 119214 119279 119088 120878 120967  total = 32.559546 per ms 
01:10:21.157 16  switches: flows:  124865 123821 125268 123885 123299 123809 123172 122248 120473 120430 119683 118318 117932 118992 120135 120430  total = 32.391931 per ms 
01:11:21.258 16  switches: flows:  123201 122153 122587 122306 123918 125266 121555 121746 117772 119783 117995 117746 119325 119420 117996 120476  total = 32.167041 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29667.29/32670.72/32145.76/10752.25 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.279809" elapsed="0.001342"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-18T01:11:21.281762" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-06-18T01:11:21.281430" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-06-18T01:11:21.281366" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-18T01:11:21.282238" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-06-18T01:11:21.282148" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-06-18T01:11:21.282110" elapsed="0.000318"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-18T01:11:21.282505" 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-06-18T01:11:21.287327" elapsed="0.000371"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-18T01:11:21.287851" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-18T01:11:21.288159" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-18T01:11:21.283275" elapsed="0.005039"/>
</kw>
<msg time="2026-06-18T01:11:21.288505" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-18T01:01:14.637640" elapsed="606.650893"/>
</kw>
<status status="PASS" start="2026-06-18T01:01:14.637302" elapsed="606.651283"/>
</branch>
<status status="PASS" start="2026-06-18T01:01:14.636929" elapsed="606.651681"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.289700" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.22:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.22. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:02:20.347 16  switches: flows:  120666 121274 122210 120800 120439 120936 119599 119539 120325 120375 117893 115705 115658 120163 120607 116263  total = 31.874200 per ms 
01:03:20.447 16  switches: flows:  112127 112290 112865 112591 113447 112068 111411 112398 110477 111083 110883 109886 110687 111113 110835 108850  total = 29.667291 per ms 
01:04:20.548 16  switches: flows:  122471 125707 120692 124872 125399 125527 120036 121172 122546 121227 121432 118614 119284 120775 123483 121089  total = 32.517677 per ms 
01:05:20.649 16  switches: flows:  123308 125239 123406 125674 124043 125921 121269 121666 123159 119750 122905 119997 119534 121277 124524 121844  total = 32.670721 per ms 
01:06:20.750 16  switches: flows:  120685 126577 122756 123307 124336 123811 121150 120940 123019 120374 122090 118580 118345 119432 123466 121908  total = 32.458716 per ms 
01:07:20.853 16  switches: flows:  118101 122542 121258 124463 123665 123371 120115 120711 122266 117622 121410 118824 119178 119134 122460 121977  total = 32.230350 per ms 
01:08:20.954 16  switches: flows:  123104 124508 122459 125184 124359 124623 122085 120556 125953 119970 123309 119786 120369 119896 124808 121221  total = 32.648608 per ms 
01:09:21.055 16  switches: flows:  124574 124962 125593 124755 124634 125136 122918 122501 120994 120263 121080 119214 119279 119088 120878 120967  total = 32.559546 per ms 
01:10:21.157 16  switches: flows:  124865 123821 125268 123885 123299 123809 123172 122248 120473 120430 119683 118318 117932 118992 120135 120430  total = 32.391931 per ms 
01:11:21.258 16  switches: flows:  123201 122153 122587 122306 123918 125266 121555 121746 117772 119783 117995 117746 119325 119420 117996 120476  total = 32.167041 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29667.29/32670.72/32145.76/10752.25 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.289392" elapsed="0.000383"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-18T01:11:21.289924" elapsed="0.000388"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-18T01:11:21.290719" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-18T01:11:21.290811" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29667.29/32670.72/32145.76/10752.25 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-18T01:11:21.290494" elapsed="0.000343"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T01:11:21.291265" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29667.29/32670.72/32145.76/10752.25 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T01:11:21.290995" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.293772" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.291460" elapsed="0.002370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.296220" level="INFO">29667.29/32670.72/32145.76/10752.25</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.293980" elapsed="0.002298"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T01:11:21.298722" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T01:11:21.296446" elapsed="0.002303"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-18T01:11:21.301217" level="INFO">@{result_value_list} = [ 29667.29 | 32670.72 | 32145.76 | 10752.25 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-18T01:11:21.298959" elapsed="0.002308"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.301768" level="INFO">Length is 4.</msg>
<msg time="2026-06-18T01:11:21.301859" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-18T01:11:21.301444" elapsed="0.000439"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.306698" level="INFO">min :: 29667.29</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.302298" elapsed="0.004458"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-18T01:11:21.302155" elapsed="0.004636"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.311372" level="INFO">max :: 32670.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-06-18T01:11:21.307009" elapsed="0.004423"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-18T01:11:21.306881" elapsed="0.004585"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.316029" level="INFO">avg :: 32145.76</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.311687" elapsed="0.004399"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-18T01:11:21.311557" elapsed="0.004564"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.320808" level="INFO">stdev :: 10752.25</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.316355" elapsed="0.004510"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-18T01:11:21.316207" elapsed="0.004692"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-18T01:11:21.301952" elapsed="0.018978"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.325508" level="INFO">${min} = 29667.29</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:11:21.321090" elapsed="0.004447"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.329738" level="INFO">${max} = 32670.72</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:11:21.325692" elapsed="0.004075"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.333745" level="INFO">${average} = 32145.76</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:11:21.329931" elapsed="0.003841"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.337735" level="INFO">${stdev} = 10752.25</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-18T01:11:21.333935" elapsed="0.003827"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.338285" level="INFO">${date} = 2026-06-18 01:11:21</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-18T01:11:21.337930" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.338901" level="INFO">CBench Result: 2026-06-18 01:11:21,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29667.29,32670.72,32145.76,10752.25</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-18T01:11:21.338481" elapsed="0.000492"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-18T01:11:21.340119" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-18T01:11:21.339625" elapsed="0.000564"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-18T01:11:21.340359" elapsed="0.000476"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-18T01:11:21.339126" elapsed="0.001776"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-06-18T01:01:14.635715" elapsed="606.705256"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.341477" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-18T01:11:21.341128" elapsed="0.000409"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-18T01:11:21.342772" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-18T01:11:21.342263" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-18T01:11:21.343051" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-06-18T01:11:21.342883" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-06-18T01:11:21.342861" elapsed="0.000288"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.343297" elapsed="0.000023"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.343474" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.343634" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.343834" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.343986" elapsed="0.000024"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.344144" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.344299" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-06-18T01:11:21.344542" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-18T01:11:21.344404" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-06-18T01:11:21.344386" elapsed="0.000231"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-06-18T01:11:21.341918" elapsed="0.002750"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-18T01:01:14.634414" elapsed="606.710307"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-06-18T00:40:58.747894" elapsed="1822.597628"/>
</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>
