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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-01T02:55:24.614436" elapsed="0.904210"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-01T02:55:25.568285" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-01T02:55:25.518918" elapsed="0.049504"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-01T02:55:25.570326" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-01T02:55:25.570436" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-01T02:55:25.568676" elapsed="0.001790"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-01T02:55:25.570623" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T02:55:25.571013" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T02:55:25.571715" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T02:55:25.571383" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-01T02:55:25.571825" elapsed="0.000049"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.204
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-01T02:55:24.612857" elapsed="0.959137"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-06-01T02:55:24.608920" elapsed="0.963179"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-01T02:55:25.572653" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-01T02:55:25.572282" elapsed="0.000430"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-01T02:55:25.573143" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-01T02:55:25.572867" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-01T02:55:25.573767" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-01T02:55:25.573360" elapsed="0.000436"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-01T02:55:25.574427" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-01T02:55:25.573965" elapsed="0.000514"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-01T02:55:25.575152" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-01T02:55:25.574660" elapsed="0.000522"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-01T02:55:25.575664" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-01T02:55:25.575345" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-06-01T02:55:25.576039" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-06-01T02:55:25.575794" elapsed="0.000320"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-01T02:55:25.580697" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T02:55:25.580279" elapsed="0.000447"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-01T02:55:25.581755" level="INFO">Length is 0.</msg>
<msg time="2026-06-01T02:55:25.581840" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-01T02:55:25.581313" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T02:55:25.582043" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-01T02:55:25.583435" level="INFO">Logging into '10.30.170.55:22' as 'jenkins'.</msg>
<msg time="2026-06-01T02:55:26.299320" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  1 02:55:25 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-63164-278-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-01T02:55:25.582898" elapsed="0.716648"/>
</kw>
<msg time="2026-06-01T02:55:26.299654" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T02:55:25.582553" elapsed="0.717224"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-01T02:55:25.580939" elapsed="0.718986"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.308044" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-06-01T02:55:26.300240" elapsed="0.009688"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T02:55:26.310284" elapsed="0.000500"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-06-01T02:55:25.579730" elapsed="0.731164"/>
</kw>
<status status="PASS" start="2026-06-01T02:55:25.576374" elapsed="0.734581"/>
</branch>
<status status="PASS" start="2026-06-01T02:55:25.575768" elapsed="0.735255"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-01T02:55:26.311261" elapsed="0.000788"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-01T02:55:26.320146" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-06-01T02:55:26.319871" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-06-01T02:55:26.319822" elapsed="0.000461"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-01T02:55:26.325753" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-06-01T02:55:26.325613" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-06-01T02:55:26.325590" elapsed="0.000242"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T02:55:26.326015" elapsed="0.000745"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.327435" level="INFO">Logging into '10.30.171.204:8101' as 'karaf'.</msg>
<msg time="2026-06-01T02:55:26.543667" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-01T02:55:26.326921" elapsed="0.216906"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.639819" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-01T02:55:26.544102" elapsed="0.095792"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.644721" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-01T02:55:26.644917" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-01T02:55:26.640084" elapsed="0.004866"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-01T02:55:26.645119" elapsed="0.000356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T02:55:26.645625" elapsed="0.000198"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T02:55:26.646494" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T02:55:26.645962" elapsed="0.000588"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-01T02:55:26.646627" elapsed="0.000051"/>
</return>
<msg time="2026-06-01T02:55:26.646829" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.204
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-01T02:55:26.325182" elapsed="0.321679"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-01T02:55:26.647021" elapsed="0.000540"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-01T02:55:26.647614" 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-06-01T02:55:26.319118" elapsed="0.328629"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-06-01T02:55:26.651693" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-06-01T02:55:26.651557" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-06-01T02:55:26.651534" elapsed="0.000231"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T02:55:26.651895" elapsed="0.000461"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.652961" level="INFO">Logging into '10.30.171.204:8101' as 'karaf'.</msg>
<msg time="2026-06-01T02:55:26.843593" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-06-01T02:55:26.652504" elapsed="0.191246"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.868231" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-06-01T02:55:26.844000" elapsed="0.024383"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.871121" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-06-01T02:55:26.871302" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-06-01T02:55:26.868693" elapsed="0.002641"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-06-01T02:55:26.871597" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T02:55:26.872104" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T02:55:26.872799" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T02:55:26.872450" elapsed="0.000402"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-06-01T02:55:26.872912" elapsed="0.000056"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.204
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-06-01T02:55:26.651225" elapsed="0.221893"/>
</kw>
<status status="PASS" start="2026-06-01T02:55:24.607152" elapsed="2.266076"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T02:55:26.875512" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T02:55:26.874245" elapsed="0.001339"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-01T02:55:26.877186" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-01T02:55:26.876783" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-01T02:55:26.877582" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-06-01T02:55:26.877321" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-01T02:55:26.880808" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-06-01T02:55:26.880531" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-06-01T02:55:26.880511" elapsed="0.000382"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.881292" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-01T02:55:26.881053" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T02:55:26.882068" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.55" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T02:55:26.881612" elapsed="0.000519"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.882777" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T02:55:26.882272" elapsed="0.000532"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-01T02:55:26.883807" level="INFO">Length is 0.</msg>
<msg time="2026-06-01T02:55:26.883909" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-01T02:55:26.883438" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T02:55:26.884110" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-01T02:55:26.885653" level="INFO">Logging into '10.30.170.55:22' as 'jenkins'.</msg>
<msg time="2026-06-01T02:55:27.217937" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  1 02:55:25 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Jun  1 02:55:26 2026 from 10.30.171.225
[?2004h[jenkins@releng-63164-278-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-01T02:55:26.885169" elapsed="0.332980"/>
</kw>
<msg time="2026-06-01T02:55:27.218237" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T02:55:26.884696" elapsed="0.333631"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-01T02:55:26.883023" elapsed="0.335428"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-01T02:55:27.219274" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-01T03:05:33.365874" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-01T03:05:33.366351" level="INFO">${stdout} = </msg>
<msg time="2026-06-01T03:05:33.366453" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-01T02:55:27.218681" elapsed="606.147816"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T03:05:33.366811" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.368169" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:56:32.432 16  switches: flows:  124552 127943 126098 124982 127965 126474 125068 125623 116094 120358 120185 117424 120306 121142 121207 120843  total = 32.771067 per ms 
02:57:32.548 16  switches: flows:  143485 142247 139377 140373 140167 138891 139406 139751 134306 132832 131423 132715 133562 133739 134823 132529  total = 36.424198 per ms 
02:58:32.648 16  switches: flows:  138579 140248 137064 136462 135363 134708 135972 137724 130663 130001 128308 130870 130023 129750 129255 129713  total = 35.519063 per ms 
02:59:32.749 16  switches: flows:  140270 142732 143019 137204 138073 137787 138443 142419 133791 132285 130553 133647 133312 133782 133096 131865  total = 36.310668 per ms 
03:00:32.850 16  switches: flows:  139723 142551 140283 136311 137266 137397 136442 139236 133755 128811 130600 133172 133708 135665 132152 131790  total = 36.087445 per ms 
03:01:32.952 16  switches: flows:  139007 140869 138954 136123 137348 135039 134408 137005 131303 129338 127967 130425 131185 132418 130065 129427  total = 35.621808 per ms 
03:02:33.053 16  switches: flows:  139109 139200 140912 135589 135716 134799 133998 136283 132449 131178 127782 130399 130925 132816 131497 128643  total = 35.628773 per ms 
03:03:33.154 16  switches: flows:  139918 141145 141440 136652 137428 140602 137095 139389 134290 132902 130124 133620 132273 135607 134662 131220  total = 36.245541 per ms 
03:04:33.255 16  switches: flows:  139530 138669 139342 136169 138017 137030 136146 137984 132288 131518 127540 131555 132592 132182 134623 130339  total = 35.865466 per ms 
03:05:33.356 16  switches: flows:  142473 140711 140991 140281 140038 139350 137334 138740 135203 133117 130439 134860 133599 134172 134118 132161  total = 36.398864 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 35519.06/36424.20/36011.31/12008.55 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.367622" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-01T03:05:33.368754" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-06-01T03:05:33.368542" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-06-01T03:05:33.368500" elapsed="0.000401"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-01T03:05:33.369075" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-06-01T03:05:33.368991" elapsed="0.000147"/>
</branch>
<status status="NOT RUN" start="2026-06-01T03:05:33.368966" elapsed="0.000206"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-01T03:05:33.369222" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T03:05:33.372907" elapsed="0.000524"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T03:05:33.373645" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T03:05:33.374104" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-01T03:05:33.369719" elapsed="0.004610"/>
</kw>
<msg time="2026-06-01T03:05:33.374572" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-01T02:55:26.878069" elapsed="606.496543"/>
</kw>
<status status="PASS" start="2026-06-01T02:55:26.877675" elapsed="606.497009"/>
</branch>
<status status="PASS" start="2026-06-01T02:55:26.877296" elapsed="606.497423"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.375368" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:56:32.432 16  switches: flows:  124552 127943 126098 124982 127965 126474 125068 125623 116094 120358 120185 117424 120306 121142 121207 120843  total = 32.771067 per ms 
02:57:32.548 16  switches: flows:  143485 142247 139377 140373 140167 138891 139406 139751 134306 132832 131423 132715 133562 133739 134823 132529  total = 36.424198 per ms 
02:58:32.648 16  switches: flows:  138579 140248 137064 136462 135363 134708 135972 137724 130663 130001 128308 130870 130023 129750 129255 129713  total = 35.519063 per ms 
02:59:32.749 16  switches: flows:  140270 142732 143019 137204 138073 137787 138443 142419 133791 132285 130553 133647 133312 133782 133096 131865  total = 36.310668 per ms 
03:00:32.850 16  switches: flows:  139723 142551 140283 136311 137266 137397 136442 139236 133755 128811 130600 133172 133708 135665 132152 131790  total = 36.087445 per ms 
03:01:32.952 16  switches: flows:  139007 140869 138954 136123 137348 135039 134408 137005 131303 129338 127967 130425 131185 132418 130065 129427  total = 35.621808 per ms 
03:02:33.053 16  switches: flows:  139109 139200 140912 135589 135716 134799 133998 136283 132449 131178 127782 130399 130925 132816 131497 128643  total = 35.628773 per ms 
03:03:33.154 16  switches: flows:  139918 141145 141440 136652 137428 140602 137095 139389 134290 132902 130124 133620 132273 135607 134662 131220  total = 36.245541 per ms 
03:04:33.255 16  switches: flows:  139530 138669 139342 136169 138017 137030 136146 137984 132288 131518 127540 131555 132592 132182 134623 130339  total = 35.865466 per ms 
03:05:33.356 16  switches: flows:  142473 140711 140991 140281 140038 139350 137334 138740 135203 133117 130439 134860 133599 134172 134118 132161  total = 36.398864 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 35519.06/36424.20/36011.31/12008.55 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.374919" elapsed="0.000567"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-01T03:05:33.375699" elapsed="0.000553"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-01T03:05:33.376815" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-01T03:05:33.376946" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 35519.06/36424.20/36011.31/12008.55 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-01T03:05:33.376489" elapsed="0.000492"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:05:33.377615" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 35519.06/36424.20/36011.31/12008.55 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:05:33.377222" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.381129" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.377860" elapsed="0.003351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.384598" level="INFO">35519.06/36424.20/36011.31/12008.55</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.381420" elapsed="0.003289"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:05:33.387895" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:05:33.384972" elapsed="0.002954"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:05:33.390542" level="INFO">@{result_value_list} = [ 35519.06 | 36424.20 | 36011.31 | 12008.55 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:05:33.388135" elapsed="0.002437"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.391089" level="INFO">Length is 4.</msg>
<msg time="2026-06-01T03:05:33.391186" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-01T03:05:33.390745" elapsed="0.000466"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.396333" level="INFO">min :: 35519.06</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.391678" elapsed="0.004725"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-01T03:05:33.391518" elapsed="0.004941"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.401209" level="INFO">max :: 36424.20</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.396718" elapsed="0.004552"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-01T03:05:33.396582" elapsed="0.004724"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.406110" level="INFO">avg :: 36011.31</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.401538" elapsed="0.004634"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-01T03:05:33.401402" elapsed="0.004807"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.411145" level="INFO">stdev :: 12008.55</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.406465" elapsed="0.004746"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-01T03:05:33.406310" elapsed="0.004942"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-01T03:05:33.391283" elapsed="0.020007"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.415581" level="INFO">${min} = 35519.06</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:05:33.411494" elapsed="0.004118"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.419625" level="INFO">${max} = 36424.20</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:05:33.415775" elapsed="0.003879"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.423987" level="INFO">${average} = 36011.31</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:05:33.419809" elapsed="0.004224"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.428142" level="INFO">${stdev} = 12008.55</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:05:33.424195" elapsed="0.003981"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.428790" level="INFO">${date} = 2026-06-01 03:05:33</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-01T03:05:33.428382" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.429429" level="INFO">CBench Result: 2026-06-01 03:05:33,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,35519.06,36424.20,36011.31,12008.55</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.428971" elapsed="0.000541"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-01T03:05:33.430792" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-01T03:05:33.430322" elapsed="0.000540"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-01T03:05:33.431057" elapsed="0.000494"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-01T03:05:33.429688" elapsed="0.001931"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-06-01T02:55:26.876071" elapsed="606.555623"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.432246" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-01T03:05:33.431849" elapsed="0.000480"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-01T03:05:33.432927" elapsed="0.000302"/>
</kw>
<status status="PASS" start="2026-06-01T03:05:33.432603" elapsed="0.000708"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-01T02:55:26.873382" elapsed="606.559976"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.435101" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.434666" elapsed="0.000497"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.436515" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-01T03:05:33.436172" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-01T03:05:33.436948" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-06-01T03:05:33.436711" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-01T03:05:33.440386" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-01T03:05:33.440125" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-06-01T03:05:33.440104" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-01T03:05:33.440866" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-01T03:05:33.440608" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.441662" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.204 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.55" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:05:33.441180" elapsed="0.000545"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-01T03:05:33.442506" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T03:05:33.441868" elapsed="0.000680"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-01T03:05:33.443760" level="INFO">Length is 0.</msg>
<msg time="2026-06-01T03:05:33.443853" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-01T03:05:33.443360" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T03:05:33.444044" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-01T03:05:33.445339" level="INFO">Logging into '10.30.170.55:22' as 'jenkins'.</msg>
<msg time="2026-06-01T03:05:34.049845" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  1 03:05:33 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Jun  1 02:55:27 2026 from 10.30.171.225
[?2004h[jenkins@releng-63164-278-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-01T03:05:33.444951" elapsed="0.605159"/>
</kw>
<msg time="2026-06-01T03:05:34.050206" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T03:05:33.444566" elapsed="0.605737"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-01T03:05:33.442855" elapsed="0.607568"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-01T03:05:34.050952" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.204 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-01T03:15:40.164121" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-01T03:15:40.164760" level="INFO">${stdout} = </msg>
<msg time="2026-06-01T03:15:40.164867" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-01T03:05:34.050648" elapsed="606.114283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T03:15:40.165442" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.167423" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:06:39.218 16  switches: flows:  519138 517176 519624 516588 516919 520702 515850 517075 498707 501749 504083 499442 508326 505511 494370 505356  total = 136.010267 per ms 
03:07:39.321 16  switches: flows:  528603 526347 522869 517306 520086 513381 517835 520926 515605 524115 526474 518983 524800 517577 522083 510176  total = 138.550038 per ms 
03:08:39.424 16  switches: flows:  543709 539061 549831 542904 542234 537993 551218 547524 541280 539201 551526 546452 548931 549777 548811 546328  total = 145.201855 per ms 
03:09:39.527 16  switches: flows:  521723 508514 514172 511367 513943 518150 517220 511254 518956 515073 524346 510888 519027 517021 517834 514627  total = 137.335806 per ms 
03:10:39.629 16  switches: flows:  551841 549454 567117 559932 552238 552944 553001 549057 557312 547738 560147 555333 555601 551659 553203 544483  total = 147.434395 per ms 
03:11:39.747 16  switches: flows:  590612 592748 600763 586962 577282 581104 585723 586308 589170 585767 591637 587858 583309 589171 584873 581764  total = 156.278102 per ms 
03:12:39.848 16  switches: flows:  589915 592063 601033 590104 592508 595448 588384 587395 590724 594241 595585 591707 590326 590956 596345 582469  total = 157.554214 per ms 
03:13:39.951 16  switches: flows:  585722 582226 584098 576868 582797 582729 576972 580309 586086 583134 587441 572300 578567 582304 581196 584569  total = 154.860029 per ms 
03:14:40.053 16  switches: flows:  546827 548795 547214 545896 553234 552459 550334 540817 546460 549800 546448 548154 548372 545543 549037 542687  total = 145.788807 per ms 
03:15:40.155 16  switches: flows:  560844 559415 560400 547818 554280 553023 551538 555183 559743 557946 558083 548398 554321 549591 555210 560255  total = 147.850920 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 137335.81/157554.21/147872.69/49765.16 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.166619" elapsed="0.001138"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-01T03:15:40.168383" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-06-01T03:15:40.168044" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-06-01T03:15:40.167910" elapsed="0.000704"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-01T03:15:40.168822" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-06-01T03:15:40.168743" elapsed="0.000167"/>
</branch>
<status status="NOT RUN" start="2026-06-01T03:15:40.168707" elapsed="0.000251"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-01T03:15:40.169057" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T03:15:40.173860" elapsed="0.000358"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T03:15:40.174366" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T03:15:40.174675" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-01T03:15:40.169756" elapsed="0.005074"/>
</kw>
<msg time="2026-06-01T03:15:40.174963" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-01T03:05:33.437402" elapsed="606.737590"/>
</kw>
<status status="PASS" start="2026-06-01T03:05:33.437057" elapsed="606.738000"/>
</branch>
<status status="PASS" start="2026-06-01T03:05:33.436684" elapsed="606.738398"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.175698" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:06:39.218 16  switches: flows:  519138 517176 519624 516588 516919 520702 515850 517075 498707 501749 504083 499442 508326 505511 494370 505356  total = 136.010267 per ms 
03:07:39.321 16  switches: flows:  528603 526347 522869 517306 520086 513381 517835 520926 515605 524115 526474 518983 524800 517577 522083 510176  total = 138.550038 per ms 
03:08:39.424 16  switches: flows:  543709 539061 549831 542904 542234 537993 551218 547524 541280 539201 551526 546452 548931 549777 548811 546328  total = 145.201855 per ms 
03:09:39.527 16  switches: flows:  521723 508514 514172 511367 513943 518150 517220 511254 518956 515073 524346 510888 519027 517021 517834 514627  total = 137.335806 per ms 
03:10:39.629 16  switches: flows:  551841 549454 567117 559932 552238 552944 553001 549057 557312 547738 560147 555333 555601 551659 553203 544483  total = 147.434395 per ms 
03:11:39.747 16  switches: flows:  590612 592748 600763 586962 577282 581104 585723 586308 589170 585767 591637 587858 583309 589171 584873 581764  total = 156.278102 per ms 
03:12:39.848 16  switches: flows:  589915 592063 601033 590104 592508 595448 588384 587395 590724 594241 595585 591707 590326 590956 596345 582469  total = 157.554214 per ms 
03:13:39.951 16  switches: flows:  585722 582226 584098 576868 582797 582729 576972 580309 586086 583134 587441 572300 578567 582304 581196 584569  total = 154.860029 per ms 
03:14:40.053 16  switches: flows:  546827 548795 547214 545896 553234 552459 550334 540817 546460 549800 546448 548154 548372 545543 549037 542687  total = 145.788807 per ms 
03:15:40.155 16  switches: flows:  560844 559415 560400 547818 554280 553023 551538 555183 559743 557946 558083 548398 554321 549591 555210 560255  total = 147.850920 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 137335.81/157554.21/147872.69/49765.16 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.175409" elapsed="0.000362"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-01T03:15:40.175932" elapsed="0.000401"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-01T03:15:40.176723" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-01T03:15:40.176813" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 137335.81/157554.21/147872.69/49765.16 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-01T03:15:40.176494" elapsed="0.000343"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:15:40.177262" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 137335.81/157554.21/147872.69/49765.16 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:15:40.176992" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.179663" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.177433" elapsed="0.002286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.182107" level="INFO">137335.81/157554.21/147872.69/49765.16</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.179877" elapsed="0.002286"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:15:40.184554" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:15:40.182311" elapsed="0.002271"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:15:40.187014" level="INFO">@{result_value_list} = [ 137335.81 | 157554.21 | 147872.69 | 49765.16 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:15:40.184769" elapsed="0.002274"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.187504" level="INFO">Length is 4.</msg>
<msg time="2026-06-01T03:15:40.187601" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-01T03:15:40.187197" elapsed="0.000428"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.192401" level="INFO">min :: 137335.81</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.188053" elapsed="0.004407"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-01T03:15:40.187893" elapsed="0.004602"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.197254" level="INFO">max :: 157554.21</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.192718" elapsed="0.004593"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-01T03:15:40.192587" elapsed="0.004760"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.201949" level="INFO">avg :: 147872.69</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.197563" elapsed="0.004507"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-01T03:15:40.197436" elapsed="0.004684"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.206672" level="INFO">stdev :: 49765.16</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.202341" elapsed="0.004387"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-01T03:15:40.202211" elapsed="0.004552"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-01T03:15:40.187705" elapsed="0.019089"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.210905" level="INFO">${min} = 137335.81</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:15:40.206953" elapsed="0.003979"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.214819" level="INFO">${max} = 157554.21</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:15:40.211100" elapsed="0.003746"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.218720" level="INFO">${average} = 147872.69</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:15:40.215012" elapsed="0.003734"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.222653" level="INFO">${stdev} = 49765.16</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:15:40.218896" elapsed="0.003784"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.223205" level="INFO">${date} = 2026-06-01 03:15:40</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-01T03:15:40.222837" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.223799" level="INFO">CBench Result: 2026-06-01 03:15:40,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,137335.81,157554.21,147872.69,49765.16</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.223390" elapsed="0.000464"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-01T03:15:40.224897" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-01T03:15:40.224486" elapsed="0.000475"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-01T03:15:40.225127" elapsed="0.000461"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-01T03:15:40.223994" elapsed="0.001658"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-06-01T03:05:33.435494" elapsed="606.790218"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.226195" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-01T03:15:40.225863" elapsed="0.000388"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-06-01T03:15:40.226762" elapsed="0.000276"/>
</kw>
<status status="PASS" start="2026-06-01T03:15:40.226462" elapsed="0.000647"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-01T03:05:33.433931" elapsed="606.793217"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.228572" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.228190" elapsed="0.000440"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.229842" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-06-01T03:15:40.229513" elapsed="0.000371"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-06-01T03:15:40.230225" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-06-01T03:15:40.229989" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-01T03:15:40.233220" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-06-01T03:15:40.232954" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-06-01T03:15:40.232935" elapsed="0.000365"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-06-01T03:15:40.233608" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-06-01T03:15:40.233429" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.234323" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.55" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:15:40.233886" elapsed="0.000494"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-06-01T03:15:40.234909" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T03:15:40.234518" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-01T03:15:40.235984" level="INFO">Length is 0.</msg>
<msg time="2026-06-01T03:15:40.236095" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-01T03:15:40.235537" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T03:15:40.236261" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-06-01T03:15:40.237458" level="INFO">Logging into '10.30.170.55:22' as 'jenkins'.</msg>
<msg time="2026-06-01T03:15:40.876180" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Jun  1 03:15:40 UTC 2026

  System load:  0.44               Processes:             105
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.55
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Jun  1 03:05:33 2026 from 10.30.171.225
[?2004h[jenkins@releng-63164-278-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-06-01T03:15:40.237103" elapsed="0.639429"/>
</kw>
<msg time="2026-06-01T03:15:40.876652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T03:15:40.236737" elapsed="0.640031"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-06-01T03:15:40.235163" elapsed="0.641757"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-06-01T03:15:40.877651" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.204 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-06-01T03:25:46.942232" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-06-01T03:25:46.942813" level="INFO">${stdout} = </msg>
<msg time="2026-06-01T03:25:46.942951" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-06-01T03:15:40.877232" elapsed="606.065998"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T03:25:46.943677" elapsed="0.000751"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.945679" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:16:46.034 16  switches: flows:  145904 147930 148225 144765 142792 149626 146938 147147 136088 135059 138169 132873 137265 135140 142880 136489  total = 37.788167 per ms 
03:17:46.135 16  switches: flows:  149130 149988 149514 147497 143954 148978 143511 147975 137914 137054 136732 136068 140171 136919 142026 138426  total = 38.034100 per ms 
03:18:46.235 16  switches: flows:  147996 150831 149546 145831 143386 148018 142419 144922 137685 138218 136848 133629 141085 134941 142322 137698  total = 37.859668 per ms 
03:19:46.336 16  switches: flows:  150646 152357 152143 148634 145524 152547 143845 149179 139908 137629 138924 138746 142515 140001 143694 140633  total = 38.551043 per ms 
03:20:46.436 16  switches: flows:  149809 149907 149369 148089 142245 149702 142317 144985 137359 136738 136350 137416 139852 137967 142077 137084  total = 37.957661 per ms 
03:21:46.536 16  switches: flows:  150795 151004 150987 149190 142888 148372 145313 146474 140189 137580 136550 136892 140630 137358 145529 138013  total = 38.232272 per ms 
03:22:46.637 16  switches: flows:  150176 150315 148819 148803 145182 149395 144711 146893 137408 139204 138779 137473 142441 138109 142320 139644  total = 38.263927 per ms 
03:23:46.737 16  switches: flows:  150263 150961 151084 149251 144997 152462 142615 147326 139545 139590 138594 139008 143406 139233 143917 139028  total = 38.457153 per ms 
03:24:46.837 16  switches: flows:  148516 146275 146603 145190 143704 149571 141265 145944 137047 134966 134156 134513 140767 136872 142504 137765  total = 37.698033 per ms 
03:25:46.937 16  switches: flows:  148582 144149 147852 146266 141654 148672 142376 144564 136914 133925 133740 134050 139312 136111 141434 137362  total = 37.553350 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 37553.35/38551.04/38067.47/12693.13 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.944863" elapsed="0.001210"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-06-01T03:25:46.946566" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-06-01T03:25:46.946264" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-06-01T03:25:46.946213" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-06-01T03:25:46.947072" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-06-01T03:25:46.946954" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-06-01T03:25:46.946918" elapsed="0.000298"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-06-01T03:25:46.947287" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-06-01T03:25:46.950841" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-06-01T03:25:46.951370" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-06-01T03:25:46.951689" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-06-01T03:25:46.947982" elapsed="0.003872"/>
</kw>
<msg time="2026-06-01T03:25:46.951985" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-06-01T03:15:40.230618" elapsed="606.721410"/>
</kw>
<status status="PASS" start="2026-06-01T03:15:40.230308" elapsed="606.721771"/>
</branch>
<status status="PASS" start="2026-06-01T03:15:40.229970" elapsed="606.722132"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.952608" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.204:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.204. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:16:46.034 16  switches: flows:  145904 147930 148225 144765 142792 149626 146938 147147 136088 135059 138169 132873 137265 135140 142880 136489  total = 37.788167 per ms 
03:17:46.135 16  switches: flows:  149130 149988 149514 147497 143954 148978 143511 147975 137914 137054 136732 136068 140171 136919 142026 138426  total = 38.034100 per ms 
03:18:46.235 16  switches: flows:  147996 150831 149546 145831 143386 148018 142419 144922 137685 138218 136848 133629 141085 134941 142322 137698  total = 37.859668 per ms 
03:19:46.336 16  switches: flows:  150646 152357 152143 148634 145524 152547 143845 149179 139908 137629 138924 138746 142515 140001 143694 140633  total = 38.551043 per ms 
03:20:46.436 16  switches: flows:  149809 149907 149369 148089 142245 149702 142317 144985 137359 136738 136350 137416 139852 137967 142077 137084  total = 37.957661 per ms 
03:21:46.536 16  switches: flows:  150795 151004 150987 149190 142888 148372 145313 146474 140189 137580 136550 136892 140630 137358 145529 138013  total = 38.232272 per ms 
03:22:46.637 16  switches: flows:  150176 150315 148819 148803 145182 149395 144711 146893 137408 139204 138779 137473 142441 138109 142320 139644  total = 38.263927 per ms 
03:23:46.737 16  switches: flows:  150263 150961 151084 149251 144997 152462 142615 147326 139545 139590 138594 139008 143406 139233 143917 139028  total = 38.457153 per ms 
03:24:46.837 16  switches: flows:  148516 146275 146603 145190 143704 149571 141265 145944 137047 134966 134156 134513 140767 136872 142504 137765  total = 37.698033 per ms 
03:25:46.937 16  switches: flows:  148582 144149 147852 146266 141654 148672 142376 144564 136914 133925 133740 134050 139312 136111 141434 137362  total = 37.553350 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 37553.35/38551.04/38067.47/12693.13 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.952263" elapsed="0.000421"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-06-01T03:25:46.952830" elapsed="0.000394"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-06-01T03:25:46.953607" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-06-01T03:25:46.953698" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 37553.35/38551.04/38067.47/12693.13 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-06-01T03:25:46.953386" elapsed="0.000337"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:25:46.954174" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 37553.35/38551.04/38067.47/12693.13 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:25:46.953892" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.956699" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.954347" elapsed="0.002410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.959382" level="INFO">37553.35/38551.04/38067.47/12693.13</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.956911" elapsed="0.002528"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:25:46.961914" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:25:46.959594" elapsed="0.002348"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-06-01T03:25:46.964481" level="INFO">@{result_value_list} = [ 37553.35 | 38551.04 | 38067.47 | 12693.13 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-06-01T03:25:46.962179" elapsed="0.002331"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.965034" level="INFO">Length is 4.</msg>
<msg time="2026-06-01T03:25:46.965126" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-06-01T03:25:46.964669" elapsed="0.000481"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.970098" level="INFO">min :: 37553.35</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.965573" elapsed="0.004586"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-06-01T03:25:46.965441" elapsed="0.004766"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.974817" level="INFO">max :: 38551.04</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.970436" elapsed="0.004438"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-06-01T03:25:46.970303" elapsed="0.004606"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.979558" level="INFO">avg :: 38067.47</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.975157" elapsed="0.004458"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-06-01T03:25:46.975027" elapsed="0.004621"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.984383" level="INFO">stdev :: 12693.13</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:46.979919" elapsed="0.004558"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-06-01T03:25:46.979734" elapsed="0.004778"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-06-01T03:25:46.965222" elapsed="0.019321"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.988635" level="INFO">${min} = 37553.35</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:25:46.984705" elapsed="0.003958"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.992630" level="INFO">${max} = 38551.04</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:25:46.988818" elapsed="0.003839"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:25:46.996947" level="INFO">${average} = 38067.47</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:25:46.992809" elapsed="0.004165"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-06-01T03:25:47.000976" level="INFO">${stdev} = 12693.13</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-06-01T03:25:46.997146" elapsed="0.003872"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-06-01T03:25:47.001533" level="INFO">${date} = 2026-06-01 03:25:47</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-06-01T03:25:47.001182" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-06-01T03:25:47.002154" level="INFO">CBench Result: 2026-06-01 03:25:47,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,37553.35,38551.04,38067.47,12693.13</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-06-01T03:25:47.001728" elapsed="0.000482"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-06-01T03:25:47.003395" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-06-01T03:25:47.002870" elapsed="0.000594"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-06-01T03:25:47.003616" elapsed="0.000522"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-06-01T03:25:47.002378" elapsed="0.001828"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-06-01T03:15:40.228935" elapsed="606.775332"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-06-01T03:25:47.004792" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-06-01T03:25:47.004465" elapsed="0.000385"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-06-01T03:25:47.006146" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-06-01T03:25:47.005621" elapsed="0.000554"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-06-01T03:25:47.006418" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-06-01T03:25:47.006257" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-06-01T03:25:47.006235" elapsed="0.000286"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.006672" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.006832" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.006993" elapsed="0.000044"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.007226" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.007380" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.007530" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.007677" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-06-01T03:25:47.007917" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-06-01T03:25:47.007767" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-06-01T03:25:47.007745" elapsed="0.000250"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-06-01T03:25:47.005272" elapsed="0.002794"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-06-01T03:15:40.227623" elapsed="606.780490"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-06-01T02:55:24.028643" elapsed="1822.979938"/>
</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>
