<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-09-25T02:47:17.408339" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-09-25T02:47:17.888575" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-09-25T02:47:17.888450" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-09-25T02:47:17.888420" elapsed="0.000249"/>
</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-09-25T02:47:17.888850" elapsed="0.000457"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-25T02:47:17.889753" level="INFO">Logging into '10.30.171.233:8101' as 'karaf'.</msg>
<msg time="2026-09-25T02:47:18.611247" 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-09-25T02:47:17.889499" elapsed="0.721957"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-25T02:47:18.659514" 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-09-25T02:47:18.611758" elapsed="0.047928"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-25T02:47:18.662163" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-25T02:47:18.662329" 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-09-25T02:47:18.660064" elapsed="0.002307"/>
</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-09-25T02:47:18.662621" elapsed="0.000350"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T02:47:18.663219" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:47:18.664311" 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-09-25T02:47:18.663834" elapsed="0.000569"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-25T02:47:18.664472" elapsed="0.000070"/>
</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.233
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-25T02:47:17.888137" elapsed="0.776547"/>
</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-09-25T02:47:17.886477" elapsed="0.778314"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-25T02:47:18.665511" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-09-25T02:47:18.665044" elapsed="0.000541"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-25T02:47:18.666309" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-09-25T02:47:18.665859" elapsed="0.000527"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-25T02:47:18.667271" 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-09-25T02:47:18.666631" elapsed="0.000678"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-25T02:47:18.668051" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-25T02:47:18.667588" elapsed="0.000537"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-25T02:47:18.668843" 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-09-25T02:47:18.668359" elapsed="0.000519"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-25T02:47:18.669543" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-25T02:47:18.669151" elapsed="0.000448"/>
</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-09-25T02:47:18.670008" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-09-25T02:47:18.669715" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-25T02:47:18.673174" 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-09-25T02:47:18.672635" elapsed="0.000577"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-25T02:47:18.674822" level="INFO">Length is 0.</msg>
<msg time="2026-09-25T02:47:18.674936" 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-09-25T02:47:18.673929" elapsed="0.001041"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-25T02:47:18.675186" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-25T02:47:18.676768" level="INFO">Logging into '10.30.170.94:22' as 'jenkins'.</msg>
<msg time="2026-09-25T02:47:19.200372" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 25 02:46:49 UTC 2026

  System load:  0.14               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.94
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


[?2004h[jenkins@releng-00446-94-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-09-25T02:47:18.676402" elapsed="0.524142"/>
</kw>
<msg time="2026-09-25T02:47:19.200636" 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-09-25T02:47:18.675874" elapsed="0.524877"/>
</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-09-25T02:47:18.673478" elapsed="0.527393"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.210628" 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-09-25T02:47:19.201100" elapsed="0.011209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T02:47:19.212639" elapsed="0.000477"/>
</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-09-25T02:47:18.671866" elapsed="0.541342"/>
</kw>
<status status="PASS" start="2026-09-25T02:47:18.670204" elapsed="0.543056"/>
</branch>
<status status="PASS" start="2026-09-25T02:47:18.669678" elapsed="0.543630"/>
</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-09-25T02:47:19.213544" elapsed="0.000681"/>
</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-09-25T02:47:19.216911" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-09-25T02:47:19.216767" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-09-25T02:47:19.216714" elapsed="0.000341"/>
</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-09-25T02:47:19.219232" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-09-25T02:47:19.219097" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-09-25T02:47:19.219055" elapsed="0.000269"/>
</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-09-25T02:47:19.219554" elapsed="0.000555"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.220653" level="INFO">Logging into '10.30.171.233:8101' as 'karaf'.</msg>
<msg time="2026-09-25T02:47:19.453906" 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-09-25T02:47:19.220359" elapsed="0.233722"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.555619" 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-09-25T02:47:19.454356" elapsed="0.101482"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.567129" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.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-09-25T02:47:19.567450" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.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-09-25T02:47:19.556224" elapsed="0.011272"/>
</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-09-25T02:47:19.567768" elapsed="0.000435"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T02:47:19.568346" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:47:19.569054" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.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-09-25T02:47:19.568709" elapsed="0.000415"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-25T02:47:19.569170" elapsed="0.000052"/>
</return>
<msg time="2026-09-25T02:47:19.569350" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.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.233
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-25T02:47:19.218649" elapsed="0.350730"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-25T02:47:19.569531" elapsed="0.000547"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-25T02:47:19.570138" elapsed="0.000030"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-09-25T02:47:19.216366" elapsed="0.353881"/>
</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-09-25T02:47:19.571884" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-09-25T02:47:19.571767" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-09-25T02:47:19.571742" elapsed="0.000207"/>
</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-09-25T02:47:19.572131" elapsed="0.000358"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.572875" level="INFO">Logging into '10.30.171.233:8101' as 'karaf'.</msg>
<msg time="2026-09-25T02:47:19.725904" 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-09-25T02:47:19.572657" elapsed="0.153413"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.781466" 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-09-25T02:47:19.726352" elapsed="0.055259"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.784277" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-25T02:47:19.784384" 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-09-25T02:47:19.781893" elapsed="0.002519"/>
</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-09-25T02:47:19.784548" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T02:47:19.784941" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:47:19.785617" 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-09-25T02:47:19.785318" elapsed="0.000343"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-25T02:47:19.785707" elapsed="0.000077"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.233
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-25T02:47:19.571466" elapsed="0.214413"/>
</kw>
<status status="PASS" start="2026-09-25T02:47:17.884717" elapsed="1.901218"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:47:19.787780" 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-09-25T02:47:19.786859" elapsed="0.000982"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-25T02:47:19.789189" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-25T02:47:19.788840" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-09-25T02:47:19.789576" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-09-25T02:47:19.789307" elapsed="0.000326"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-25T02:47:19.790752" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-25T02:47:19.790519" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-09-25T02:47:19.790501" elapsed="0.000326"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.791210" 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-09-25T02:47:19.791320" 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-09-25T02:47:19.791004" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:47:19.791851" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.233 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.94" 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-09-25T02:47:19.791513" elapsed="0.000392"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.792498" 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-09-25T02:47:19.792062" elapsed="0.000461"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-25T02:47:19.793410" level="INFO">Length is 0.</msg>
<msg time="2026-09-25T02:47:19.793489" 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-09-25T02:47:19.793062" elapsed="0.000449"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-25T02:47:19.793643" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-25T02:47:19.794751" level="INFO">Logging into '10.30.170.94:22' as 'jenkins'.</msg>
<msg time="2026-09-25T02:47:20.157031" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 25 02:46:49 UTC 2026

  System load:  0.14               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.94
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Fri Sep 25 02:47:19 2026 from 10.30.171.32
[?2004h[jenkins@releng-00446-94-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-09-25T02:47:19.794472" elapsed="0.362782"/>
</kw>
<msg time="2026-09-25T02:47:20.157337" 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-09-25T02:47:19.794113" elapsed="0.363317"/>
</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-09-25T02:47:19.792700" elapsed="0.364848"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-25T02:47:20.158107" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.233 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-25T02:57:26.293000" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-25T02:57:26.293584" level="INFO">${stdout} = </msg>
<msg time="2026-09-25T02:57:26.293673" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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-09-25T02:47:20.157821" elapsed="606.135943"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T02:57:26.294165" elapsed="0.000655"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.295882" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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.233. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:48:25.387 16  switches: flows:  103890 101923 99613 98119 97171 95028 94408 94223 90301 90538 89399 90180 88438 89339 90403 90557  total = 25.058833 per ms 
02:49:25.488 16  switches: flows:  110290 108051 105728 102251 102982 100463 98183 97067 93607 94796 92728 93434 92407 93140 94466 95069  total = 26.200587 per ms 
02:50:25.588 16  switches: flows:  111169 106912 107576 102966 101372 100199 99402 97306 95887 94189 93217 95911 93057 94916 96379 95780  total = 26.393238 per ms 
02:51:25.689 16  switches: flows:  111266 108862 106403 101681 102144 98623 99333 97813 95345 95917 93175 95597 95481 95047 96366 95962  total = 26.439363 per ms 
02:52:25.789 16  switches: flows:  117860 114473 111173 108960 109290 106345 104959 105525 101713 100237 99070 102717 100808 101465 101603 102242  total = 28.093760 per ms 
02:53:25.890 16  switches: flows:  114621 112363 110424 106756 104971 103198 103561 101851 99388 96919 97571 98168 96233 99153 99016 96278  total = 27.295583 per ms 
02:54:25.990 16  switches: flows:  115313 113444 109159 106782 104224 101739 101168 101683 98586 96941 96607 98566 97143 99428 98453 96897  total = 27.223346 per ms 
02:55:26.091 16  switches: flows:  117079 116657 113834 111567 112277 108762 107770 105904 104752 101774 101865 104507 102663 105794 102831 101430  total = 28.610004 per ms 
02:56:26.192 16  switches: flows:  114537 116651 113195 112132 110002 106648 105873 106487 104405 100164 100157 101657 99993 103812 100535 99524  total = 28.215744 per ms 
02:57:26.293 16  switches: flows:  117663 118492 115290 111985 114344 110222 109851 108922 105681 102169 101527 102939 103183 105277 102842 103225  total = 28.845378 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26200.59/28845.38/27479.67/9208.64 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T02:57:26.295258" elapsed="0.000863"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-25T02:57:26.296639" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-09-25T02:57:26.296282" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-09-25T02:57:26.296231" elapsed="0.000677"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-25T02:57:26.297118" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-09-25T02:57:26.297036" elapsed="0.000168"/>
</branch>
<status status="NOT RUN" start="2026-09-25T02:57:26.297001" elapsed="0.000248"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-25T02:57:26.297321" elapsed="0.000027"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-25T02:57:26.299601" elapsed="0.000895"/>
</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-09-25T02:57:26.300917" elapsed="0.000370"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T02:57:26.301594" elapsed="0.000246"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-25T02:57:26.298394" elapsed="0.003558"/>
</kw>
<msg time="2026-09-25T02:57:26.302187" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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-09-25T02:47:19.789997" elapsed="606.512244"/>
</kw>
<status status="PASS" start="2026-09-25T02:47:19.789660" elapsed="606.512677"/>
</branch>
<status status="PASS" start="2026-09-25T02:47:19.789284" elapsed="606.513132"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.303607" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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.233. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:48:25.387 16  switches: flows:  103890 101923 99613 98119 97171 95028 94408 94223 90301 90538 89399 90180 88438 89339 90403 90557  total = 25.058833 per ms 
02:49:25.488 16  switches: flows:  110290 108051 105728 102251 102982 100463 98183 97067 93607 94796 92728 93434 92407 93140 94466 95069  total = 26.200587 per ms 
02:50:25.588 16  switches: flows:  111169 106912 107576 102966 101372 100199 99402 97306 95887 94189 93217 95911 93057 94916 96379 95780  total = 26.393238 per ms 
02:51:25.689 16  switches: flows:  111266 108862 106403 101681 102144 98623 99333 97813 95345 95917 93175 95597 95481 95047 96366 95962  total = 26.439363 per ms 
02:52:25.789 16  switches: flows:  117860 114473 111173 108960 109290 106345 104959 105525 101713 100237 99070 102717 100808 101465 101603 102242  total = 28.093760 per ms 
02:53:25.890 16  switches: flows:  114621 112363 110424 106756 104971 103198 103561 101851 99388 96919 97571 98168 96233 99153 99016 96278  total = 27.295583 per ms 
02:54:25.990 16  switches: flows:  115313 113444 109159 106782 104224 101739 101168 101683 98586 96941 96607 98566 97143 99428 98453 96897  total = 27.223346 per ms 
02:55:26.091 16  switches: flows:  117079 116657 113834 111567 112277 108762 107770 105904 104752 101774 101865 104507 102663 105794 102831 101430  total = 28.610004 per ms 
02:56:26.192 16  switches: flows:  114537 116651 113195 112132 110002 106648 105873 106487 104405 100164 100157 101657 99993 103812 100535 99524  total = 28.215744 per ms 
02:57:26.293 16  switches: flows:  117663 118492 115290 111985 114344 110222 109851 108922 105681 102169 101527 102939 103183 105277 102842 103225  total = 28.845378 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26200.59/28845.38/27479.67/9208.64 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T02:57:26.302851" elapsed="0.001016"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-25T02:57:26.304402" elapsed="0.001208"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-25T02:57:26.306932" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-25T02:57:26.307218" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 26200.59/28845.38/27479.67/9208.64 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-09-25T02:57:26.306227" elapsed="0.001074"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T02:57:26.308636" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 26200.59/28845.38/27479.67/9208.64 | 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-09-25T02:57:26.307893" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.310567" 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-09-25T02:57:26.309404" elapsed="0.001374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.312492" level="INFO">26200.59/28845.38/27479.67/9208.64</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T02:57:26.311405" elapsed="0.001266"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T02:57:26.314287" 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-09-25T02:57:26.313243" elapsed="0.001155"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T02:57:26.316093" level="INFO">@{result_value_list} = [ 26200.59 | 28845.38 | 27479.67 | 9208.64 ]</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-09-25T02:57:26.315086" elapsed="0.001095"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.317792" level="INFO">Length is 4.</msg>
<msg time="2026-09-25T02:57:26.318072" 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-09-25T02:57:26.316712" elapsed="0.001441"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.320928" level="INFO">min :: 26200.59</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T02:57:26.319429" elapsed="0.001663"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-25T02:57:26.318881" elapsed="0.002309"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.323541" level="INFO">max :: 28845.38</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-09-25T02:57:26.322060" elapsed="0.001656"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-25T02:57:26.321474" elapsed="0.002388"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.326184" level="INFO">avg :: 27479.67</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-09-25T02:57:26.324716" elapsed="0.001668"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-25T02:57:26.324119" elapsed="0.002373"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.328851" level="INFO">stdev :: 9208.64</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-09-25T02:57:26.327347" elapsed="0.001665"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-25T02:57:26.326780" elapsed="0.002326"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-25T02:57:26.318345" elapsed="0.010851"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.330560" level="INFO">${min} = 26200.59</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T02:57:26.329746" elapsed="0.000865"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.331705" level="INFO">${max} = 28845.38</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T02:57:26.330939" elapsed="0.000843"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.333146" level="INFO">${average} = 27479.67</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T02:57:26.332070" elapsed="0.001139"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.334604" level="INFO">${stdev} = 9208.64</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T02:57:26.333606" elapsed="0.001058"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.335786" level="INFO">${date} = 2026-09-25 02:57:26</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-25T02:57:26.335135" elapsed="0.000686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.336671" level="INFO">CBench Result: 2026-09-25 02:57:26,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,26200.59,28845.38,27479.67,9208.64</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-09-25T02:57:26.336079" elapsed="0.000685"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-25T02:57:26.338303" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-09-25T02:57:26.337530" elapsed="0.000881"/>
</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-09-25T02:57:26.338852" elapsed="0.000567"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-25T02:57:26.336955" elapsed="0.002547"/>
</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-09-25T02:47:19.788272" elapsed="606.551302"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.340198" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-09-25T02:57:26.339799" elapsed="0.000471"/>
</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-09-25T02:57:26.340978" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-09-25T02:57:26.340550" elapsed="0.000875"/>
</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-09-25T02:47:19.786105" elapsed="606.555383"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.343615" 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-09-25T02:57:26.343150" elapsed="0.000539"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.345289" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-25T02:57:26.344870" elapsed="0.000475"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-09-25T02:57:26.345906" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-09-25T02:57:26.345565" elapsed="0.000419"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-25T02:57:26.347675" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-09-25T02:57:26.347275" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-09-25T02:57:26.347249" elapsed="0.000570"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-25T02:57:26.348375" 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-09-25T02:57:26.348550" 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-09-25T02:57:26.348071" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.349317" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.233 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.94" 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-09-25T02:57:26.348850" elapsed="0.000560"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-25T02:57:26.350101" 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-09-25T02:57:26.349631" elapsed="0.000504"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-25T02:57:26.351292" level="INFO">Length is 0.</msg>
<msg time="2026-09-25T02:57:26.351425" 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-09-25T02:57:26.350893" elapsed="0.000563"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-25T02:57:26.351642" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-25T02:57:26.353165" level="INFO">Logging into '10.30.170.94:22' as 'jenkins'.</msg>
<msg time="2026-09-25T02:57:27.005484" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 25 02:57:26 UTC 2026

  System load:  1.0                Processes:             104
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.94
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Fri Sep 25 02:47:20 2026 from 10.30.171.32
[?2004h[jenkins@releng-00446-94-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-09-25T02:57:26.352801" elapsed="0.652878"/>
</kw>
<msg time="2026-09-25T02:57:27.005778" 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-09-25T02:57:26.352276" elapsed="0.653596"/>
</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-09-25T02:57:26.350397" elapsed="0.655582"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-25T02:57:27.006486" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.233 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-25T03:07:33.101367" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-25T03:07:33.118378" level="INFO">${stdout} = </msg>
<msg time="2026-09-25T03:07:33.118591" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.233: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-09-25T02:57:27.006216" elapsed="606.113566"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T03:07:33.128596" elapsed="0.003942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.136073" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.233: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.233. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:58:32.153 16  switches: flows:  615485 619403 613297 613341 608605 613039 612068 610583 605670 605263 608232 609018 622617 609886 617902 612920  total = 163.288817 per ms 
02:59:32.256 16  switches: flows:  650874 657445 672761 661269 657905 655057 652546 651191 656679 651764 666758 658252 661816 662080 653562 665150  total = 175.289769 per ms 
03:00:32.359 16  switches: flows:  616880 610671 608553 616139 612250 613574 613968 611460 614050 614895 613350 608737 609278 613341 612358 619800  total = 163.207495 per ms 
03:01:32.462 16  switches: flows:  648455 651648 655226 646366 647444 644781 643573 648410 662357 654727 649747 642223 651699 647021 648073 644961  total = 172.822539 per ms 
03:02:32.565 16  switches: flows:  568995 570576 568819 561583 568159 567867 571978 570550 566213 568391 561727 566870 567748 567942 574113 568428  total = 151.243793 per ms 
03:03:32.665 16  switches: flows:  591864 585079 589242 596280 594029 592852 591109 594163 591206 599601 587759 596599 592633 589013 596491 593007  total = 157.750944 per ms 
03:04:32.768 16  switches: flows:  652630 655990 663683 661060 654200 652049 649265 661019 647485 654710 662536 654632 653263 655696 655646 662372  total = 174.639904 per ms 
03:05:32.869 16  switches: flows:  625314 615632 628695 619141 609173 610183 614150 613515 625719 619664 630220 625396 618840 616335 623480 622463  total = 165.021406 per ms 
03:06:32.971 16  switches: flows:  694586 683415 699798 695603 676843 692510 687681 671627 685576 682299 694647 703810 689582 688575 692602 684142  total = 183.408976 per ms 
03:07:33.073 16  switches: flows:  664574 662672 683108 675142 661884 660574 666652 671031 667600 664307 669944 678281 672384 670871 666204 658888  total = 177.935022 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 151243.79/183408.98/169035.54/57191.34 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:07:33.134530" elapsed="0.003795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-25T03:07:33.139281" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-09-25T03:07:33.138518" elapsed="0.000876"/>
</branch>
<status status="PASS" start="2026-09-25T03:07:33.138464" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-25T03:07:33.139551" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-09-25T03:07:33.139503" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-09-25T03:07:33.139482" elapsed="0.000149"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-25T03:07:33.139670" elapsed="0.000017"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-25T03:07:33.141907" elapsed="0.000998"/>
</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-09-25T03:07:33.143157" elapsed="0.000319"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T03:07:33.143654" elapsed="0.000493"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-25T03:07:33.141195" elapsed="0.003030"/>
</kw>
<msg time="2026-09-25T03:07:33.144398" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.233: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-09-25T02:57:26.346475" elapsed="606.797959"/>
</kw>
<status status="PASS" start="2026-09-25T02:57:26.346020" elapsed="606.798474"/>
</branch>
<status status="PASS" start="2026-09-25T02:57:26.345529" elapsed="606.799011"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.145289" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.233: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.233. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:58:32.153 16  switches: flows:  615485 619403 613297 613341 608605 613039 612068 610583 605670 605263 608232 609018 622617 609886 617902 612920  total = 163.288817 per ms 
02:59:32.256 16  switches: flows:  650874 657445 672761 661269 657905 655057 652546 651191 656679 651764 666758 658252 661816 662080 653562 665150  total = 175.289769 per ms 
03:00:32.359 16  switches: flows:  616880 610671 608553 616139 612250 613574 613968 611460 614050 614895 613350 608737 609278 613341 612358 619800  total = 163.207495 per ms 
03:01:32.462 16  switches: flows:  648455 651648 655226 646366 647444 644781 643573 648410 662357 654727 649747 642223 651699 647021 648073 644961  total = 172.822539 per ms 
03:02:32.565 16  switches: flows:  568995 570576 568819 561583 568159 567867 571978 570550 566213 568391 561727 566870 567748 567942 574113 568428  total = 151.243793 per ms 
03:03:32.665 16  switches: flows:  591864 585079 589242 596280 594029 592852 591109 594163 591206 599601 587759 596599 592633 589013 596491 593007  total = 157.750944 per ms 
03:04:32.768 16  switches: flows:  652630 655990 663683 661060 654200 652049 649265 661019 647485 654710 662536 654632 653263 655696 655646 662372  total = 174.639904 per ms 
03:05:32.869 16  switches: flows:  625314 615632 628695 619141 609173 610183 614150 613515 625719 619664 630220 625396 618840 616335 623480 622463  total = 165.021406 per ms 
03:06:32.971 16  switches: flows:  694586 683415 699798 695603 676843 692510 687681 671627 685576 682299 694647 703810 689582 688575 692602 684142  total = 183.408976 per ms 
03:07:33.073 16  switches: flows:  664574 662672 683108 675142 661884 660574 666652 671031 667600 664307 669944 678281 672384 670871 666204 658888  total = 177.935022 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 151243.79/183408.98/169035.54/57191.34 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:07:33.144867" elapsed="0.000523"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-25T03:07:33.145612" elapsed="0.001401"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-25T03:07:33.148055" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-25T03:07:33.148190" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 151243.79/183408.98/169035.54/57191.34 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-09-25T03:07:33.147275" elapsed="0.000948"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T03:07:33.148788" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 151243.79/183408.98/169035.54/57191.34 | 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-09-25T03:07:33.148460" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.149572" 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-09-25T03:07:33.149090" elapsed="0.000552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.150379" level="INFO">151243.79/183408.98/169035.54/57191.34</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:07:33.149939" elapsed="0.000510"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T03:07:33.151071" 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-09-25T03:07:33.150659" elapsed="0.000447"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T03:07:33.151865" level="INFO">@{result_value_list} = [ 151243.79 | 183408.98 | 169035.54 | 57191.34 ]</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-09-25T03:07:33.151428" elapsed="0.000473"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.152530" level="INFO">Length is 4.</msg>
<msg time="2026-09-25T03:07:33.152638" 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-09-25T03:07:33.152118" elapsed="0.000550"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.153886" level="INFO">min :: 151243.79</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-09-25T03:07:33.153282" elapsed="0.000673"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-25T03:07:33.153022" elapsed="0.000975"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.154936" level="INFO">max :: 183408.98</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:07:33.154361" elapsed="0.000643"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-25T03:07:33.154106" elapsed="0.000940"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.155988" level="INFO">avg :: 169035.54</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:07:33.155412" elapsed="0.000645"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-25T03:07:33.155158" elapsed="0.000940"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.157023" level="INFO">stdev :: 57191.34</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-09-25T03:07:33.156461" elapsed="0.000631"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-25T03:07:33.156204" elapsed="0.000929"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-25T03:07:33.152788" elapsed="0.004382"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.157941" level="INFO">${min} = 151243.79</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:07:33.157408" elapsed="0.000566"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.158710" level="INFO">${max} = 183408.98</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:07:33.158185" elapsed="0.000578"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.159486" level="INFO">${average} = 169035.54</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:07:33.158969" elapsed="0.000549"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.160262" level="INFO">${stdev} = 57191.34</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:07:33.159719" elapsed="0.000577"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.161039" level="INFO">${date} = 2026-09-25 03:07: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-09-25T03:07:33.160554" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.161796" level="INFO">CBench Result: 2026-09-25 03:07:33,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,151243.79,183408.98,169035.54,57191.34</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-09-25T03:07:33.161351" elapsed="0.000516"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-25T03:07:33.162847" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-09-25T03:07:33.162480" elapsed="0.000428"/>
</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-09-25T03:07:33.163065" elapsed="0.001084"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-25T03:07:33.162042" elapsed="0.002170"/>
</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-09-25T02:57:26.344159" elapsed="606.820118"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.164710" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-09-25T03:07:33.164419" elapsed="0.000358"/>
</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-09-25T03:07:33.165283" elapsed="0.000245"/>
</kw>
<status status="PASS" start="2026-09-25T03:07:33.164973" elapsed="0.000617"/>
</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-09-25T02:57:26.342332" elapsed="606.823752"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.168134" 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-09-25T03:07:33.167690" elapsed="0.000504"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.169343" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-25T03:07:33.169017" elapsed="0.000365"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-09-25T03:07:33.169833" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-09-25T03:07:33.169547" elapsed="0.000348"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-25T03:07:33.170940" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-25T03:07:33.170708" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-09-25T03:07:33.170690" elapsed="0.000321"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-25T03:07:33.171407" 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-09-25T03:07:33.171579" 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-09-25T03:07:33.171198" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.172141" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.233 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.94" 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-09-25T03:07:33.171820" elapsed="0.000374"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-25T03:07:33.172702" 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-09-25T03:07:33.172371" elapsed="0.000369"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-25T03:07:33.173575" level="INFO">Length is 0.</msg>
<msg time="2026-09-25T03:07:33.173655" 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-09-25T03:07:33.173276" elapsed="0.000402"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-25T03:07:33.173843" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-25T03:07:33.175173" level="INFO">Logging into '10.30.170.94:22' as 'jenkins'.</msg>
<msg time="2026-09-25T03:07:33.827952" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 25 03:07:33 UTC 2026

  System load:  0.39               Processes:             104
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.94
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Fri Sep 25 02:57:26 2026 from 10.30.171.32
[?2004h[jenkins@releng-00446-94-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-09-25T03:07:33.174860" elapsed="0.653406"/>
</kw>
<msg time="2026-09-25T03:07:33.828390" 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-09-25T03:07:33.174300" elapsed="0.654203"/>
</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-09-25T03:07:33.172917" elapsed="0.655940"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-25T03:07:33.829551" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.233 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-25T03:17:39.854524" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-25T03:17:39.855912" level="INFO">${stdout} = </msg>
<msg time="2026-09-25T03:17:39.856033" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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-09-25T03:07:33.829189" elapsed="606.026921"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T03:17:39.858346" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.860528" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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.233. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:08:38.955 16  switches: flows:  123503 120760 118444 117655 117657 113982 113793 113218 106175 107998 106147 106594 106741 107473 108261 107436  total = 29.930617 per ms 
03:09:39.055 16  switches: flows:  121057 121706 116496 115014 116005 113820 114339 113747 107484 106283 106011 106086 107762 105457 109846 105206  total = 29.722386 per ms 
03:10:39.156 16  switches: flows:  122508 125244 118453 117387 116483 116524 118302 115976 106594 106854 106559 106151 107886 106339 108586 107072  total = 30.065076 per ms 
03:11:39.256 16  switches: flows:  124582 122621 117960 115712 115877 116393 116767 114089 108262 105371 106923 106807 107864 105897 107144 105574  total = 29.914090 per ms 
03:12:39.356 16  switches: flows:  123028 123871 119408 117269 116651 116306 117076 114706 107494 106453 108265 107208 108069 107078 108208 105367  total = 30.057450 per ms 
03:13:39.457 16  switches: flows:  120953 121748 118430 115263 114884 114709 115564 113948 106684 105668 105330 105002 106319 104862 105769 106520  total = 29.644708 per ms 
03:14:39.557 16  switches: flows:  123140 125941 118623 115859 117128 114791 117422 115169 105815 108082 106293 106116 107795 107360 107722 108219  total = 30.041062 per ms 
03:15:39.657 16  switches: flows:  118769 120129 113033 111689 112465 112601 112700 108932 102077 103493 103122 103391 102822 103446 102651 101385  total = 28.830281 per ms 
03:16:39.758 16  switches: flows:  124223 121340 118653 115295 115291 115860 117434 115342 106835 106763 107379 105804 107440 106424 107358 107117  total = 29.926026 per ms 
03:17:39.858 16  switches: flows:  123286 118893 118086 115600 115574 115188 115484 113588 107160 102919 106183 105704 106542 104731 105964 106004  total = 29.632299 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28830.28/30065.08/29759.26/9926.51 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:17:39.859763" elapsed="0.002220"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-25T03:17:39.862445" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-09-25T03:17:39.862168" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-09-25T03:17:39.862117" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-25T03:17:39.862859" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-09-25T03:17:39.862786" elapsed="0.000154"/>
</branch>
<status status="NOT RUN" start="2026-09-25T03:17:39.862752" elapsed="0.000251"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-25T03:17:39.863064" elapsed="0.000027"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-25T03:17:39.864800" elapsed="0.000711"/>
</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-09-25T03:17:39.865915" elapsed="0.000383"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-25T03:17:39.866576" elapsed="0.000230"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-25T03:17:39.863809" elapsed="0.003104"/>
</kw>
<msg time="2026-09-25T03:17:39.867160" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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-09-25T03:07:33.170214" elapsed="606.697001"/>
</kw>
<status status="PASS" start="2026-09-25T03:07:33.169920" elapsed="606.697392"/>
</branch>
<status status="PASS" start="2026-09-25T03:07:33.169521" elapsed="606.697837"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.868414" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.233: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.233. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:08:38.955 16  switches: flows:  123503 120760 118444 117655 117657 113982 113793 113218 106175 107998 106147 106594 106741 107473 108261 107436  total = 29.930617 per ms 
03:09:39.055 16  switches: flows:  121057 121706 116496 115014 116005 113820 114339 113747 107484 106283 106011 106086 107762 105457 109846 105206  total = 29.722386 per ms 
03:10:39.156 16  switches: flows:  122508 125244 118453 117387 116483 116524 118302 115976 106594 106854 106559 106151 107886 106339 108586 107072  total = 30.065076 per ms 
03:11:39.256 16  switches: flows:  124582 122621 117960 115712 115877 116393 116767 114089 108262 105371 106923 106807 107864 105897 107144 105574  total = 29.914090 per ms 
03:12:39.356 16  switches: flows:  123028 123871 119408 117269 116651 116306 117076 114706 107494 106453 108265 107208 108069 107078 108208 105367  total = 30.057450 per ms 
03:13:39.457 16  switches: flows:  120953 121748 118430 115263 114884 114709 115564 113948 106684 105668 105330 105002 106319 104862 105769 106520  total = 29.644708 per ms 
03:14:39.557 16  switches: flows:  123140 125941 118623 115859 117128 114791 117422 115169 105815 108082 106293 106116 107795 107360 107722 108219  total = 30.041062 per ms 
03:15:39.657 16  switches: flows:  118769 120129 113033 111689 112465 112601 112700 108932 102077 103493 103122 103391 102822 103446 102651 101385  total = 28.830281 per ms 
03:16:39.758 16  switches: flows:  124223 121340 118653 115295 115291 115860 117434 115342 106835 106763 107379 105804 107440 106424 107358 107117  total = 29.926026 per ms 
03:17:39.858 16  switches: flows:  123286 118893 118086 115600 115574 115188 115484 113588 107160 102919 106183 105704 106542 104731 105964 106004  total = 29.632299 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28830.28/30065.08/29759.26/9926.51 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:17:39.867801" elapsed="0.000770"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-25T03:17:39.868940" elapsed="0.000752"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-25T03:17:39.870532" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-25T03:17:39.870711" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28830.28/30065.08/29759.26/9926.51 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-09-25T03:17:39.870108" elapsed="0.000680"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T03:17:39.871642" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28830.28/30065.08/29759.26/9926.51 | 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-09-25T03:17:39.871151" elapsed="0.000545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.872847" 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-09-25T03:17:39.872148" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.874070" level="INFO">28830.28/30065.08/29759.26/9926.51</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:17:39.873367" elapsed="0.000811"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T03:17:39.875167" 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-09-25T03:17:39.874507" elapsed="0.000713"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-25T03:17:39.876280" level="INFO">@{result_value_list} = [ 28830.28 | 30065.08 | 29759.26 | 9926.51 ]</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-09-25T03:17:39.875628" elapsed="0.000706"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.877300" level="INFO">Length is 4.</msg>
<msg time="2026-09-25T03:17:39.877469" 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-09-25T03:17:39.876662" elapsed="0.000853"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.879298" level="INFO">min :: 28830.28</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:17:39.878381" elapsed="0.001026"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-25T03:17:39.878021" elapsed="0.001452"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.880920" level="INFO">max :: 30065.08</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:17:39.880040" elapsed="0.001011"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-25T03:17:39.879638" elapsed="0.001478"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.882515" level="INFO">avg :: 29759.26</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:17:39.881624" elapsed="0.000997"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-25T03:17:39.881274" elapsed="0.001412"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.884164" level="INFO">stdev :: 9926.51</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-25T03:17:39.883250" elapsed="0.001021"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-25T03:17:39.882875" elapsed="0.001460"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-25T03:17:39.877639" elapsed="0.006753"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.885579" level="INFO">${min} = 28830.28</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:17:39.884751" elapsed="0.000880"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.886904" level="INFO">${max} = 30065.08</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:17:39.885999" elapsed="0.000986"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.888260" level="INFO">${average} = 29759.26</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:17:39.887334" elapsed="0.000983"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.889566" level="INFO">${stdev} = 9926.51</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-25T03:17:39.888660" elapsed="0.000962"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.891015" level="INFO">${date} = 2026-09-25 03:17:39</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-25T03:17:39.890107" elapsed="0.000967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.892270" level="INFO">CBench Result: 2026-09-25 03:17:39,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28830.28,30065.08,29759.26,9926.51</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-09-25T03:17:39.891512" elapsed="0.000828"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-25T03:17:39.894651" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-09-25T03:17:39.893071" elapsed="0.001811"/>
</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-09-25T03:17:39.895211" elapsed="0.000661"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-25T03:17:39.892505" elapsed="0.003475"/>
</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-09-25T03:07:33.168525" elapsed="606.727534"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.896901" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-09-25T03:17:39.896270" elapsed="0.000720"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-25T03:17:39.899195" 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-09-25T03:17:39.898542" elapsed="0.000689"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-09-25T03:17:39.899512" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-09-25T03:17:39.899339" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-09-25T03:17:39.899306" elapsed="0.000356"/>
</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-09-25T03:17:39.899891" elapsed="0.000028"/>
</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-09-25T03:17:39.900118" elapsed="0.000026"/>
</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-09-25T03:17:39.900348" elapsed="0.000025"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-09-25T03:17:39.900628" elapsed="0.000026"/>
</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-09-25T03:17:39.900875" elapsed="0.000026"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="NOT RUN" start="2026-09-25T03:17:39.901122" elapsed="0.000028"/>
</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-09-25T03:17:39.901379" elapsed="0.000025"/>
</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 The given `tags` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-09-25T03:17:39.901743" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-09-25T03:17:39.901493" elapsed="0.000341"/>
</branch>
<status status="NOT RUN" start="2026-09-25T03:17:39.901459" elapsed="0.000416"/>
</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-09-25T03:17:39.898039" elapsed="0.003941"/>
</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-09-25T03:07:33.167075" elapsed="606.735000"/>
</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-09-25T02:47:17.409985" elapsed="1822.493565"/>
</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>
