<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-08-04T03:03:13.804444" 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-08-04T03:03:14.354851" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-08-04T03:03:14.354691" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-08-04T03:03:14.354660" elapsed="0.000295"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:03:14.355102" elapsed="0.000550"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-04T03:03:14.356146" level="INFO">Logging into '10.30.171.182:8101' as 'karaf'.</msg>
<msg time="2026-08-04T03:03:15.263099" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-04T03:03:14.355844" elapsed="0.907437"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-04T03:03:15.313071" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-04T03:03:15.263565" elapsed="0.049578"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-04T03:03:15.315043" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-04T03:03:15.315160" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-04T03:03:15.313310" elapsed="0.001881"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-04T03:03:15.315351" elapsed="0.000209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:03:15.315738" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:03:15.316479" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:03:15.316130" elapsed="0.000404"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-04T03:03:15.316591" elapsed="0.000057"/>
</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.182
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-04T03:03:14.354301" elapsed="0.962495"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-08-04T03:03:14.350619" elapsed="0.966240"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-04T03:03:15.317434" 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-08-04T03:03:15.317048" elapsed="0.000445"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-04T03:03:15.317918" 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-08-04T03:03:15.317650" elapsed="0.000353"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-04T03:03:15.318558" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-04T03:03:15.318161" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-04T03:03:15.319122" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-04T03:03:15.318780" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-04T03:03:15.319739" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-04T03:03:15.319316" elapsed="0.000452"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-04T03:03:15.320247" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-04T03:03:15.319932" elapsed="0.000358"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-08-04T03:03:15.320596" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:03:15.320377" elapsed="0.000274"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-04T03:03:15.325044" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:03:15.324616" elapsed="0.000455"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-04T03:03:15.326473" level="INFO">Length is 0.</msg>
<msg time="2026-08-04T03:03:15.326563" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-04T03:03:15.325630" elapsed="0.000958"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:03:15.326761" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-04T03:03:15.328158" level="INFO">Logging into '10.30.171.172:22' as 'jenkins'.</msg>
<msg time="2026-08-04T03:03:16.073081" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Aug  4 03:03:15 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-00446-46-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-04T03:03:15.327631" elapsed="0.745610"/>
</kw>
<msg time="2026-08-04T03:03:16.073333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:03:15.327278" elapsed="0.746150"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-04T03:03:15.325280" elapsed="0.748275"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.081475" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-08-04T03:03:16.073787" elapsed="0.009263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:03:16.083248" elapsed="0.000279"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-08-04T03:03:15.324085" elapsed="0.759508"/>
</kw>
<status status="PASS" start="2026-08-04T03:03:15.320757" elapsed="0.762880"/>
</branch>
<status status="PASS" start="2026-08-04T03:03:15.320351" elapsed="0.763320"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-04T03:03:16.083850" elapsed="0.000496"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-04T03:03:16.092884" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-08-04T03:03:16.092586" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-08-04T03:03:16.092536" elapsed="0.000551"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-04T03:03:16.099303" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-08-04T03:03:16.099187" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-08-04T03:03:16.099168" elapsed="0.000206"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:03:16.099511" elapsed="0.000470"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.100396" level="INFO">Logging into '10.30.171.182:8101' as 'karaf'.</msg>
<msg time="2026-08-04T03:03:16.292572" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-04T03:03:16.100130" elapsed="0.192606"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.389443" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-04T03:03:16.293037" elapsed="0.096490"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.396648" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-04T03:03:16.396917" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-04T03:03:16.389731" elapsed="0.007219"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-04T03:03:16.397099" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:03:16.397456" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:03:16.398210" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:03:16.397883" elapsed="0.000384"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-04T03:03:16.398320" elapsed="0.000052"/>
</return>
<msg time="2026-08-04T03:03:16.398524" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            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.182
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-04T03:03:16.098824" elapsed="0.299733"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-04T03:03:16.398726" elapsed="0.000523"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-04T03:03:16.399310" elapsed="0.000034"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-08-04T03:03:16.091932" elapsed="0.307516"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-04T03:03:16.403216" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-08-04T03:03:16.403077" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-08-04T03:03:16.403052" elapsed="0.000252"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:03:16.403475" elapsed="0.000493"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.404569" level="INFO">Logging into '10.30.171.182:8101' as 'karaf'.</msg>
<msg time="2026-08-04T03:03:16.585588" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-04T03:03:16.404121" elapsed="0.181561"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.611366" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-04T03:03:16.585868" elapsed="0.025559"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.613414" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-04T03:03:16.613519" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-04T03:03:16.611575" elapsed="0.001973"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-04T03:03:16.613688" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:03:16.614035" elapsed="0.000186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:03:16.614648" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:03:16.614363" elapsed="0.000358"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-04T03:03:16.614773" elapsed="0.000044"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.182
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-04T03:03:16.402741" elapsed="0.212185"/>
</kw>
<status status="PASS" start="2026-08-04T03:03:14.348612" elapsed="2.266374"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:03:16.616977" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:03:16.615830" elapsed="0.001214"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-04T03:03:16.618556" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-04T03:03:16.618206" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-04T03:03:16.618935" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:03:16.618678" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-04T03:03:16.622010" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:03:16.621758" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-08-04T03:03:16.621738" elapsed="0.000355"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.622426" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-04T03:03:16.622225" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:03:16.623154" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.172" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:03:16.622728" elapsed="0.000487"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.623865" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:03:16.623357" elapsed="0.000536"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-04T03:03:16.624907" level="INFO">Length is 0.</msg>
<msg time="2026-08-04T03:03:16.625000" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-04T03:03:16.624520" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:03:16.625171" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.626386" level="INFO">Logging into '10.30.171.172:22' as 'jenkins'.</msg>
<msg time="2026-08-04T03:03:16.986685" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Aug  4 03:03:15 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Aug  4 03:03:15 2026 from 10.30.171.25
[?2004h[jenkins@releng-00446-46-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-04T03:03:16.626028" elapsed="0.360850"/>
</kw>
<msg time="2026-08-04T03:03:16.986966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:03:16.625663" elapsed="0.361391"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-04T03:03:16.624100" elapsed="0.363077"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-04T03:03:16.987758" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-04T03:13:23.120236" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-04T03:13:23.120859" level="INFO">${stdout} = </msg>
<msg time="2026-08-04T03:13:23.120972" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-04T03:03:16.987418" elapsed="606.133644"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:13:23.121658" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.123773" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182: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.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:04:22.205 16  switches: flows:  107587 107992 108124 107605 109400 109023 105982 107300 107429 106415 104512 104804 106328 105374 103727 103444  total = 28.417433 per ms 
03:05:22.317 16  switches: flows:  120302 118965 120480 120910 119552 118646 119878 120355 118509 117346 116018 114914 116780 113817 115359 113496  total = 31.363449 per ms 
03:06:22.418 16  switches: flows:  120476 116895 118312 118927 116236 117666 116296 116801 115323 115574 113875 111426 114737 113712 115213 114003  total = 30.872962 per ms 
03:07:22.518 16  switches: flows:  122993 120663 122563 124032 122951 121593 120505 120551 118165 118962 117818 116673 119944 116148 120289 118387  total = 31.983857 per ms 
03:08:22.618 16  switches: flows:  123652 121548 123533 123050 120748 123341 121449 121132 118071 119077 118864 118283 118505 117694 121123 118485  total = 32.088988 per ms 
03:09:22.718 16  switches: flows:  118081 116559 117287 115647 115104 117187 115194 115992 113207 115394 113787 113272 114116 111874 114636 113063  total = 30.622188 per ms 
03:10:22.819 16  switches: flows:  125736 124790 123335 122630 124950 124891 121900 121595 118850 121130 120031 119857 119694 118138 122023 118754  total = 32.417607 per ms 
03:11:22.919 16  switches: flows:  125459 124976 123902 122357 126135 124467 121253 122729 119113 120501 120112 120264 117093 118003 121441 118893  total = 32.390902 per ms 
03:12:23.019 16  switches: flows:  119283 119071 118034 117218 119084 119085 118166 116994 114947 113529 115540 113927 111451 113388 114891 111627  total = 30.885711 per ms 
03:13:23.119 16  switches: flows:  129982 125840 126056 125875 126762 126536 125375 126732 123687 120626 120686 120190 119350 121262 119348 118713  total = 32.895433 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30622.19/32895.43/31724.57/10602.50 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.122904" elapsed="0.001227"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-04T03:13:23.124649" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-08-04T03:13:23.124335" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-08-04T03:13:23.124267" elapsed="0.000651"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-04T03:13:23.125135" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-08-04T03:13:23.125051" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-08-04T03:13:23.125015" elapsed="0.000258"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-04T03:13:23.125347" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:13:23.129349" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:13:23.129855" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:13:23.130158" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-04T03:13:23.126108" elapsed="0.004205"/>
</kw>
<msg time="2026-08-04T03:13:23.130443" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-04T03:03:16.619344" elapsed="606.511127"/>
</kw>
<status status="PASS" start="2026-08-04T03:03:16.619023" elapsed="606.511499"/>
</branch>
<status status="PASS" start="2026-08-04T03:03:16.618656" elapsed="606.511890"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.131001" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182: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.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:04:22.205 16  switches: flows:  107587 107992 108124 107605 109400 109023 105982 107300 107429 106415 104512 104804 106328 105374 103727 103444  total = 28.417433 per ms 
03:05:22.317 16  switches: flows:  120302 118965 120480 120910 119552 118646 119878 120355 118509 117346 116018 114914 116780 113817 115359 113496  total = 31.363449 per ms 
03:06:22.418 16  switches: flows:  120476 116895 118312 118927 116236 117666 116296 116801 115323 115574 113875 111426 114737 113712 115213 114003  total = 30.872962 per ms 
03:07:22.518 16  switches: flows:  122993 120663 122563 124032 122951 121593 120505 120551 118165 118962 117818 116673 119944 116148 120289 118387  total = 31.983857 per ms 
03:08:22.618 16  switches: flows:  123652 121548 123533 123050 120748 123341 121449 121132 118071 119077 118864 118283 118505 117694 121123 118485  total = 32.088988 per ms 
03:09:22.718 16  switches: flows:  118081 116559 117287 115647 115104 117187 115194 115992 113207 115394 113787 113272 114116 111874 114636 113063  total = 30.622188 per ms 
03:10:22.819 16  switches: flows:  125736 124790 123335 122630 124950 124891 121900 121595 118850 121130 120031 119857 119694 118138 122023 118754  total = 32.417607 per ms 
03:11:22.919 16  switches: flows:  125459 124976 123902 122357 126135 124467 121253 122729 119113 120501 120112 120264 117093 118003 121441 118893  total = 32.390902 per ms 
03:12:23.019 16  switches: flows:  119283 119071 118034 117218 119084 119085 118166 116994 114947 113529 115540 113927 111451 113388 114891 111627  total = 30.885711 per ms 
03:13:23.119 16  switches: flows:  129982 125840 126056 125875 126762 126536 125375 126732 123687 120626 120686 120190 119350 121262 119348 118713  total = 32.895433 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30622.19/32895.43/31724.57/10602.50 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.130688" elapsed="0.000388"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-04T03:13:23.131228" elapsed="0.000405"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-04T03:13:23.132098" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-04T03:13:23.132202" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30622.19/32895.43/31724.57/10602.50 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-04T03:13:23.131859" elapsed="0.000368"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:13:23.132646" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30622.19/32895.43/31724.57/10602.50 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:13:23.132386" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.135106" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.132839" elapsed="0.002325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.137599" level="INFO">30622.19/32895.43/31724.57/10602.50</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.135312" elapsed="0.002345"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:13:23.140115" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:13:23.137830" elapsed="0.002313"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:13:23.142584" level="INFO">@{result_value_list} = [ 30622.19 | 32895.43 | 31724.57 | 10602.50 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:13:23.140364" elapsed="0.002248"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.143106" level="INFO">Length is 4.</msg>
<msg time="2026-08-04T03:13:23.143197" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-04T03:13:23.142783" elapsed="0.000438"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.148057" level="INFO">min :: 30622.19</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.143667" elapsed="0.004448"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-04T03:13:23.143503" elapsed="0.004648"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.152738" level="INFO">max :: 32895.43</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.148374" elapsed="0.004422"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-04T03:13:23.148245" elapsed="0.004587"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.157471" level="INFO">avg :: 31724.57</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.153053" elapsed="0.004476"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-04T03:13:23.152923" elapsed="0.004641"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.162220" level="INFO">stdev :: 10602.50</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.157802" elapsed="0.004476"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-04T03:13:23.157658" elapsed="0.004657"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-04T03:13:23.143291" elapsed="0.019058"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.166473" level="INFO">${min} = 30622.19</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:13:23.162514" elapsed="0.003987"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.170588" level="INFO">${max} = 32895.43</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:13:23.166662" elapsed="0.003953"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.174825" level="INFO">${average} = 31724.57</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:13:23.170784" elapsed="0.004068"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.178887" level="INFO">${stdev} = 10602.50</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:13:23.175008" elapsed="0.003906"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.179459" level="INFO">${date} = 2026-08-04 03:13:23</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-04T03:13:23.179076" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.180145" level="INFO">CBench Result: 2026-08-04 03:13:23,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30622.19,32895.43,31724.57,10602.50</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.179679" elapsed="0.000523"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-04T03:13:23.181262" 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-08-04T03:13:23.180857" elapsed="0.000472"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-04T03:13:23.181481" elapsed="0.000482"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-04T03:13:23.180359" elapsed="0.001669"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-08-04T03:03:16.617547" elapsed="606.564542"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.182556" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-04T03:13:23.182242" elapsed="0.000370"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-04T03:13:23.183150" elapsed="0.000269"/>
</kw>
<status status="PASS" start="2026-08-04T03:13:23.182845" elapsed="0.000677"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-04T03:03:16.615133" elapsed="606.568449"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.185068" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.184663" elapsed="0.000462"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.186859" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-04T03:13:23.186357" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-04T03:13:23.187367" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:13:23.187079" elapsed="0.000376"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-04T03:13:23.191277" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:13:23.190949" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-08-04T03:13:23.190921" elapsed="0.000442"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-04T03:13:23.191798" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-04T03:13:23.191552" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.192546" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.182 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.172" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:13:23.192108" elapsed="0.000498"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-04T03:13:23.193167" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:13:23.192765" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-04T03:13:23.194113" level="INFO">Length is 0.</msg>
<msg time="2026-08-04T03:13:23.194203" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-04T03:13:23.193789" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:13:23.194369" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-04T03:13:23.195581" level="INFO">Logging into '10.30.171.172:22' as 'jenkins'.</msg>
<msg time="2026-08-04T03:13:23.762191" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Aug  4 03:13:23 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Aug  4 03:03:16 2026 from 10.30.171.25
[?2004h[jenkins@releng-00446-46-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-04T03:13:23.195210" elapsed="0.567232"/>
</kw>
<msg time="2026-08-04T03:13:23.762537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:13:23.194864" elapsed="0.567767"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-04T03:13:23.193400" elapsed="0.569367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-04T03:13:23.763365" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.182 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-04T03:23:32.389496" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-04T03:23:32.390071" level="INFO">${stdout} = </msg>
<msg time="2026-08-04T03:23:32.390179" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-04T03:13:23.763024" elapsed="608.627225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:23:32.390764" elapsed="0.000709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.392598" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.182: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.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:14:29.072 16  switches: flows:  492214 474936 493126 496767 478691 483537 487750 477731 469054 474360 470154 465852 476973 478099 475004 470662  total = 127.748500 per ms 
03:15:29.174 16  switches: flows:  572620 573454 582344 565651 566249 573100 573538 565269 564221 564595 564576 570195 576729 569674 564159 568886  total = 151.664407 per ms 
03:16:29.314 16  switches: flows:  549208 549779 538451 549987 526124 546016 535763 532411 517122 494533 534605 534571 537560 535220 529630 539224  total = 142.172193 per ms 
03:17:29.415 16  switches: flows:  536114 527291 519582 499126 524773 525713 519618 529660 508082 540819 524831 537215 536436 532812 529946 515690  total = 139.891439 per ms 
03:18:29.521 16  switches: flows:  473108 466324 478366 414501 479841 467300 458897 476874 473564 472138 462263 484846 465985 476305 486318 464270  total = 124.797690 per ms 
03:19:29.638 16  switches: flows:  453780 445297 512004 345344 415316 544639 434710 476357 538989 538262 529130 451458 428647 481554 416521 529334  total = 125.444786 per ms 
03:20:31.585 16  switches: flows:  476334 474609 451462 486384 469155 453418 482189 472670 479710 473355 480777 476869 480303 477172 481613 480742  total = 122.634211 per ms 
03:21:32.177 16  switches: flows:  513988 418049 483833 520987 418691 509693 501016 436634 514019 523755 444796 496009 439591 453876 513864 477313  total = 126.521887 per ms 
03:22:32.278 16  switches: flows:  491009 493394 465153 486214 467280 482672 482040 487688 484647 484635 487526 486969 495065 485706 506270 488850  total = 129.367419 per ms 
03:23:32.378 16  switches: flows:  563073 558229 565725 562865 557464 562551 560973 570678 572086 567989 548771 557876 565228 556695 557268 559418  total = 149.530773 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 122634.21/151664.41/134669.42/46129.03 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.391872" elapsed="0.001075"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-04T03:23:32.393435" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-08-04T03:23:32.393122" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-08-04T03:23:32.393073" elapsed="0.000571"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-04T03:23:32.393891" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-08-04T03:23:32.393808" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-08-04T03:23:32.393771" elapsed="0.000259"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-04T03:23:32.394100" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:23:32.399455" elapsed="0.000352"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:23:32.399959" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:23:32.400258" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-04T03:23:32.394834" elapsed="0.005580"/>
</kw>
<msg time="2026-08-04T03:23:32.400543" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-04T03:13:23.187981" elapsed="609.212589"/>
</kw>
<status status="PASS" start="2026-08-04T03:13:23.187514" elapsed="609.213105"/>
</branch>
<status status="PASS" start="2026-08-04T03:13:23.187047" elapsed="609.213595"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.401084" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.182: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.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:14:29.072 16  switches: flows:  492214 474936 493126 496767 478691 483537 487750 477731 469054 474360 470154 465852 476973 478099 475004 470662  total = 127.748500 per ms 
03:15:29.174 16  switches: flows:  572620 573454 582344 565651 566249 573100 573538 565269 564221 564595 564576 570195 576729 569674 564159 568886  total = 151.664407 per ms 
03:16:29.314 16  switches: flows:  549208 549779 538451 549987 526124 546016 535763 532411 517122 494533 534605 534571 537560 535220 529630 539224  total = 142.172193 per ms 
03:17:29.415 16  switches: flows:  536114 527291 519582 499126 524773 525713 519618 529660 508082 540819 524831 537215 536436 532812 529946 515690  total = 139.891439 per ms 
03:18:29.521 16  switches: flows:  473108 466324 478366 414501 479841 467300 458897 476874 473564 472138 462263 484846 465985 476305 486318 464270  total = 124.797690 per ms 
03:19:29.638 16  switches: flows:  453780 445297 512004 345344 415316 544639 434710 476357 538989 538262 529130 451458 428647 481554 416521 529334  total = 125.444786 per ms 
03:20:31.585 16  switches: flows:  476334 474609 451462 486384 469155 453418 482189 472670 479710 473355 480777 476869 480303 477172 481613 480742  total = 122.634211 per ms 
03:21:32.177 16  switches: flows:  513988 418049 483833 520987 418691 509693 501016 436634 514019 523755 444796 496009 439591 453876 513864 477313  total = 126.521887 per ms 
03:22:32.278 16  switches: flows:  491009 493394 465153 486214 467280 482672 482040 487688 484647 484635 487526 486969 495065 485706 506270 488850  total = 129.367419 per ms 
03:23:32.378 16  switches: flows:  563073 558229 565725 562865 557464 562551 560973 570678 572086 567989 548771 557876 565228 556695 557268 559418  total = 149.530773 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 122634.21/151664.41/134669.42/46129.03 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.400796" elapsed="0.000361"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-04T03:23:32.401304" elapsed="0.000355"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-04T03:23:32.402051" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-04T03:23:32.402141" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 122634.21/151664.41/134669.42/46129.03 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-04T03:23:32.401834" elapsed="0.000332"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:23:32.402583" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 122634.21/151664.41/134669.42/46129.03 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:23:32.402318" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.405170" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.402770" elapsed="0.002457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.407596" level="INFO">122634.21/151664.41/134669.42/46129.03</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.405372" elapsed="0.002280"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:23:32.410025" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:23:32.407815" elapsed="0.002237"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:23:32.412476" level="INFO">@{result_value_list} = [ 122634.21 | 151664.41 | 134669.42 | 46129.03 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:23:32.410238" elapsed="0.002266"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.412987" level="INFO">Length is 4.</msg>
<msg time="2026-08-04T03:23:32.413075" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-04T03:23:32.412657" elapsed="0.000442"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.418037" level="INFO">min :: 122634.21</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.413480" elapsed="0.004615"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-04T03:23:32.413351" elapsed="0.004779"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.422683" level="INFO">max :: 151664.41</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.418354" elapsed="0.004400"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-04T03:23:32.418220" elapsed="0.004570"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.427442" level="INFO">avg :: 134669.42</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.423005" elapsed="0.004493"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-04T03:23:32.422878" elapsed="0.004655"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.432482" level="INFO">stdev :: 46129.03</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.427769" elapsed="0.004774"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-04T03:23:32.427621" elapsed="0.004960"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-04T03:23:32.413166" elapsed="0.019449"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.436526" level="INFO">${min} = 122634.21</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:23:32.432809" elapsed="0.003744"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.440431" level="INFO">${max} = 151664.41</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:23:32.436721" elapsed="0.003736"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.444323" level="INFO">${average} = 134669.42</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:23:32.440611" elapsed="0.003738"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.448248" level="INFO">${stdev} = 46129.03</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:23:32.444502" elapsed="0.003773"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.448800" level="INFO">${date} = 2026-08-04 03:23:32</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-04T03:23:32.448434" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.449377" level="INFO">CBench Result: 2026-08-04 03:23:32,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,122634.21,151664.41,134669.42,46129.03</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.448974" elapsed="0.000459"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-04T03:23:32.450481" 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-08-04T03:23:32.450075" elapsed="0.000487"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-04T03:23:32.450727" elapsed="0.000461"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-04T03:23:32.449582" elapsed="0.001675"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-08-04T03:13:23.185446" elapsed="609.265871"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.451799" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-04T03:23:32.451472" elapsed="0.000385"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-04T03:23:32.452365" elapsed="0.000265"/>
</kw>
<status status="PASS" start="2026-08-04T03:23:32.452060" elapsed="0.000656"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-04T03:13:23.184079" elapsed="609.268678"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.453925" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.453533" elapsed="0.000450"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.455502" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-04T03:23:32.455168" elapsed="0.000378"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-04T03:23:32.455903" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:23:32.455665" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-04T03:23:32.459105" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:23:32.458855" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-08-04T03:23:32.458836" elapsed="0.000350"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-04T03:23:32.459513" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-04T03:23:32.459325" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.460234" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.172" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:23:32.459812" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-04T03:23:32.460838" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:23:32.460430" elapsed="0.000435"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-04T03:23:32.461760" level="INFO">Length is 0.</msg>
<msg time="2026-08-04T03:23:32.461849" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-04T03:23:32.461437" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:23:32.462014" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-04T03:23:32.463222" level="INFO">Logging into '10.30.171.172:22' as 'jenkins'.</msg>
<msg time="2026-08-04T03:23:33.041998" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Aug  4 03:23:32 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Aug  4 03:13:23 2026 from 10.30.171.25
[?2004h[jenkins@releng-00446-46-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-04T03:23:32.462873" elapsed="0.579247"/>
</kw>
<msg time="2026-08-04T03:23:33.042183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:23:32.462481" elapsed="0.579767"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-04T03:23:32.461065" elapsed="0.581278"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-04T03:23:33.042788" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.182 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-04T03:33:39.302445" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-04T03:33:39.302993" level="INFO">${stdout} = </msg>
<msg time="2026-08-04T03:33:39.303069" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-04T03:23:33.042511" elapsed="606.260604"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:33:39.303477" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.304809" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182: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.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:24:38.163 16  switches: flows:  126336 129393 131110 127220 126372 128793 126450 127085 124398 121523 125161 122717 127603 121450 124457 127070  total = 33.618967 per ms 
03:25:38.264 16  switches: flows:  126927 127162 128064 128502 123104 128107 124628 124159 123524 121126 120862 122693 127333 120122 124253 125671  total = 33.215152 per ms 
03:26:38.581 16  switches: flows:  116421 117554 118281 116185 112879 117722 115985 115858 114011 111330 112174 111737 116880 111969 114765 115809  total = 30.498285 per ms 
03:27:38.682 16  switches: flows:  127875 128416 128841 128485 128499 129265 130037 128294 128469 124692 126124 125376 126402 125310 128303 125499  total = 33.941431 per ms 
03:28:38.784 16  switches: flows:  112473 116297 115873 113499 114080 113127 113211 113875 114031 110904 111917 111660 113510 111689 113683 113903  total = 30.178356 per ms 
03:29:38.885 16  switches: flows:  128229 130873 130043 129864 129774 126382 127723 127317 129604 124765 123519 127263 127564 126228 129411 127183  total = 34.038851 per ms 
03:30:38.986 16  switches: flows:  124237 130173 128986 125941 126843 124156 125654 124266 127120 124348 122187 124752 124212 125145 126211 126280  total = 33.452695 per ms 
03:31:39.088 16  switches: flows:  123147 126386 125205 123976 125360 122584 123915 123553 125813 121227 120569 121789 122833 123508 124658 125074  total = 32.937891 per ms 
03:32:39.190 16  switches: flows:  124934 129473 127466 128465 124009 127680 127245 125122 127841 122655 123532 120781 125999 122727 127484 126544  total = 33.476458 per ms 
03:33:39.291 16  switches: flows:  127698 130762 130968 130647 126251 131919 128294 126695 128463 125517 125537 122223 128668 125229 127446 128488  total = 34.023251 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30178.36/34038.85/32862.49/11042.78 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.304275" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-04T03:33:39.305404" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-08-04T03:33:39.305188" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-08-04T03:33:39.305150" elapsed="0.000400"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-04T03:33:39.305688" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-08-04T03:33:39.305635" elapsed="0.000136"/>
</branch>
<status status="NOT RUN" start="2026-08-04T03:33:39.305612" elapsed="0.000192"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-04T03:33:39.305849" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-04T03:33:39.309826" elapsed="0.000463"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-04T03:33:39.310494" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-04T03:33:39.310962" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-04T03:33:39.306324" elapsed="0.004853"/>
</kw>
<msg time="2026-08-04T03:33:39.311359" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-04T03:23:32.456306" elapsed="606.855091"/>
</kw>
<status status="PASS" start="2026-08-04T03:23:32.455988" elapsed="606.855480"/>
</branch>
<status status="PASS" start="2026-08-04T03:23:32.455643" elapsed="606.855857"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.311951" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.182: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.182. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:24:38.163 16  switches: flows:  126336 129393 131110 127220 126372 128793 126450 127085 124398 121523 125161 122717 127603 121450 124457 127070  total = 33.618967 per ms 
03:25:38.264 16  switches: flows:  126927 127162 128064 128502 123104 128107 124628 124159 123524 121126 120862 122693 127333 120122 124253 125671  total = 33.215152 per ms 
03:26:38.581 16  switches: flows:  116421 117554 118281 116185 112879 117722 115985 115858 114011 111330 112174 111737 116880 111969 114765 115809  total = 30.498285 per ms 
03:27:38.682 16  switches: flows:  127875 128416 128841 128485 128499 129265 130037 128294 128469 124692 126124 125376 126402 125310 128303 125499  total = 33.941431 per ms 
03:28:38.784 16  switches: flows:  112473 116297 115873 113499 114080 113127 113211 113875 114031 110904 111917 111660 113510 111689 113683 113903  total = 30.178356 per ms 
03:29:38.885 16  switches: flows:  128229 130873 130043 129864 129774 126382 127723 127317 129604 124765 123519 127263 127564 126228 129411 127183  total = 34.038851 per ms 
03:30:38.986 16  switches: flows:  124237 130173 128986 125941 126843 124156 125654 124266 127120 124348 122187 124752 124212 125145 126211 126280  total = 33.452695 per ms 
03:31:39.088 16  switches: flows:  123147 126386 125205 123976 125360 122584 123915 123553 125813 121227 120569 121789 122833 123508 124658 125074  total = 32.937891 per ms 
03:32:39.190 16  switches: flows:  124934 129473 127466 128465 124009 127680 127245 125122 127841 122655 123532 120781 125999 122727 127484 126544  total = 33.476458 per ms 
03:33:39.291 16  switches: flows:  127698 130762 130968 130647 126251 131919 128294 126695 128463 125517 125537 122223 128668 125229 127446 128488  total = 34.023251 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30178.36/34038.85/32862.49/11042.78 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.311646" elapsed="0.000379"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-04T03:33:39.312173" elapsed="0.000384"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-04T03:33:39.312982" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-04T03:33:39.313071" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30178.36/34038.85/32862.49/11042.78 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-04T03:33:39.312760" elapsed="0.000336"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:33:39.313509" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30178.36/34038.85/32862.49/11042.78 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:33:39.313251" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.316031" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.313725" elapsed="0.002362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.318506" level="INFO">30178.36/34038.85/32862.49/11042.78</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.316235" elapsed="0.002342"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:33:39.321050" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:33:39.318799" elapsed="0.002278"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-04T03:33:39.323528" level="INFO">@{result_value_list} = [ 30178.36 | 34038.85 | 32862.49 | 11042.78 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-04T03:33:39.321267" elapsed="0.002288"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.324088" level="INFO">Length is 4.</msg>
<msg time="2026-08-04T03:33:39.324180" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-04T03:33:39.323731" elapsed="0.000473"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.329103" level="INFO">min :: 30178.36</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.324625" elapsed="0.004535"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-04T03:33:39.324465" elapsed="0.004730"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.333968" level="INFO">max :: 34038.85</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.329410" elapsed="0.004616"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-04T03:33:39.329283" elapsed="0.004778"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.338822" level="INFO">avg :: 32862.49</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.334278" elapsed="0.004602"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-04T03:33:39.334147" elapsed="0.004767"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.343543" level="INFO">stdev :: 11042.78</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.339128" elapsed="0.004485"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-04T03:33:39.339000" elapsed="0.004657"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-04T03:33:39.324273" elapsed="0.019418"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.347994" level="INFO">${min} = 30178.36</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:33:39.343919" elapsed="0.004103"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.352282" level="INFO">${max} = 34038.85</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:33:39.348179" elapsed="0.004130"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.356312" level="INFO">${average} = 32862.49</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:33:39.352465" elapsed="0.003875"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.360450" level="INFO">${stdev} = 11042.78</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-04T03:33:39.356504" elapsed="0.003973"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.361094" level="INFO">${date} = 2026-08-04 03:33: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-08-04T03:33:39.360675" elapsed="0.000445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.361671" level="INFO">CBench Result: 2026-08-04 03:33:39,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30178.36,34038.85,32862.49,11042.78</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-04T03:33:39.361267" elapsed="0.000476"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-04T03:33:39.362849" 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-08-04T03:33:39.362348" elapsed="0.000573"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-04T03:33:39.363074" elapsed="0.000461"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-04T03:33:39.361883" elapsed="0.001717"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-08-04T03:23:32.454295" elapsed="606.909391"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.364196" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-04T03:33:39.363877" elapsed="0.000378"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-04T03:33:39.365464" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-04T03:33:39.364987" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-04T03:33:39.365731" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-08-04T03:33:39.365567" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-08-04T03:33:39.365548" elapsed="0.000272"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.365979" elapsed="0.000023"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.366139" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.366302" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.366504" elapsed="0.000028"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.366674" elapsed="0.000040"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.366866" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.367014" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-08-04T03:33:39.367237" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-08-04T03:33:39.367097" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-08-04T03:33:39.367081" elapsed="0.000231"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-08-04T03:33:39.364635" elapsed="0.002727"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-04T03:23:32.453042" elapsed="606.914366"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-08-04T03:03:13.806038" elapsed="1825.561939"/>
</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>
