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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-09-02T02:49:02.733699" elapsed="0.943417"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-02T02:49:03.726221" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-09-02T02:49:03.677394" elapsed="0.048916"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-02T02:49:03.728047" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-02T02:49:03.728148" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-09-02T02:49:03.726494" elapsed="0.001692"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-09-02T02:49:03.728341" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T02:49:03.728668" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:49:03.729348" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:49:03.729002" elapsed="0.000399"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-02T02:49:03.729450" elapsed="0.000051"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.20
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-02T02:49:02.732402" elapsed="0.997206"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-09-02T02:49:02.728967" elapsed="1.000696"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-02T02:49:03.730185" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-02T02:49:03.729830" elapsed="0.000406"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-02T02:49:03.730635" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-02T02:49:03.730401" elapsed="0.000294"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-02T02:49:03.731205" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-09-02T02:49:03.730835" elapsed="0.000396"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-02T02:49:03.731782" 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-09-02T02:49:03.731414" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-02T02:49:03.732337" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-09-02T02:49:03.731953" elapsed="0.000410"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-02T02:49:03.732785" 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-09-02T02:49:03.732507" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-09-02T02:49:03.733094" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-02T02:49:03.732900" elapsed="0.000242"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-02T02:49:03.737208" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T02:49:03.736833" elapsed="0.000399"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-02T02:49:03.738139" level="INFO">Length is 0.</msg>
<msg time="2026-09-02T02:49:03.738229" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-02T02:49:03.737752" elapsed="0.000498"/>
</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-09-02T02:49:03.738405" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-02T02:49:03.739616" level="INFO">Logging into '10.30.170.93:22' as 'jenkins'.</msg>
<msg time="2026-09-02T02:49:04.229301" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Sep  2 02:48:23 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-00446-73-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-02T02:49:03.739156" elapsed="0.490290"/>
</kw>
<msg time="2026-09-02T02:49:04.229528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-02T02:49:03.738851" elapsed="0.490758"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-02T02:49:03.737447" elapsed="0.492267"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.239974" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-09-02T02:49:04.229903" elapsed="0.011767"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T02:49:04.241858" elapsed="0.000265"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-09-02T02:49:03.736379" elapsed="0.505817"/>
</kw>
<status status="PASS" start="2026-09-02T02:49:03.733341" elapsed="0.508889"/>
</branch>
<status status="PASS" start="2026-09-02T02:49:03.732877" elapsed="0.509382"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-02T02:49:04.242429" elapsed="0.000562"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-09-02T02:49:04.248506" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-09-02T02:49:04.248353" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-09-02T02:49:04.248323" elapsed="0.000278"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-09-02T02:49:04.253197" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-09-02T02:49:04.253027" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-09-02T02:49:04.253002" elapsed="0.000302"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T02:49:04.253468" elapsed="0.000522"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.254524" level="INFO">Logging into '10.30.170.20:8101' as 'karaf'.</msg>
<msg time="2026-09-02T02:49:04.530060" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-09-02T02:49:04.254187" elapsed="0.275998"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.623923" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-09-02T02:49:04.530402" elapsed="0.093598"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.627858" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.2            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-02T02:49:04.628031" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.2            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-09-02T02:49:04.624182" elapsed="0.003877"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-09-02T02:49:04.628198" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T02:49:04.628529" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:49:04.629123" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.2            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:49:04.628839" elapsed="0.000349"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-02T02:49:04.629232" elapsed="0.000068"/>
</return>
<msg time="2026-09-02T02:49:04.629448" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.2            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.20
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-02T02:49:04.252594" elapsed="0.376882"/>
</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-09-02T02:49:04.629606" elapsed="0.000450"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-02T02:49:04.630141" elapsed="0.000049"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-09-02T02:49:04.247956" elapsed="0.382354"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-09-02T02:49:04.633752" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-09-02T02:49:04.633633" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-09-02T02:49:04.633611" 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-09-02T02:49:04.633934" elapsed="0.000433"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.634737" level="INFO">Logging into '10.30.170.20:8101' as 'karaf'.</msg>
<msg time="2026-09-02T02:49:04.864111" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-09-02T02:49:04.634506" elapsed="0.229730"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.885192" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-09-02T02:49:04.864449" elapsed="0.020796"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.887085" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-02T02:49:04.887196" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-09-02T02:49:04.885414" elapsed="0.001809"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-09-02T02:49:04.887358" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T02:49:04.887648" elapsed="0.000169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:49:04.888243" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:49:04.887952" elapsed="0.000362"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-02T02:49:04.888364" elapsed="0.000048"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.20
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-02T02:49:04.633340" elapsed="0.255173"/>
</kw>
<status status="PASS" start="2026-09-02T02:49:02.727235" elapsed="2.161333"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:49:04.890500" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:49:04.889438" elapsed="0.001122"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-02T02:49:04.891903" 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-09-02T02:49:04.891529" elapsed="0.000413"/>
</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-09-02T02:49:04.892256" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-09-02T02:49:04.892013" elapsed="0.000328"/>
</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-09-02T02:49:04.894981" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-09-02T02:49:04.894761" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-09-02T02:49:04.894743" elapsed="0.000310"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.895391" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-09-02T02:49:04.895185" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:49:04.896020" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.93" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:49:04.895647" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.896637" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T02:49:04.896210" elapsed="0.000451"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-02T02:49:04.897476" level="INFO">Length is 0.</msg>
<msg time="2026-09-02T02:49:04.897555" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-02T02:49:04.897174" elapsed="0.000403"/>
</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-09-02T02:49:04.897702" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-02T02:49:04.898777" level="INFO">Logging into '10.30.170.93:22' as 'jenkins'.</msg>
<msg time="2026-09-02T02:49:05.289004" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Sep  2 02:48:23 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Wed Sep  2 02:49:04 2026 from 10.30.170.157
[?2004h[jenkins@releng-00446-73-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-02T02:49:04.898461" elapsed="0.390727"/>
</kw>
<msg time="2026-09-02T02:49:05.289272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-02T02:49:04.898126" elapsed="0.391253"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-02T02:49:04.896839" elapsed="0.392656"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-02T02:49:05.290003" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-02T02:59:11.396146" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-02T02:59:11.396611" level="INFO">${stdout} = </msg>
<msg time="2026-09-02T02:59:11.396675" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-02T02:49:05.289708" elapsed="606.107004"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T02:59:11.397028" elapsed="0.000608"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.398364" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:50:10.483 16  switches: flows:  89397 89591 88753 88837 87810 87927 88515 87149 87927 86368 88306 85675 85793 87074 85349 87611  total = 23.368033 per ms 
02:51:10.583 16  switches: flows:  95975 95864 94937 95244 93406 93871 93086 92483 93335 92278 94021 91377 92488 93397 91039 93151  total = 24.890972 per ms 
02:52:10.683 16  switches: flows:  96141 96330 95849 96755 95215 93425 93823 93190 94034 92571 95078 92019 94711 92040 90697 94599  total = 25.066109 per ms 
02:53:10.784 16  switches: flows:  92959 93211 93351 94156 91709 92945 92721 91566 90410 91867 91954 89366 91043 92660 88987 91260  total = 24.461891 per ms 
02:54:10.884 16  switches: flows:  94783 94547 93963 95147 93074 91675 92835 91287 91943 91367 93994 91290 91804 91539 89415 93209  total = 24.656689 per ms 
02:55:10.985 16  switches: flows:  96672 97275 95439 98808 96663 97218 96337 94381 92726 95684 95604 93628 95156 95391 92410 95973  total = 25.446697 per ms 
02:56:11.085 16  switches: flows:  96653 96260 95475 98864 97166 95108 95295 95298 94289 94022 95136 93310 95294 94403 93430 96529  total = 25.399797 per ms 
02:57:11.185 16  switches: flows:  98232 97443 96602 97331 96558 96594 96283 95303 93955 93761 96259 94116 96778 95558 94252 95176  total = 25.527405 per ms 
02:58:11.286 16  switches: flows:  96647 97212 94084 98391 95504 92742 95550 94419 93277 90550 93054 92475 96309 93636 92670 94347  total = 25.139149 per ms 
02:59:11.386 16  switches: flows:  96762 97986 95004 97971 95053 94878 95069 94928 94074 93094 93780 93171 94489 95237 92156 94236  total = 25.255966 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24461.89/25527.40/25093.85/8371.70 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.397867" elapsed="0.000729"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-02T02:59:11.398937" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-09-02T02:59:11.398742" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-09-02T02:59:11.398696" elapsed="0.000374"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-02T02:59:11.399226" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-09-02T02:59:11.399160" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-09-02T02:59:11.399132" elapsed="0.000223"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-02T02:59:11.399411" elapsed="0.000022"/>
</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-09-02T02:59:11.403211" elapsed="0.000503"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T02:59:11.403910" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T02:59:11.404335" elapsed="0.000133"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-02T02:59:11.399951" elapsed="0.004600"/>
</kw>
<msg time="2026-09-02T02:59:11.404720" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-02T02:49:04.892664" elapsed="606.512090"/>
</kw>
<status status="PASS" start="2026-09-02T02:49:04.892368" elapsed="606.512452"/>
</branch>
<status status="PASS" start="2026-09-02T02:49:04.891992" elapsed="606.512887"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.405505" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:50:10.483 16  switches: flows:  89397 89591 88753 88837 87810 87927 88515 87149 87927 86368 88306 85675 85793 87074 85349 87611  total = 23.368033 per ms 
02:51:10.583 16  switches: flows:  95975 95864 94937 95244 93406 93871 93086 92483 93335 92278 94021 91377 92488 93397 91039 93151  total = 24.890972 per ms 
02:52:10.683 16  switches: flows:  96141 96330 95849 96755 95215 93425 93823 93190 94034 92571 95078 92019 94711 92040 90697 94599  total = 25.066109 per ms 
02:53:10.784 16  switches: flows:  92959 93211 93351 94156 91709 92945 92721 91566 90410 91867 91954 89366 91043 92660 88987 91260  total = 24.461891 per ms 
02:54:10.884 16  switches: flows:  94783 94547 93963 95147 93074 91675 92835 91287 91943 91367 93994 91290 91804 91539 89415 93209  total = 24.656689 per ms 
02:55:10.985 16  switches: flows:  96672 97275 95439 98808 96663 97218 96337 94381 92726 95684 95604 93628 95156 95391 92410 95973  total = 25.446697 per ms 
02:56:11.085 16  switches: flows:  96653 96260 95475 98864 97166 95108 95295 95298 94289 94022 95136 93310 95294 94403 93430 96529  total = 25.399797 per ms 
02:57:11.185 16  switches: flows:  98232 97443 96602 97331 96558 96594 96283 95303 93955 93761 96259 94116 96778 95558 94252 95176  total = 25.527405 per ms 
02:58:11.286 16  switches: flows:  96647 97212 94084 98391 95504 92742 95550 94419 93277 90550 93054 92475 96309 93636 92670 94347  total = 25.139149 per ms 
02:59:11.386 16  switches: flows:  96762 97986 95004 97971 95053 94878 95069 94928 94074 93094 93780 93171 94489 95237 92156 94236  total = 25.255966 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24461.89/25527.40/25093.85/8371.70 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.405084" elapsed="0.000540"/>
</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-09-02T02:59:11.405818" elapsed="0.000560"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-02T02:59:11.406972" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-02T02:59:11.407084" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24461.89/25527.40/25093.85/8371.70 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-09-02T02:59:11.406646" elapsed="0.000460"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T02:59:11.407540" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24461.89/25527.40/25093.85/8371.70 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T02:59:11.407247" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.409731" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.407697" elapsed="0.002086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.411955" level="INFO">24461.89/25527.40/25093.85/8371.70</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.409916" elapsed="0.002090"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T02:59:11.414123" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T02:59:11.412140" elapsed="0.002008"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T02:59:11.416457" level="INFO">@{result_value_list} = [ 24461.89 | 25527.40 | 25093.85 | 8371.70 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T02:59:11.414344" elapsed="0.002139"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.416922" level="INFO">Length is 4.</msg>
<msg time="2026-09-02T02:59:11.417008" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-02T02:59:11.416638" elapsed="0.000398"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.421402" level="INFO">min :: 24461.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.417464" elapsed="0.003990"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-02T02:59:11.417311" elapsed="0.004174"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.425694" level="INFO">max :: 25527.40</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.421700" elapsed="0.004045"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-02T02:59:11.421583" elapsed="0.004205"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.430014" level="INFO">avg :: 25093.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-09-02T02:59:11.426029" elapsed="0.004036"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-02T02:59:11.425894" elapsed="0.004202"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.434257" level="INFO">stdev :: 8371.70</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.430312" elapsed="0.004013"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-02T02:59:11.430180" elapsed="0.004185"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-02T02:59:11.417114" elapsed="0.017283"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.437944" level="INFO">${min} = 24461.89</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-09-02T02:59:11.434557" elapsed="0.003410"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.442657" level="INFO">${max} = 25527.40</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-09-02T02:59:11.438102" elapsed="0.004579"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.446715" level="INFO">${average} = 25093.85</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-09-02T02:59:11.442816" elapsed="0.003923"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.450305" level="INFO">${stdev} = 8371.70</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-09-02T02:59:11.446877" elapsed="0.003453"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.450825" level="INFO">${date} = 2026-09-02 02:59:11</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-02T02:59:11.450471" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.451363" level="INFO">CBench Result: 2026-09-02 02:59:11,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24461.89,25527.40,25093.85,8371.70</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.450984" elapsed="0.000429"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-02T02:59:11.452377" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-02T02:59:11.451976" elapsed="0.000461"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-02T02:59:11.452582" elapsed="0.000437"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-02T02:59:11.451558" elapsed="0.001518"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-09-02T02:49:04.890928" elapsed="606.562199"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.453597" 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-09-02T02:59:11.453257" elapsed="0.000389"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-09-02T02:59:11.454120" elapsed="0.000273"/>
</kw>
<status status="PASS" start="2026-09-02T02:59:11.453834" elapsed="0.000621"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-09-02T02:49:04.888703" elapsed="606.565784"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.455982" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.455638" elapsed="0.000394"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.457163" 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-09-02T02:59:11.456875" elapsed="0.000324"/>
</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-09-02T02:59:11.457531" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-02T02:59:11.457263" elapsed="0.000320"/>
</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-09-02T02:59:11.460234" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-09-02T02:59:11.459996" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-09-02T02:59:11.459979" elapsed="0.000420"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-02T02:59:11.460938" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-09-02T02:59:11.460738" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.461652" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.20 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.93" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T02:59:11.461191" elapsed="0.000512"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-02T02:59:11.462172" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T02:59:11.461826" elapsed="0.000369"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-02T02:59:11.463072" level="INFO">Length is 0.</msg>
<msg time="2026-09-02T02:59:11.463168" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-02T02:59:11.462745" elapsed="0.000445"/>
</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-09-02T02:59:11.463362" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-02T02:59:11.464562" level="INFO">Logging into '10.30.170.93:22' as 'jenkins'.</msg>
<msg time="2026-09-02T02:59:12.101528" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Sep  2 02:59:11 UTC 2026

  System load:  0.92               Processes:             104
  Usage of /:   19.9% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.93
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Wed Sep  2 02:49:05 2026 from 10.30.170.157
[?2004h[jenkins@releng-00446-73-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-02T02:59:11.464191" elapsed="0.637545"/>
</kw>
<msg time="2026-09-02T02:59:12.101821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-02T02:59:11.463876" elapsed="0.638037"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-02T02:59:11.462384" elapsed="0.639653"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-02T02:59:12.102603" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.20 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-02T03:09:18.159867" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-02T03:09:18.160249" level="INFO">${stdout} = </msg>
<msg time="2026-09-02T03:09:18.160428" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-02T02:59:12.102264" elapsed="606.058254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T03:09:18.160876" elapsed="0.000612"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.162601" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:00:17.237 16  switches: flows:  641742 632320 637880 628975 635531 633744 632730 630848 622193 624893 622291 605639 628597 625722 623434 635700  total = 167.703983 per ms 
03:01:17.343 16  switches: flows:  712477 718036 712476 715705 718466 715160 717766 724976 719964 725056 710225 721871 715089 719888 722724 720254  total = 191.165040 per ms 
03:02:17.446 16  switches: flows:  713295 722130 719846 716843 714078 707233 716902 716734 711972 710263 713648 711693 718841 714802 711838 714132  total = 190.248768 per ms 
03:03:17.547 16  switches: flows:  695989 697830 687195 691264 693829 685122 698770 700514 694749 701656 688912 697494 703164 688306 689386 701191  total = 184.944318 per ms 
03:04:17.649 16  switches: flows:  724231 718990 720481 707118 727974 709667 719744 712010 724728 730360 718941 719947 716860 713630 710745 726278  total = 191.372113 per ms 
03:05:17.750 16  switches: flows:  729074 722407 711735 711569 726618 721764 713822 724698 714277 726231 705590 717797 723363 721161 715424 716396  total = 191.376536 per ms 
03:06:17.852 16  switches: flows:  730011 728198 715719 723820 736721 729467 718437 724158 732372 731161 722716 735501 738630 725807 723731 718216  total = 193.584693 per ms 
03:07:17.954 16  switches: flows:  690880 690096 690525 689216 690741 691945 685826 686578 685023 687345 695181 689458 695614 692388 680534 685348  total = 183.469096 per ms 
03:08:18.055 16  switches: flows:  715274 726212 716682 724300 730710 718762 715801 710218 715085 728736 722502 715582 729055 723947 718695 715544  total = 191.794702 per ms 
03:09:18.156 16  switches: flows:  726081 720503 719112 719412 727008 715177 719525 728349 723251 727185 722974 724624 725776 721932 721897 726531  total = 192.497578 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 183469.10/193584.69/190050.32/63433.97 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.161838" elapsed="0.001087"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-02T03:09:18.163446" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-09-02T03:09:18.163134" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-09-02T03:09:18.163082" elapsed="0.000631"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-02T03:09:18.163903" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-09-02T03:09:18.163832" elapsed="0.000153"/>
</branch>
<status status="NOT RUN" start="2026-09-02T03:09:18.163799" elapsed="0.000227"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-02T03:09:18.164086" elapsed="0.000028"/>
</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-09-02T03:09:18.169429" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T03:09:18.170438" elapsed="0.000344"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T03:09:18.171034" elapsed="0.000203"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-02T03:09:18.164963" elapsed="0.006406"/>
</kw>
<msg time="2026-09-02T03:09:18.171640" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-02T02:59:11.457882" elapsed="606.713811"/>
</kw>
<status status="PASS" start="2026-09-02T02:59:11.457605" elapsed="606.714181"/>
</branch>
<status status="PASS" start="2026-09-02T02:59:11.457245" elapsed="606.714589"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.172861" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:00:17.237 16  switches: flows:  641742 632320 637880 628975 635531 633744 632730 630848 622193 624893 622291 605639 628597 625722 623434 635700  total = 167.703983 per ms 
03:01:17.343 16  switches: flows:  712477 718036 712476 715705 718466 715160 717766 724976 719964 725056 710225 721871 715089 719888 722724 720254  total = 191.165040 per ms 
03:02:17.446 16  switches: flows:  713295 722130 719846 716843 714078 707233 716902 716734 711972 710263 713648 711693 718841 714802 711838 714132  total = 190.248768 per ms 
03:03:17.547 16  switches: flows:  695989 697830 687195 691264 693829 685122 698770 700514 694749 701656 688912 697494 703164 688306 689386 701191  total = 184.944318 per ms 
03:04:17.649 16  switches: flows:  724231 718990 720481 707118 727974 709667 719744 712010 724728 730360 718941 719947 716860 713630 710745 726278  total = 191.372113 per ms 
03:05:17.750 16  switches: flows:  729074 722407 711735 711569 726618 721764 713822 724698 714277 726231 705590 717797 723363 721161 715424 716396  total = 191.376536 per ms 
03:06:17.852 16  switches: flows:  730011 728198 715719 723820 736721 729467 718437 724158 732372 731161 722716 735501 738630 725807 723731 718216  total = 193.584693 per ms 
03:07:17.954 16  switches: flows:  690880 690096 690525 689216 690741 691945 685826 686578 685023 687345 695181 689458 695614 692388 680534 685348  total = 183.469096 per ms 
03:08:18.055 16  switches: flows:  715274 726212 716682 724300 730710 718762 715801 710218 715085 728736 722502 715582 729055 723947 718695 715544  total = 191.794702 per ms 
03:09:18.156 16  switches: flows:  726081 720503 719112 719412 727008 715177 719525 728349 723251 727185 722974 724624 725776 721932 721897 726531  total = 192.497578 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 183469.10/193584.69/190050.32/63433.97 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.172120" elapsed="0.000894"/>
</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-09-02T03:09:18.173397" elapsed="0.000737"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-02T03:09:18.174914" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-02T03:09:18.175091" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 183469.10/193584.69/190050.32/63433.97 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-09-02T03:09:18.174477" elapsed="0.000662"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T03:09:18.175973" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 183469.10/193584.69/190050.32/63433.97 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T03:09:18.175463" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.181016" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.176333" elapsed="0.004851"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.186096" level="INFO">183469.10/193584.69/190050.32/63433.97</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.181571" elapsed="0.004641"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T03:09:18.191447" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T03:09:18.186579" elapsed="0.004952"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T03:09:18.196490" level="INFO">@{result_value_list} = [ 183469.10 | 193584.69 | 190050.32 | 63433.97 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T03:09:18.191953" elapsed="0.004614"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.197678" level="INFO">Length is 4.</msg>
<msg time="2026-09-02T03:09:18.197852" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-02T03:09:18.196886" elapsed="0.001012"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.206142" level="INFO">min :: 183469.10</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.198677" elapsed="0.007553"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-02T03:09:18.198399" elapsed="0.007901"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.212986" level="INFO">max :: 193584.69</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.206682" elapsed="0.006392"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-02T03:09:18.206437" elapsed="0.006721"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.219648" level="INFO">avg :: 190050.32</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.213596" elapsed="0.006137"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-02T03:09:18.213355" elapsed="0.006429"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.226315" level="INFO">stdev :: 63433.97</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.220109" elapsed="0.006310"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-02T03:09:18.219912" elapsed="0.006558"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-02T03:09:18.198018" elapsed="0.028516"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.232076" level="INFO">${min} = 183469.10</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-09-02T03:09:18.226772" elapsed="0.005349"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.235819" level="INFO">${max} = 193584.69</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-09-02T03:09:18.232397" elapsed="0.003450"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.239433" level="INFO">${average} = 190050.32</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-09-02T03:09:18.236004" elapsed="0.003457"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.243033" level="INFO">${stdev} = 63433.97</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-09-02T03:09:18.239633" elapsed="0.003427"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.243590" level="INFO">${date} = 2026-09-02 03:09:18</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-02T03:09:18.243226" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.244113" level="INFO">CBench Result: 2026-09-02 03:09:18,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,183469.10,193584.69,190050.32,63433.97</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.243743" elapsed="0.000420"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-02T03:09:18.245167" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-02T03:09:18.244757" elapsed="0.000477"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-02T03:09:18.245386" elapsed="0.000440"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-02T03:09:18.244322" elapsed="0.001563"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-09-02T02:59:11.456353" elapsed="606.789584"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.246365" 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-09-02T03:09:18.246067" elapsed="0.000349"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-09-02T03:09:18.246891" elapsed="0.000235"/>
</kw>
<status status="PASS" start="2026-09-02T03:09:18.246620" elapsed="0.000567"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-09-02T02:59:11.455016" elapsed="606.792204"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.248485" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.248104" elapsed="0.000460"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.249797" 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-09-02T03:09:18.249453" elapsed="0.000383"/>
</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-09-02T03:09:18.250183" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-02T03:09:18.249972" elapsed="0.000264"/>
</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-09-02T03:09:18.253333" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-09-02T03:09:18.253031" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-09-02T03:09:18.253009" elapsed="0.000403"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-02T03:09:18.253762" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-09-02T03:09:18.253553" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.254425" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.93" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:09:18.254020" elapsed="0.000458"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-02T03:09:18.254982" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T03:09:18.254623" elapsed="0.000384"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-02T03:09:18.255859" level="INFO">Length is 0.</msg>
<msg time="2026-09-02T03:09:18.255940" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-02T03:09:18.255568" elapsed="0.000393"/>
</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-09-02T03:09:18.256090" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-02T03:09:18.257200" level="INFO">Logging into '10.30.170.93:22' as 'jenkins'.</msg>
<msg time="2026-09-02T03:09:18.874553" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Sep  2 03:09:18 UTC 2026

  System load:  0.29               Processes:             106
  Usage of /:   19.9% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.93
  Swap usage:   0%

 * Canonical Workshop gives developers fast, composable, reproducible, and
   secure developer environments that are perfect for agentic workflows.

   https://ubuntu.com/workshop

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Wed Sep  2 02:59:12 2026 from 10.30.170.157
[?2004h[jenkins@releng-00446-73-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-02T03:09:18.256866" elapsed="0.617868"/>
</kw>
<msg time="2026-09-02T03:09:18.874830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-02T03:09:18.256557" elapsed="0.618360"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-02T03:09:18.255193" elapsed="0.619862"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-02T03:09:18.875706" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-02T03:19:24.905342" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-02T03:19:24.905968" level="INFO">${stdout} = </msg>
<msg time="2026-09-02T03:19:24.906092" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-02T03:09:18.875333" elapsed="606.030815"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T03:19:24.906705" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.908862" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:10:23.999 16  switches: flows:  95374 96226 94834 95300 95933 94924 93935 93662 93539 94260 91708 93684 94191 93107 93429 93074  total = 25.119667 per ms 
03:11:24.099 16  switches: flows:  98830 96947 99519 97019 96733 96245 95270 97617 95519 94872 95962 94352 95099 95343 95043 95166  total = 25.616194 per ms 
03:12:24.199 16  switches: flows:  97145 97841 98769 98268 99283 96292 95007 98931 93311 94555 94549 94523 95235 96104 96761 94324  total = 25.638843 per ms 
03:13:24.300 16  switches: flows:  96452 95825 96954 94510 94767 92640 92915 95363 94016 91748 92407 91128 91803 92775 92946 91835  total = 24.926434 per ms 
03:14:24.400 16  switches: flows:  93998 93471 94495 93893 92490 91653 91094 92288 90165 90082 88758 89825 90180 90730 91758 88454  total = 24.348234 per ms 
03:15:24.500 16  switches: flows:  94921 94809 94292 93986 93906 93513 92389 93971 91503 89512 89732 91435 90659 91282 91757 89423  total = 24.577113 per ms 
03:16:24.600 16  switches: flows:  94781 93637 96182 93732 96493 93609 94168 93519 90072 93183 90510 91244 93085 91926 93805 89628  total = 24.784832 per ms 
03:17:24.701 16  switches: flows:  93380 94781 94977 93451 94601 91768 91223 93954 91579 91368 90494 91481 89603 91637 92945 89899  total = 24.577946 per ms 
03:18:24.801 16  switches: flows:  97659 97588 97803 95815 97480 95317 94126 96431 95359 94123 92332 93801 94326 94058 94832 93245  total = 25.362581 per ms 
03:19:24.901 16  switches: flows:  95190 93671 95140 92827 92862 92110 90545 94136 90107 90789 89680 89823 90366 91828 92413 89844  total = 24.481293 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24348.23/25638.84/24923.72/8321.07 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.907996" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-02T03:19:24.909799" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-09-02T03:19:24.909438" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-09-02T03:19:24.909378" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-02T03:19:24.910225" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-09-02T03:19:24.910148" elapsed="0.000211"/>
</branch>
<status status="NOT RUN" start="2026-09-02T03:19:24.910113" elapsed="0.000296"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-02T03:19:24.910476" elapsed="0.000038"/>
</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-09-02T03:19:24.917011" elapsed="0.000880"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-02T03:19:24.918228" elapsed="0.000612"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-02T03:19:24.919132" elapsed="0.000273"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-02T03:19:24.911262" elapsed="0.008264"/>
</kw>
<msg time="2026-09-02T03:19:24.919834" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-02T03:09:18.250618" elapsed="606.669277"/>
</kw>
<status status="PASS" start="2026-09-02T03:09:18.250259" elapsed="606.669754"/>
</branch>
<status status="PASS" start="2026-09-02T03:09:18.249949" elapsed="606.670123"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.921241" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.20:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:10:23.999 16  switches: flows:  95374 96226 94834 95300 95933 94924 93935 93662 93539 94260 91708 93684 94191 93107 93429 93074  total = 25.119667 per ms 
03:11:24.099 16  switches: flows:  98830 96947 99519 97019 96733 96245 95270 97617 95519 94872 95962 94352 95099 95343 95043 95166  total = 25.616194 per ms 
03:12:24.199 16  switches: flows:  97145 97841 98769 98268 99283 96292 95007 98931 93311 94555 94549 94523 95235 96104 96761 94324  total = 25.638843 per ms 
03:13:24.300 16  switches: flows:  96452 95825 96954 94510 94767 92640 92915 95363 94016 91748 92407 91128 91803 92775 92946 91835  total = 24.926434 per ms 
03:14:24.400 16  switches: flows:  93998 93471 94495 93893 92490 91653 91094 92288 90165 90082 88758 89825 90180 90730 91758 88454  total = 24.348234 per ms 
03:15:24.500 16  switches: flows:  94921 94809 94292 93986 93906 93513 92389 93971 91503 89512 89732 91435 90659 91282 91757 89423  total = 24.577113 per ms 
03:16:24.600 16  switches: flows:  94781 93637 96182 93732 96493 93609 94168 93519 90072 93183 90510 91244 93085 91926 93805 89628  total = 24.784832 per ms 
03:17:24.701 16  switches: flows:  93380 94781 94977 93451 94601 91768 91223 93954 91579 91368 90494 91481 89603 91637 92945 89899  total = 24.577946 per ms 
03:18:24.801 16  switches: flows:  97659 97588 97803 95815 97480 95317 94126 96431 95359 94123 92332 93801 94326 94058 94832 93245  total = 25.362581 per ms 
03:19:24.901 16  switches: flows:  95190 93671 95140 92827 92862 92110 90545 94136 90107 90789 89680 89823 90366 91828 92413 89844  total = 24.481293 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24348.23/25638.84/24923.72/8321.07 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.920479" elapsed="0.000959"/>
</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-09-02T03:19:24.921760" elapsed="0.000942"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-02T03:19:24.923643" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-02T03:19:24.923865" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24348.23/25638.84/24923.72/8321.07 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-09-02T03:19:24.923129" elapsed="0.000796"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T03:19:24.924876" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24348.23/25638.84/24923.72/8321.07 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T03:19:24.924273" elapsed="0.000659"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.930756" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.925258" elapsed="0.005650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.936550" level="INFO">24348.23/25638.84/24923.72/8321.07</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.931229" elapsed="0.005442"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T03:19:24.941990" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T03:19:24.937021" elapsed="0.005030"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-02T03:19:24.948353" level="INFO">@{result_value_list} = [ 24348.23 | 25638.84 | 24923.72 | 8321.07 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-02T03:19:24.942574" elapsed="0.005869"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.950113" level="INFO">Length is 4.</msg>
<msg time="2026-09-02T03:19:24.950388" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-02T03:19:24.949160" elapsed="0.001306"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.958330" level="INFO">min :: 24348.23</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.951517" elapsed="0.006934"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-02T03:19:24.951107" elapsed="0.007410"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.964615" level="INFO">max :: 25638.84</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.958976" elapsed="0.005725"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-02T03:19:24.958681" elapsed="0.006078"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.970856" level="INFO">avg :: 24923.72</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.965131" elapsed="0.005821"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-02T03:19:24.964905" elapsed="0.006100"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.976956" level="INFO">stdev :: 8321.07</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.971362" elapsed="0.005672"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-02T03:19:24.971128" elapsed="0.005955"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-02T03:19:24.950626" elapsed="0.026497"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.982183" level="INFO">${min} = 24348.23</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-09-02T03:19:24.977388" elapsed="0.004840"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.988033" level="INFO">${max} = 25638.84</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-09-02T03:19:24.982520" elapsed="0.005562"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.993352" level="INFO">${average} = 24923.72</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-02T03:19:24.988397" elapsed="0.005005"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.997376" level="INFO">${stdev} = 8321.07</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-09-02T03:19:24.993674" elapsed="0.003735"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.998073" level="INFO">${date} = 2026-09-02 03:19:24</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-02T03:19:24.997647" elapsed="0.000448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-02T03:19:24.998661" level="INFO">CBench Result: 2026-09-02 03:19:24,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24348.23,25638.84,24923.72,8321.07</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-02T03:19:24.998260" elapsed="0.000453"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-02T03:19:25.000016" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-02T03:19:24.999388" elapsed="0.000695"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-02T03:19:25.000243" elapsed="0.000562"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-02T03:19:24.998903" elapsed="0.001967"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-09-02T03:09:18.248861" elapsed="606.752071"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-02T03:19:25.001397" 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-09-02T03:19:25.001074" elapsed="0.000374"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-02T03:19:25.002696" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-09-02T03:19:25.002209" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-09-02T03:19:25.002973" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-09-02T03:19:25.002822" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-09-02T03:19:25.002794" elapsed="0.000283"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-09-02T03:19:25.003216" elapsed="0.000018"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-09-02T03:19:25.003374" elapsed="0.000018"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-09-02T03:19:25.003517" elapsed="0.000018"/>
</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-09-02T03:19:25.003651" elapsed="0.000017"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-09-02T03:19:25.003883" elapsed="0.000018"/>
</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-09-02T03:19:25.004011" elapsed="0.000017"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-09-02T03:19:25.004145" 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-09-02T03:19:25.004357" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-09-02T03:19:25.004219" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-09-02T03:19:25.004204" elapsed="0.000223"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-09-02T03:19:25.001878" elapsed="0.002598"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-09-02T03:09:18.247679" elapsed="606.756848"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-09-02T02:49:02.230363" elapsed="1822.775112"/>
</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>
