<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-08-16T00:44:57.828534" 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-08-16T00:44:58.371935" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-08-16T00:44:58.371774" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-08-16T00:44:58.371743" elapsed="0.000292"/>
</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-08-16T00:44:58.372282" elapsed="0.000521"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-16T00:44:58.373288" level="INFO">Logging into '10.30.170.156:8101' as 'karaf'.</msg>
<msg time="2026-08-16T00:44:59.111546" 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-08-16T00:44:58.372993" elapsed="0.738736"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-16T00:44:59.160469" 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-08-16T00:44:59.112029" elapsed="0.048511"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-16T00:44:59.162368" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-16T00:44:59.162479" 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-08-16T00:44:59.160708" elapsed="0.001801"/>
</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-08-16T00:44:59.162682" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T00:44:59.163059" elapsed="0.000221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:44:59.163757" 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-08-16T00:44:59.163429" elapsed="0.000382"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-16T00:44:59.163887" elapsed="0.000051"/>
</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.156
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-16T00:44:58.371391" elapsed="0.792667"/>
</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-08-16T00:44:58.367775" elapsed="0.796345"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-16T00:44:59.164668" 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-08-16T00:44:59.164302" elapsed="0.000423"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-16T00:44:59.165152" 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-08-16T00:44:59.164907" elapsed="0.000301"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-16T00:44:59.165785" 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-08-16T00:44:59.165371" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-16T00:44:59.166329" 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-08-16T00:44:59.165998" elapsed="0.000374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-16T00:44:59.166940" 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-08-16T00:44:59.166516" elapsed="0.000452"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-16T00:44:59.167436" 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-08-16T00:44:59.167127" elapsed="0.000352"/>
</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-08-16T00:44:59.167770" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-16T00:44:59.167562" elapsed="0.000277"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-16T00:44:59.172512" 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-08-16T00:44:59.172110" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-16T00:44:59.173554" level="INFO">Length is 0.</msg>
<msg time="2026-08-16T00:44:59.173637" 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-08-16T00:44:59.173115" elapsed="0.000546"/>
</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-08-16T00:44:59.173804" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-16T00:44:59.175240" level="INFO">Logging into '10.30.170.240:22' as 'jenkins'.</msg>
<msg time="2026-08-16T00:44:59.643751" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Sun Aug 16 00:44:19 UTC 2026

  System load:  0.25               Processes:             112
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.240
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

14 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-372-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-08-16T00:44:59.174714" elapsed="0.469216"/>
</kw>
<msg time="2026-08-16T00:44:59.644027" 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-08-16T00:44:59.174313" elapsed="0.469810"/>
</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-08-16T00:44:59.172744" elapsed="0.471500"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-16T00:44:59.653531" 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-08-16T00:44:59.644459" elapsed="0.011351"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T00:44:59.656221" elapsed="0.000574"/>
</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-08-16T00:44:59.171565" elapsed="0.485411"/>
</kw>
<status status="PASS" start="2026-08-16T00:44:59.168130" elapsed="0.488928"/>
</branch>
<status status="PASS" start="2026-08-16T00:44:59.167536" elapsed="0.489588"/>
</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-08-16T00:44:59.657457" elapsed="0.001048"/>
</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-08-16T00:44:59.665124" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-08-16T00:44:59.664956" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-08-16T00:44:59.664921" elapsed="0.000310"/>
</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-08-16T00:44:59.669572" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-08-16T00:44:59.669452" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-08-16T00:44:59.669432" elapsed="0.000210"/>
</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-08-16T00:44:59.669787" elapsed="0.000483"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-16T00:44:59.670678" level="INFO">Logging into '10.30.170.156:8101' as 'karaf'.</msg>
<msg time="2026-08-16T00:44:59.902192" 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-08-16T00:44:59.670416" elapsed="0.231971"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.017704" 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-08-16T00:44:59.902711" elapsed="0.115060"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.040038" 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-08-16T00:45:00.040271" 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-08-16T00:45:00.017941" elapsed="0.022361"/>
</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-08-16T00:45:00.040453" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T00:45:00.040787" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:45:00.041477" 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-08-16T00:45:00.041139" elapsed="0.000395"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-16T00:45:00.041587" elapsed="0.000054"/>
</return>
<msg time="2026-08-16T00:45:00.041795" 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.156
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-16T00:44:59.669096" elapsed="0.372752"/>
</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-08-16T00:45:00.042000" elapsed="0.000606"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-16T00:45:00.042659" elapsed="0.000033"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-08-16T00:44:59.664521" elapsed="0.378271"/>
</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-08-16T00:45:00.046562" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-08-16T00:45:00.046418" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-08-16T00:45:00.046394" elapsed="0.000241"/>
</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-08-16T00:45:00.046764" elapsed="0.000462"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.047813" level="INFO">Logging into '10.30.170.156:8101' as 'karaf'.</msg>
<msg time="2026-08-16T00:45:00.203719" 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-08-16T00:45:00.047540" elapsed="0.156343"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.227312" 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-08-16T00:45:00.204163" elapsed="0.023207"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.229365" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-16T00:45:00.229472" 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-08-16T00:45:00.227513" elapsed="0.001988"/>
</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-08-16T00:45:00.229635" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T00:45:00.229970" elapsed="0.000172"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:45:00.230612" 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-08-16T00:45:00.230292" elapsed="0.000369"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-16T00:45:00.230714" elapsed="0.000055"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.156
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-16T00:45:00.046088" elapsed="0.184825"/>
</kw>
<status status="PASS" start="2026-08-16T00:44:58.365936" elapsed="1.865041"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:45:00.232950" 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-08-16T00:45:00.231811" elapsed="0.001204"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-16T00:45:00.234407" 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-08-16T00:45:00.234061" elapsed="0.000390"/>
</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-08-16T00:45:00.234765" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-16T00:45:00.234529" elapsed="0.000310"/>
</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-08-16T00:45:00.237711" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-08-16T00:45:00.237465" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-08-16T00:45:00.237446" elapsed="0.000344"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.238130" 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-08-16T00:45:00.238250" 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-08-16T00:45:00.237935" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:45:00.238820" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.156 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.240" 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-08-16T00:45:00.238407" elapsed="0.000489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.239493" 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-08-16T00:45:00.239033" elapsed="0.000487"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-16T00:45:00.240451" level="INFO">Length is 0.</msg>
<msg time="2026-08-16T00:45:00.240540" 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-08-16T00:45:00.240106" elapsed="0.000459"/>
</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-08-16T00:45:00.240707" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.241904" level="INFO">Logging into '10.30.170.240:22' as 'jenkins'.</msg>
<msg time="2026-08-16T00:45:00.559530" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Sun Aug 16 00:44:19 UTC 2026

  System load:  0.25               Processes:             112
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.240
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Aug 16 00:44:59 2026 from 10.30.171.220
[?2004h[jenkins@releng-63164-372-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-08-16T00:45:00.241540" elapsed="0.318199"/>
</kw>
<msg time="2026-08-16T00:45:00.559854" 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-08-16T00:45:00.241202" elapsed="0.318751"/>
</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-08-16T00:45:00.239719" elapsed="0.320369"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-16T00:45:00.560701" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.156 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-16T00:55:06.656205" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-16T00:55:06.656731" level="INFO">${stdout} = </msg>
<msg time="2026-08-16T00:55:06.656877" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-16T00:45:00.560333" elapsed="606.096609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T00:55:06.657377" elapsed="0.000729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.659263" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156: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.156. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:46:05.744 16  switches: flows:  114174 113628 111995 112828 112886 110916 113743 112773 113419 109164 109946 108068 111574 108585 109077 108495  total = 29.687850 per ms 
00:47:05.846 16  switches: flows:  117233 118729 116751 118355 116190 115047 117526 114769 113872 110828 114737 111091 115111 111492 111630 111805  total = 30.535108 per ms 
00:48:05.947 16  switches: flows:  121438 122861 120733 121349 119973 119104 121592 119221 116703 115511 117429 115108 119451 116706 116826 115798  total = 31.610579 per ms 
00:49:06.047 16  switches: flows:  111386 115001 110158 111464 111709 110384 112257 110981 109012 107810 107852 106783 111264 109537 108152 107072  total = 29.298139 per ms 
00:50:06.147 16  switches: flows:  114585 114943 114252 116083 114402 114137 115423 113205 111561 111107 111256 108789 114280 112135 111616 110221  total = 30.083034 per ms 
00:51:06.248 16  switches: flows:  117005 121862 116355 115870 116444 116433 116606 115408 112407 111201 113424 112476 114959 113770 114089 112313  total = 30.625568 per ms 
00:52:06.349 16  switches: flows:  119710 121898 119560 122433 121305 121155 122304 121047 117133 116907 117473 114081 119028 117753 116598 115233  total = 31.673748 per ms 
00:53:06.449 16  switches: flows:  124763 125446 122746 126573 123383 122729 124096 125044 124437 121931 121159 117919 123368 120643 119413 118127  total = 32.641816 per ms 
00:54:06.549 16  switches: flows:  124692 126299 122833 128797 122263 124609 123777 125469 122799 120422 121308 116840 122138 120217 119005 118739  total = 32.615694 per ms 
00:55:06.649 16  switches: flows:  123118 124167 122661 126504 120564 122466 121776 123458 121303 118974 119850 115786 121514 118947 117482 117594  total = 32.215636 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29298.14/32641.82/31255.48/10477.60 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T00:55:06.658477" elapsed="0.001080"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-16T00:55:06.660080" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-08-16T00:55:06.659753" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-08-16T00:55:06.659696" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-16T00:55:06.660525" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-08-16T00:55:06.660442" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-08-16T00:55:06.660406" elapsed="0.000260"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-16T00:55:06.660739" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-16T00:55:06.665130" elapsed="0.000326"/>
</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-08-16T00:55:06.665601" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T00:55:06.665910" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-16T00:55:06.661452" elapsed="0.004619"/>
</kw>
<msg time="2026-08-16T00:55:06.666199" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-16T00:45:00.235187" elapsed="606.431039"/>
</kw>
<status status="PASS" start="2026-08-16T00:45:00.234871" elapsed="606.431405"/>
</branch>
<status status="PASS" start="2026-08-16T00:45:00.234506" elapsed="606.431794"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.666725" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156: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.156. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:46:05.744 16  switches: flows:  114174 113628 111995 112828 112886 110916 113743 112773 113419 109164 109946 108068 111574 108585 109077 108495  total = 29.687850 per ms 
00:47:05.846 16  switches: flows:  117233 118729 116751 118355 116190 115047 117526 114769 113872 110828 114737 111091 115111 111492 111630 111805  total = 30.535108 per ms 
00:48:05.947 16  switches: flows:  121438 122861 120733 121349 119973 119104 121592 119221 116703 115511 117429 115108 119451 116706 116826 115798  total = 31.610579 per ms 
00:49:06.047 16  switches: flows:  111386 115001 110158 111464 111709 110384 112257 110981 109012 107810 107852 106783 111264 109537 108152 107072  total = 29.298139 per ms 
00:50:06.147 16  switches: flows:  114585 114943 114252 116083 114402 114137 115423 113205 111561 111107 111256 108789 114280 112135 111616 110221  total = 30.083034 per ms 
00:51:06.248 16  switches: flows:  117005 121862 116355 115870 116444 116433 116606 115408 112407 111201 113424 112476 114959 113770 114089 112313  total = 30.625568 per ms 
00:52:06.349 16  switches: flows:  119710 121898 119560 122433 121305 121155 122304 121047 117133 116907 117473 114081 119028 117753 116598 115233  total = 31.673748 per ms 
00:53:06.449 16  switches: flows:  124763 125446 122746 126573 123383 122729 124096 125044 124437 121931 121159 117919 123368 120643 119413 118127  total = 32.641816 per ms 
00:54:06.549 16  switches: flows:  124692 126299 122833 128797 122263 124609 123777 125469 122799 120422 121308 116840 122138 120217 119005 118739  total = 32.615694 per ms 
00:55:06.649 16  switches: flows:  123118 124167 122661 126504 120564 122466 121776 123458 121303 118974 119850 115786 121514 118947 117482 117594  total = 32.215636 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29298.14/32641.82/31255.48/10477.60 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T00:55:06.666437" elapsed="0.000361"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-16T00:55:06.666963" elapsed="0.000382"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-16T00:55:06.667727" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-16T00:55:06.667838" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29298.14/32641.82/31255.48/10477.60 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-08-16T00:55:06.667502" elapsed="0.000363"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T00:55:06.668289" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29298.14/32641.82/31255.48/10477.60 | 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-08-16T00:55:06.668018" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.670665" 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-08-16T00:55:06.668461" elapsed="0.002261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.673079" level="INFO">29298.14/32641.82/31255.48/10477.60</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T00:55:06.670880" elapsed="0.002254"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T00:55:06.675441" 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-08-16T00:55:06.673281" elapsed="0.002188"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T00:55:06.677812" level="INFO">@{result_value_list} = [ 29298.14 | 32641.82 | 31255.48 | 10477.60 ]</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-08-16T00:55:06.675651" elapsed="0.002204"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.678304" level="INFO">Length is 4.</msg>
<msg time="2026-08-16T00:55:06.678390" 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-08-16T00:55:06.678005" elapsed="0.000409"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.683060" level="INFO">min :: 29298.14</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-08-16T00:55:06.678818" elapsed="0.004315"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-16T00:55:06.678688" elapsed="0.004479"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.687616" level="INFO">max :: 32641.82</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T00:55:06.683383" elapsed="0.004288"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-16T00:55:06.683257" elapsed="0.004448"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.692276" level="INFO">avg :: 31255.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-08-16T00:55:06.687932" elapsed="0.004401"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-16T00:55:06.687792" elapsed="0.004574"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.697986" level="INFO">stdev :: 10477.60</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T00:55:06.692580" elapsed="0.005464"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-16T00:55:06.692457" elapsed="0.005622"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-16T00:55:06.678489" elapsed="0.019623"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.702006" level="INFO">${min} = 29298.14</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-08-16T00:55:06.698269" elapsed="0.003765"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.705893" level="INFO">${max} = 32641.82</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-08-16T00:55:06.702185" elapsed="0.003735"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.709731" level="INFO">${average} = 31255.48</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-08-16T00:55:06.706069" elapsed="0.003689"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.713649" level="INFO">${stdev} = 10477.60</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-08-16T00:55:06.709925" elapsed="0.003751"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.714203" level="INFO">${date} = 2026-08-16 00:55:06</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-16T00:55:06.713849" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.714776" level="INFO">CBench Result: 2026-08-16 00:55:06,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29298.14,32641.82,31255.48,10477.60</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-08-16T00:55:06.714378" elapsed="0.000476"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-16T00:55:06.715895" 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-08-16T00:55:06.715467" 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-08-16T00:55:06.716109" elapsed="0.000448"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-16T00:55:06.714995" elapsed="0.001625"/>
</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-08-16T00:45:00.233421" elapsed="606.483256"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.717144" 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-08-16T00:55:06.716835" elapsed="0.000366"/>
</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-08-16T00:55:06.717697" elapsed="0.000279"/>
</kw>
<status status="PASS" start="2026-08-16T00:55:06.717407" elapsed="0.000639"/>
</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-08-16T00:45:00.231125" elapsed="606.486958"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.719358" 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-08-16T00:55:06.718952" elapsed="0.000463"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.720624" 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-08-16T00:55:06.720302" elapsed="0.000363"/>
</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-08-16T00:55:06.721024" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-16T00:55:06.720782" elapsed="0.000299"/>
</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-08-16T00:55:06.723986" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-16T00:55:06.723730" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-08-16T00:55:06.723711" elapsed="0.000354"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-16T00:55:06.724375" 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-08-16T00:55:06.724491" 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-08-16T00:55:06.724195" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.725079" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.156 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.240" 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-08-16T00:55:06.724648" elapsed="0.000488"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-16T00:55:06.725660" 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-08-16T00:55:06.725277" elapsed="0.000409"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-16T00:55:06.726558" level="INFO">Length is 0.</msg>
<msg time="2026-08-16T00:55:06.726645" 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-08-16T00:55:06.726261" elapsed="0.000410"/>
</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-08-16T00:55:06.726813" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-16T00:55:06.728180" level="INFO">Logging into '10.30.170.240:22' as 'jenkins'.</msg>
<msg time="2026-08-16T00:55:07.320068" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Sun Aug 16 00:55:06 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Aug 16 00:45:00 2026 from 10.30.171.220
[?2004h[jenkins@releng-63164-372-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-08-16T00:55:06.727666" elapsed="0.592615"/>
</kw>
<msg time="2026-08-16T00:55:07.320375" 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-08-16T00:55:06.727331" elapsed="0.593152"/>
</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-08-16T00:55:06.725898" elapsed="0.594714"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-16T00:55:07.321222" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.156 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-16T01:05:13.615595" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-16T01:05:13.616124" level="INFO">${stdout} = </msg>
<msg time="2026-08-16T01:05:13.616231" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.156: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-08-16T00:55:07.320874" elapsed="606.295413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T01:05:13.616715" elapsed="0.000708"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.618590" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.156: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.156. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:56:12.452 16  switches: flows:  442538 452942 450490 444699 456140 441854 440722 444567 428297 438177 443812 435827 431386 432986 426993 440586  total = 117.533600 per ms 
00:57:12.553 16  switches: flows:  478971 453965 446383 500854 485893 453162 431038 435677 430037 512211 506145 496047 464994 516292 432317 429501  total = 124.349556 per ms 
00:58:12.653 16  switches: flows:  597470 592280 596836 594446 597173 595203 601296 556605 545211 586883 595287 588544 590337 599159 583780 500978  total = 155.097840 per ms 
00:59:12.755 16  switches: flows:  570371 556222 576801 558225 563744 566971 556253 563075 555609 558049 554582 553338 568453 559122 573214 560864  total = 149.662801 per ms 
01:00:13.095 16  switches: flows:  494309 416141 471757 477244 497165 465369 466448 502509 437039 480878 494263 474753 425731 498044 493957 458827  total = 125.197126 per ms 
01:01:13.196 16  switches: flows:  539821 538041 541353 537725 530247 537818 533301 534773 533943 529122 539056 537198 537275 543441 538214 535695  total = 142.876529 per ms 
01:02:13.298 16  switches: flows:  604347 599881 605110 598664 614097 528364 605312 599754 605140 604500 515267 602879 590262 606591 602767 614267  total = 158.019365 per ms 
01:03:13.401 16  switches: flows:  628979 628160 632009 626747 627751 612295 623052 628705 618440 629905 627349 617926 619753 635361 624577 624146  total = 166.470820 per ms 
01:04:13.504 16  switches: flows:  612647 606577 615495 603796 612881 603491 608141 612147 584627 593846 603126 609337 600228 610176 603716 611269  total = 161.249460 per ms 
01:05:13.605 16  switches: flows:  616279 611970 621077 618354 612978 605668 610460 618749 616591 624037 614339 614318 625670 624236 632077 615054  total = 164.420587 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 124349.56/166470.82/149704.90/52101.23 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:05:13.617792" elapsed="0.001163"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-16T01:05:13.619482" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-08-16T01:05:13.619181" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-08-16T01:05:13.619129" elapsed="0.000558"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-16T01:05:13.619930" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-08-16T01:05:13.619815" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-08-16T01:05:13.619778" elapsed="0.000290"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-16T01:05:13.620137" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-16T01:05:13.625617" elapsed="0.000753"/>
</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-08-16T01:05:13.626689" elapsed="0.000371"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T01:05:13.627409" elapsed="0.000234"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-16T01:05:13.620824" elapsed="0.006937"/>
</kw>
<msg time="2026-08-16T01:05:13.628068" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.156: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-08-16T00:55:06.721472" elapsed="606.906657"/>
</kw>
<status status="PASS" start="2026-08-16T00:55:06.721105" elapsed="606.907149"/>
</branch>
<status status="PASS" start="2026-08-16T00:55:06.720762" elapsed="606.907558"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.628819" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.156: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.156. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:56:12.452 16  switches: flows:  442538 452942 450490 444699 456140 441854 440722 444567 428297 438177 443812 435827 431386 432986 426993 440586  total = 117.533600 per ms 
00:57:12.553 16  switches: flows:  478971 453965 446383 500854 485893 453162 431038 435677 430037 512211 506145 496047 464994 516292 432317 429501  total = 124.349556 per ms 
00:58:12.653 16  switches: flows:  597470 592280 596836 594446 597173 595203 601296 556605 545211 586883 595287 588544 590337 599159 583780 500978  total = 155.097840 per ms 
00:59:12.755 16  switches: flows:  570371 556222 576801 558225 563744 566971 556253 563075 555609 558049 554582 553338 568453 559122 573214 560864  total = 149.662801 per ms 
01:00:13.095 16  switches: flows:  494309 416141 471757 477244 497165 465369 466448 502509 437039 480878 494263 474753 425731 498044 493957 458827  total = 125.197126 per ms 
01:01:13.196 16  switches: flows:  539821 538041 541353 537725 530247 537818 533301 534773 533943 529122 539056 537198 537275 543441 538214 535695  total = 142.876529 per ms 
01:02:13.298 16  switches: flows:  604347 599881 605110 598664 614097 528364 605312 599754 605140 604500 515267 602879 590262 606591 602767 614267  total = 158.019365 per ms 
01:03:13.401 16  switches: flows:  628979 628160 632009 626747 627751 612295 623052 628705 618440 629905 627349 617926 619753 635361 624577 624146  total = 166.470820 per ms 
01:04:13.504 16  switches: flows:  612647 606577 615495 603796 612881 603491 608141 612147 584627 593846 603126 609337 600228 610176 603716 611269  total = 161.249460 per ms 
01:05:13.605 16  switches: flows:  616279 611970 621077 618354 612978 605668 610460 618749 616591 624037 614339 614318 625670 624236 632077 615054  total = 164.420587 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 124349.56/166470.82/149704.90/52101.23 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:05:13.628533" elapsed="0.000382"/>
</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-08-16T01:05:13.629060" elapsed="0.000377"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-16T01:05:13.629820" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-16T01:05:13.629926" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 124349.56/166470.82/149704.90/52101.23 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-08-16T01:05:13.629596" elapsed="0.000354"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T01:05:13.630358" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 124349.56/166470.82/149704.90/52101.23 | 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-08-16T01:05:13.630100" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.632748" 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-08-16T01:05:13.630526" elapsed="0.002278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.635177" level="INFO">124349.56/166470.82/149704.90/52101.23</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:05:13.632970" elapsed="0.002264"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T01:05:13.637567" 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-08-16T01:05:13.635381" elapsed="0.002216"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T01:05:13.639994" level="INFO">@{result_value_list} = [ 124349.56 | 166470.82 | 149704.90 | 52101.23 ]</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-08-16T01:05:13.637779" elapsed="0.002247"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.640534" level="INFO">Length is 4.</msg>
<msg time="2026-08-16T01:05:13.640622" 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-08-16T01:05:13.640178" elapsed="0.000467"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.645456" level="INFO">min :: 124349.56</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-08-16T01:05:13.641046" elapsed="0.004467"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-16T01:05:13.640919" elapsed="0.004633"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.650145" level="INFO">max :: 166470.82</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:05:13.645767" elapsed="0.004434"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-16T01:05:13.645642" elapsed="0.004594"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.654763" level="INFO">avg :: 149704.90</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:05:13.650487" elapsed="0.004332"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-16T01:05:13.650327" elapsed="0.004540"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.659484" level="INFO">stdev :: 52101.23</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-08-16T01:05:13.655081" elapsed="0.004458"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-16T01:05:13.654955" elapsed="0.004619"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-16T01:05:13.640717" elapsed="0.018887"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.663418" level="INFO">${min} = 124349.56</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-08-16T01:05:13.659760" elapsed="0.003684"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.667264" level="INFO">${max} = 166470.82</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-08-16T01:05:13.663595" elapsed="0.003696"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.671099" level="INFO">${average} = 149704.90</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-16T01:05:13.667443" elapsed="0.003682"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.674928" level="INFO">${stdev} = 52101.23</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-08-16T01:05:13.671290" elapsed="0.003665"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.675486" level="INFO">${date} = 2026-08-16 01:05:13</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-16T01:05:13.675110" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.676076" level="INFO">CBench Result: 2026-08-16 01:05:13,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,124349.56,166470.82,149704.90,52101.23</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-08-16T01:05:13.675661" elapsed="0.000471"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-16T01:05:13.677140" 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-08-16T01:05:13.676728" elapsed="0.000478"/>
</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-08-16T01:05:13.677353" elapsed="0.000442"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-16T01:05:13.676270" elapsed="0.001604"/>
</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-08-16T00:55:06.719714" elapsed="606.958218"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.678390" 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-08-16T01:05:13.678079" elapsed="0.000367"/>
</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-08-16T01:05:13.678961" elapsed="0.000272"/>
</kw>
<status status="PASS" start="2026-08-16T01:05:13.678652" elapsed="0.000650"/>
</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-08-16T00:55:06.718377" elapsed="606.960962"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.680507" 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-08-16T01:05:13.680135" elapsed="0.000430"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.681766" 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-08-16T01:05:13.681432" elapsed="0.000377"/>
</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-08-16T01:05:13.682278" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-16T01:05:13.681972" elapsed="0.000367"/>
</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-08-16T01:05:13.685403" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-16T01:05:13.685152" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-08-16T01:05:13.685133" elapsed="0.000349"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-16T01:05:13.685790" 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-08-16T01:05:13.685922" 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-08-16T01:05:13.685610" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.686491" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.156 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.240" 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-08-16T01:05:13.686081" elapsed="0.000468"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-16T01:05:13.687085" 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-08-16T01:05:13.686684" elapsed="0.000428"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-16T01:05:13.688004" level="INFO">Length is 0.</msg>
<msg time="2026-08-16T01:05:13.688092" 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-08-16T01:05:13.687691" elapsed="0.000425"/>
</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-08-16T01:05:13.688255" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-16T01:05:13.689420" level="INFO">Logging into '10.30.170.240:22' as 'jenkins'.</msg>
<msg time="2026-08-16T01:05:14.277647" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Sun Aug 16 01:05:13 UTC 2026

  System load:  0.3                Processes:             105
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.240
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun Aug 16 00:55:07 2026 from 10.30.171.220
[?2004h[jenkins@releng-63164-372-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-08-16T01:05:13.689073" elapsed="0.588699"/>
</kw>
<msg time="2026-08-16T01:05:14.277857" 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-08-16T01:05:13.688718" elapsed="0.589208"/>
</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-08-16T01:05:13.687323" elapsed="0.590697"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-16T01:05:14.278432" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.156 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-16T01:15:20.310048" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-16T01:15:20.310664" level="INFO">${stdout} = </msg>
<msg time="2026-08-16T01:15:20.310778" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-16T01:05:14.278189" elapsed="606.032693"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T01:15:20.311415" elapsed="0.000742"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.313318" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156: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.156. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:19.399 16  switches: flows:  116777 116843 118445 117470 116981 116375 116576 113310 115481 114463 115777 111195 115616 112944 112226 115885  total = 30.772733 per ms 
01:07:19.500 16  switches: flows:  121727 122097 121423 121923 123633 120668 123001 122274 120600 120625 119382 120177 118447 119999 119950 120592  total = 32.221513 per ms 
01:08:19.600 16  switches: flows:  124493 123741 123480 121867 125735 124189 122797 124844 124629 122619 121496 121819 123539 122507 122485 120451  total = 32.790119 per ms 
01:09:19.700 16  switches: flows:  123359 123713 126564 122507 124373 125682 123762 127004 126209 123512 124445 123306 125299 122044 124341 121811  total = 33.076965 per ms 
01:10:19.801 16  switches: flows:  124789 124750 125781 123230 124324 126232 125026 127070 126879 125014 126305 122984 125706 122936 126157 122850  total = 33.278237 per ms 
01:11:19.901 16  switches: flows:  123925 123839 125677 120900 125440 124007 121661 124247 125505 122372 122842 122099 123193 122560 122629 121670  total = 32.821260 per ms 
01:12:20.001 16  switches: flows:  129646 127215 129482 125227 129943 126800 125847 125892 126173 125934 124804 125711 123128 126958 126303 128220  total = 33.731730 per ms 
01:13:20.101 16  switches: flows:  129172 126612 130925 125965 130393 125125 125822 124556 125032 126568 124672 125711 125833 126270 126587 127708  total = 33.726191 per ms 
01:14:20.202 16  switches: flows:  121413 120010 121977 119270 120862 116539 118231 117549 118061 118684 117631 118949 118821 118516 120804 119893  total = 31.733873 per ms 
01:15:20.302 16  switches: flows:  128617 126709 130508 125573 128994 125019 126657 125620 125115 125452 124690 126066 124301 127447 126487 127498  total = 33.689573 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31733.87/33731.73/33007.72/11022.28 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:15:20.312527" elapsed="0.001104"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-16T01:15:20.314152" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-08-16T01:15:20.313819" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-08-16T01:15:20.313768" elapsed="0.000586"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-16T01:15:20.314560" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-08-16T01:15:20.314480" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-08-16T01:15:20.314446" elapsed="0.000251"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-16T01:15:20.314764" 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-08-16T01:15:20.320214" elapsed="0.000327"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-16T01:15:20.320687" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-16T01:15:20.320995" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-16T01:15:20.315518" elapsed="0.005629"/>
</kw>
<msg time="2026-08-16T01:15:20.321281" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-16T01:05:13.682678" elapsed="606.638631"/>
</kw>
<status status="PASS" start="2026-08-16T01:05:13.682364" elapsed="606.638996"/>
</branch>
<status status="PASS" start="2026-08-16T01:05:13.681950" elapsed="606.639434"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.321821" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.156: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.156. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:19.399 16  switches: flows:  116777 116843 118445 117470 116981 116375 116576 113310 115481 114463 115777 111195 115616 112944 112226 115885  total = 30.772733 per ms 
01:07:19.500 16  switches: flows:  121727 122097 121423 121923 123633 120668 123001 122274 120600 120625 119382 120177 118447 119999 119950 120592  total = 32.221513 per ms 
01:08:19.600 16  switches: flows:  124493 123741 123480 121867 125735 124189 122797 124844 124629 122619 121496 121819 123539 122507 122485 120451  total = 32.790119 per ms 
01:09:19.700 16  switches: flows:  123359 123713 126564 122507 124373 125682 123762 127004 126209 123512 124445 123306 125299 122044 124341 121811  total = 33.076965 per ms 
01:10:19.801 16  switches: flows:  124789 124750 125781 123230 124324 126232 125026 127070 126879 125014 126305 122984 125706 122936 126157 122850  total = 33.278237 per ms 
01:11:19.901 16  switches: flows:  123925 123839 125677 120900 125440 124007 121661 124247 125505 122372 122842 122099 123193 122560 122629 121670  total = 32.821260 per ms 
01:12:20.001 16  switches: flows:  129646 127215 129482 125227 129943 126800 125847 125892 126173 125934 124804 125711 123128 126958 126303 128220  total = 33.731730 per ms 
01:13:20.101 16  switches: flows:  129172 126612 130925 125965 130393 125125 125822 124556 125032 126568 124672 125711 125833 126270 126587 127708  total = 33.726191 per ms 
01:14:20.202 16  switches: flows:  121413 120010 121977 119270 120862 116539 118231 117549 118061 118684 117631 118949 118821 118516 120804 119893  total = 31.733873 per ms 
01:15:20.302 16  switches: flows:  128617 126709 130508 125573 128994 125019 126657 125620 125115 125452 124690 126066 124301 127447 126487 127498  total = 33.689573 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31733.87/33731.73/33007.72/11022.28 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:15:20.321529" elapsed="0.000385"/>
</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-08-16T01:15:20.322062" elapsed="0.000399"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-16T01:15:20.322866" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-16T01:15:20.322959" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 31733.87/33731.73/33007.72/11022.28 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-08-16T01:15:20.322623" elapsed="0.000360"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T01:15:20.323426" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 31733.87/33731.73/33007.72/11022.28 | 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-08-16T01:15:20.323133" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.325826" 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-08-16T01:15:20.323602" elapsed="0.002294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.328261" level="INFO">31733.87/33731.73/33007.72/11022.28</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:15:20.326041" elapsed="0.002277"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T01:15:20.330636" 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-08-16T01:15:20.328466" elapsed="0.002197"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-16T01:15:20.333147" level="INFO">@{result_value_list} = [ 31733.87 | 33731.73 | 33007.72 | 11022.28 ]</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-08-16T01:15:20.330869" elapsed="0.002307"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.333636" level="INFO">Length is 4.</msg>
<msg time="2026-08-16T01:15:20.333723" 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-08-16T01:15:20.333328" elapsed="0.000419"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.338432" level="INFO">min :: 31733.87</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-08-16T01:15:20.334159" elapsed="0.004330"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-16T01:15:20.334032" elapsed="0.004492"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.343090" level="INFO">max :: 33731.73</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:15:20.338748" elapsed="0.004399"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-16T01:15:20.338610" elapsed="0.004572"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.347723" level="INFO">avg :: 33007.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-08-16T01:15:20.343392" elapsed="0.004388"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-16T01:15:20.343264" elapsed="0.004550"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.352351" level="INFO">stdev :: 11022.28</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-16T01:15:20.348043" elapsed="0.004364"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-16T01:15:20.347914" elapsed="0.004527"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-16T01:15:20.333821" elapsed="0.018648"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.356456" level="INFO">${min} = 31733.87</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-08-16T01:15:20.352624" elapsed="0.003860"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.360327" level="INFO">${max} = 33731.73</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-08-16T01:15:20.356635" elapsed="0.003719"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.364181" level="INFO">${average} = 33007.72</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-08-16T01:15:20.360504" elapsed="0.003703"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.368030" level="INFO">${stdev} = 11022.28</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-08-16T01:15:20.364357" elapsed="0.003699"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.368556" level="INFO">${date} = 2026-08-16 01:15:20</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-16T01:15:20.368214" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.369148" level="INFO">CBench Result: 2026-08-16 01:15:20,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,31733.87,33731.73,33007.72,11022.28</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-08-16T01:15:20.368729" elapsed="0.000475"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-16T01:15:20.370293" 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-08-16T01:15:20.369808" elapsed="0.000554"/>
</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-08-16T01:15:20.370511" elapsed="0.000483"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-16T01:15:20.369345" elapsed="0.001713"/>
</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-08-16T01:05:13.680886" elapsed="606.690230"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.371564" 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-08-16T01:15:20.371260" elapsed="0.000383"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-16T01:15:20.372858" 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-08-16T01:15:20.372364" elapsed="0.000522"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-16T01:15:20.373113" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-08-16T01:15:20.372963" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-08-16T01:15:20.372944" elapsed="0.000257"/>
</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-08-16T01:15:20.373344" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-08-16T01:15:20.373496" 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-08-16T01:15:20.373650" 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-08-16T01:15:20.373855" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-08-16T01:15:20.374003" elapsed="0.000019"/>
</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-08-16T01:15:20.374145" elapsed="0.000025"/>
</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-08-16T01:15:20.374292" elapsed="0.000019"/>
</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-08-16T01:15:20.374504" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-08-16T01:15:20.374372" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-08-16T01:15:20.374356" elapsed="0.000221"/>
</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-08-16T01:15:20.372035" elapsed="0.002591"/>
</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-08-16T01:05:13.679624" elapsed="606.695048"/>
</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-08-16T00:44:57.830127" elapsed="1822.545229"/>
</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>
