<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-07-09T02:55:45.177480" 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-07-09T02:55:45.738052" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-07-09T02:55:45.737901" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-07-09T02:55:45.737872" 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-07-09T02:55:45.738317" elapsed="0.000530"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-09T02:55:45.739312" level="INFO">Logging into '10.30.171.13:8101' as 'karaf'.</msg>
<msg time="2026-07-09T02:55:46.336081" 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-07-09T02:55:45.739017" elapsed="0.597284"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-09T02:55:46.386127" 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-07-09T02:55:46.336608" elapsed="0.049700"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-09T02:55:46.388144" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-09T02:55:46.388259" 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-07-09T02:55:46.386584" elapsed="0.001707"/>
</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-07-09T02:55:46.388487" elapsed="0.000253"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T02:55:46.389507" elapsed="0.000214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T02:55:46.390244" 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-07-09T02:55:46.389877" elapsed="0.000424"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-09T02:55:46.390595" elapsed="0.000060"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.13
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-09T02:55:45.737525" elapsed="0.653252"/>
</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-07-09T02:55:45.733937" elapsed="0.656904"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-09T02:55:46.391391" 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-07-09T02:55:46.391023" elapsed="0.000431"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-09T02:55:46.391862" 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-07-09T02:55:46.391610" elapsed="0.000315"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-09T02:55:46.393059" 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-07-09T02:55:46.392078" elapsed="0.001012"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-09T02:55:46.393635" 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-07-09T02:55:46.393264" elapsed="0.000415"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-09T02:55:46.394244" 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-07-09T02:55:46.393827" elapsed="0.000445"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-09T02:55:46.394761" 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-07-09T02:55:46.394450" elapsed="0.000353"/>
</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-07-09T02:55:46.395112" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-09T02:55:46.394891" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-09T02:55:46.399681" 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-07-09T02:55:46.399221" elapsed="0.000491"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-09T02:55:46.400952" level="INFO">Length is 0.</msg>
<msg time="2026-07-09T02:55:46.401039" 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-07-09T02:55:46.400281" elapsed="0.000784"/>
</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-07-09T02:55:46.401215" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-09T02:55:46.402652" level="INFO">Logging into '10.30.170.73:22' as 'jenkins'.</msg>
<msg time="2026-07-09T02:55:47.138156" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jul  9 02:55:46 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-00446-20-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-07-09T02:55:46.402096" elapsed="0.736240"/>
</kw>
<msg time="2026-07-09T02:55:47.138453" 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-07-09T02:55:46.401751" elapsed="0.736796"/>
</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-07-09T02:55:46.399933" elapsed="0.738734"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.146477" 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-07-09T02:55:47.138877" elapsed="0.008819"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T02:55:47.147958" elapsed="0.000386"/>
</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-07-09T02:55:46.398640" elapsed="0.749825"/>
</kw>
<status status="PASS" start="2026-07-09T02:55:46.395250" elapsed="0.753271"/>
</branch>
<status status="PASS" start="2026-07-09T02:55:46.394864" elapsed="0.753702"/>
</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-07-09T02:55:47.148787" elapsed="0.000708"/>
</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-07-09T02:55:47.156095" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-07-09T02:55:47.155878" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-07-09T02:55:47.155834" elapsed="0.000372"/>
</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-07-09T02:55:47.161186" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-07-09T02:55:47.161026" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-07-09T02:55:47.160998" elapsed="0.000286"/>
</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-07-09T02:55:47.161496" elapsed="0.000629"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.162818" level="INFO">Logging into '10.30.171.13:8101' as 'karaf'.</msg>
<msg time="2026-07-09T02:55:47.379766" 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-07-09T02:55:47.162413" elapsed="0.217502"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.477392" 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-07-09T02:55:47.380157" elapsed="0.097327"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.499769" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-09T02:55:47.499963" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-07-09T02:55:47.477669" elapsed="0.022326"/>
</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-07-09T02:55:47.500141" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T02:55:47.500508" elapsed="0.000197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T02:55:47.501150" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T02:55:47.500842" elapsed="0.000364"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-09T02:55:47.501255" elapsed="0.000048"/>
</return>
<msg time="2026-07-09T02:55:47.501470" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.13
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-09T02:55:47.160513" elapsed="0.340989"/>
</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-07-09T02:55:47.501646" elapsed="0.000498"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-09T02:55:47.502197" elapsed="0.000032"/>
</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-07-09T02:55:47.155393" elapsed="0.346952"/>
</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-07-09T02:55:47.505987" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-07-09T02:55:47.505851" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-07-09T02:55:47.505828" elapsed="0.000229"/>
</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-07-09T02:55:47.506186" elapsed="0.000482"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.507256" level="INFO">Logging into '10.30.171.13:8101' as 'karaf'.</msg>
<msg time="2026-07-09T02:55:47.678869" 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-07-09T02:55:47.506813" elapsed="0.172234"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.705665" 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-07-09T02:55:47.679322" elapsed="0.026491"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.707969" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-09T02:55:47.708080" 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-07-09T02:55:47.706076" elapsed="0.002033"/>
</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-07-09T02:55:47.708248" elapsed="0.000297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T02:55:47.708693" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T02:55:47.709350" 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-07-09T02:55:47.709034" elapsed="0.000391"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-09T02:55:47.709478" elapsed="0.000055"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.13
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-09T02:55:47.505524" elapsed="0.204130"/>
</kw>
<status status="PASS" start="2026-07-09T02:55:45.731929" elapsed="1.977787"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T02:55:47.712092" 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-07-09T02:55:47.710950" elapsed="0.001207"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-09T02:55:47.713612" 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-07-09T02:55:47.713242" 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-07-09T02:55:47.713979" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-09T02:55:47.713737" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-07-09T02:55:47.717003" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-07-09T02:55:47.716754" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-07-09T02:55:47.716735" elapsed="0.000350"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.717450" 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-07-09T02:55:47.717577" 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-07-09T02:55:47.717215" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T02:55:47.718160" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.13 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.73" 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-07-09T02:55:47.717737" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.718855" 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-07-09T02:55:47.718388" elapsed="0.000494"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-09T02:55:47.719800" level="INFO">Length is 0.</msg>
<msg time="2026-07-09T02:55:47.719892" 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-07-09T02:55:47.719475" elapsed="0.000441"/>
</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-07-09T02:55:47.720062" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-09T02:55:47.721253" level="INFO">Logging into '10.30.170.73:22' as 'jenkins'.</msg>
<msg time="2026-07-09T02:55:48.082292" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jul  9 02:55:46 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Jul  9 02:55:47 2026 from 10.30.170.13
[?2004h[jenkins@releng-00446-20-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-07-09T02:55:47.720899" elapsed="0.361652"/>
</kw>
<msg time="2026-07-09T02:55:48.082638" 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-07-09T02:55:47.720558" elapsed="0.362169"/>
</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-07-09T02:55:47.719082" elapsed="0.363767"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-09T02:55:48.083387" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.13 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-09T03:05:54.237564" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-09T03:05:54.238206" level="INFO">${stdout} = </msg>
<msg time="2026-07-09T03:05:54.238324" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13: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-07-09T02:55:48.083063" elapsed="606.155364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T03:05:54.238998" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.241338" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.13. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:56:53.333 16  switches: flows:  99456 99967 100212 103352 100997 99835 97750 98438 98630 95389 99115 98202 96925 97255 97002 95627  total = 26.302533 per ms 
02:57:53.433 16  switches: flows:  115500 115278 113587 115773 112986 114297 112904 113568 113225 108034 112355 111296 111120 111764 111583 111055  total = 30.021978 per ms 
02:58:53.533 16  switches: flows:  118303 121361 118352 118279 115857 117962 119093 116437 117226 111831 116080 113695 115169 115210 115275 114692  total = 31.028582 per ms 
02:59:53.634 16  switches: flows:  120207 122421 120135 120949 118539 120486 121470 118605 117967 113746 115889 115844 118062 117863 117101 116626  total = 31.545817 per ms 
03:00:53.734 16  switches: flows:  119089 120985 117680 120513 116167 118045 118391 118636 117014 112459 113823 113344 117431 115873 115271 117418  total = 31.150293 per ms 
03:01:53.834 16  switches: flows:  113104 114599 110982 113078 111783 111701 113198 110610 111804 105967 110021 108112 109174 109380 108615 108296  total = 29.457849 per ms 
03:02:53.935 16  switches: flows:  121996 122622 118705 121501 118212 119537 120792 118996 120011 114676 118438 117141 116966 118240 117381 117668  total = 31.661812 per ms 
03:03:54.035 16  switches: flows:  123219 124464 120188 121898 121113 121727 122031 119289 119322 117138 120748 117517 120613 120446 118262 119885  total = 32.077462 per ms 
03:04:54.135 16  switches: flows:  119520 121356 118400 120993 118604 119601 119317 119408 117538 113925 117533 117608 117217 118161 116144 117591  total = 31.496042 per ms 
03:05:54.235 16  switches: flows:  119267 120851 119143 119885 117962 119588 119656 117578 118014 113326 118611 118028 117418 117871 115237 116587  total = 31.431240 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29457.85/32077.46/31096.79/10395.58 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:05:54.240493" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-09T03:05:54.242342" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-07-09T03:05:54.241952" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-07-09T03:05:54.241893" elapsed="0.000720"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-09T03:05:54.242851" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-07-09T03:05:54.242760" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-07-09T03:05:54.242720" elapsed="0.000286"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-09T03:05:54.243107" elapsed="0.000047"/>
</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-07-09T03:05:54.249520" elapsed="0.000413"/>
</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-07-09T03:05:54.250095" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T03:05:54.250478" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-09T03:05:54.244052" elapsed="0.006613"/>
</kw>
<msg time="2026-07-09T03:05:54.250808" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13: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-07-09T02:55:47.714445" elapsed="606.536392"/>
</kw>
<status status="PASS" start="2026-07-09T02:55:47.714066" elapsed="606.536822"/>
</branch>
<status status="PASS" start="2026-07-09T02:55:47.713712" elapsed="606.537204"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.251439" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.13. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:56:53.333 16  switches: flows:  99456 99967 100212 103352 100997 99835 97750 98438 98630 95389 99115 98202 96925 97255 97002 95627  total = 26.302533 per ms 
02:57:53.433 16  switches: flows:  115500 115278 113587 115773 112986 114297 112904 113568 113225 108034 112355 111296 111120 111764 111583 111055  total = 30.021978 per ms 
02:58:53.533 16  switches: flows:  118303 121361 118352 118279 115857 117962 119093 116437 117226 111831 116080 113695 115169 115210 115275 114692  total = 31.028582 per ms 
02:59:53.634 16  switches: flows:  120207 122421 120135 120949 118539 120486 121470 118605 117967 113746 115889 115844 118062 117863 117101 116626  total = 31.545817 per ms 
03:00:53.734 16  switches: flows:  119089 120985 117680 120513 116167 118045 118391 118636 117014 112459 113823 113344 117431 115873 115271 117418  total = 31.150293 per ms 
03:01:53.834 16  switches: flows:  113104 114599 110982 113078 111783 111701 113198 110610 111804 105967 110021 108112 109174 109380 108615 108296  total = 29.457849 per ms 
03:02:53.935 16  switches: flows:  121996 122622 118705 121501 118212 119537 120792 118996 120011 114676 118438 117141 116966 118240 117381 117668  total = 31.661812 per ms 
03:03:54.035 16  switches: flows:  123219 124464 120188 121898 121113 121727 122031 119289 119322 117138 120748 117517 120613 120446 118262 119885  total = 32.077462 per ms 
03:04:54.135 16  switches: flows:  119520 121356 118400 120993 118604 119601 119317 119408 117538 113925 117533 117608 117217 118161 116144 117591  total = 31.496042 per ms 
03:05:54.235 16  switches: flows:  119267 120851 119143 119885 117962 119588 119656 117578 118014 113326 118611 118028 117418 117871 115237 116587  total = 31.431240 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29457.85/32077.46/31096.79/10395.58 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:05:54.251079" elapsed="0.000453"/>
</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-07-09T03:05:54.251736" elapsed="0.000550"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-09T03:05:54.252832" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-09T03:05:54.252931" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29457.85/32077.46/31096.79/10395.58 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-07-09T03:05:54.252529" elapsed="0.000428"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:05:54.253422" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29457.85/32077.46/31096.79/10395.58 | 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-07-09T03:05:54.253115" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.256002" 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-07-09T03:05:54.253634" elapsed="0.002429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.258530" level="INFO">29457.85/32077.46/31096.79/10395.58</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:05:54.256249" elapsed="0.002340"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:05:54.261211" 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-07-09T03:05:54.258742" elapsed="0.002498"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:05:54.263835" level="INFO">@{result_value_list} = [ 29457.85 | 32077.46 | 31096.79 | 10395.58 ]</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-07-09T03:05:54.261488" elapsed="0.002376"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.264402" level="INFO">Length is 4.</msg>
<msg time="2026-07-09T03:05:54.264504" 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-07-09T03:05:54.264024" elapsed="0.000505"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.269684" level="INFO">min :: 29457.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-07-09T03:05:54.264943" elapsed="0.004816"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-09T03:05:54.264808" elapsed="0.004997"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.275949" level="INFO">max :: 32077.46</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-07-09T03:05:54.270106" elapsed="0.005975"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-09T03:05:54.269926" elapsed="0.006211"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.281602" level="INFO">avg :: 31096.79</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:05:54.276498" elapsed="0.005170"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-09T03:05:54.276272" elapsed="0.005438"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.286761" level="INFO">stdev :: 10395.58</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-07-09T03:05:54.281975" elapsed="0.004850"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-09T03:05:54.281817" elapsed="0.005046"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-09T03:05:54.264604" elapsed="0.022295"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.290828" level="INFO">${min} = 29457.85</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-07-09T03:05:54.287079" elapsed="0.003777"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.295097" level="INFO">${max} = 32077.46</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-07-09T03:05:54.291013" elapsed="0.004112"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.299392" level="INFO">${average} = 31096.79</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-07-09T03:05:54.295326" elapsed="0.004096"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.303443" level="INFO">${stdev} = 10395.58</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-07-09T03:05:54.299598" elapsed="0.003875"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.304074" level="INFO">${date} = 2026-07-09 03:05:54</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-09T03:05:54.303673" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.304730" level="INFO">CBench Result: 2026-07-09 03:05:54,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29457.85,32077.46,31096.79,10395.58</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-07-09T03:05:54.304257" elapsed="0.000541"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-09T03:05:54.305939" 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-07-09T03:05:54.305474" elapsed="0.000555"/>
</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-07-09T03:05:54.306224" elapsed="0.000579"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-09T03:05:54.304973" elapsed="0.001917"/>
</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-07-09T02:55:47.712617" elapsed="606.594340"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.307471" 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-07-09T03:05:54.307122" elapsed="0.000407"/>
</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-07-09T03:05:54.308152" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-07-09T03:05:54.307756" elapsed="0.000786"/>
</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-07-09T02:55:47.709866" elapsed="606.598714"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.309947" 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-07-09T03:05:54.309551" elapsed="0.000455"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.311358" 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-07-09T03:05:54.311009" elapsed="0.000411"/>
</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-07-09T03:05:54.311886" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-09T03:05:54.311644" elapsed="0.000300"/>
</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-07-09T03:05:54.315323" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-07-09T03:05:54.314851" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-07-09T03:05:54.314831" elapsed="0.000594"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-09T03:05:54.315808" 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-07-09T03:05:54.315943" 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-07-09T03:05:54.315566" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.316605" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.13 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.73" 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-07-09T03:05:54.316146" elapsed="0.000518"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-09T03:05:54.317213" 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-07-09T03:05:54.316807" elapsed="0.000434"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-09T03:05:54.318175" level="INFO">Length is 0.</msg>
<msg time="2026-07-09T03:05:54.318265" 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-07-09T03:05:54.317853" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-09T03:05:54.318456" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-09T03:05:54.319652" level="INFO">Logging into '10.30.170.73:22' as 'jenkins'.</msg>
<msg time="2026-07-09T03:05:54.927672" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jul  9 03:05:54 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Jul  9 02:55:48 2026 from 10.30.170.13
[?2004h[jenkins@releng-00446-20-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-07-09T03:05:54.319278" elapsed="0.608673"/>
</kw>
<msg time="2026-07-09T03:05:54.928053" 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-07-09T03:05:54.318939" elapsed="0.609217"/>
</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-07-09T03:05:54.317467" elapsed="0.610812"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-09T03:05:54.928848" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.13 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-09T03:16:01.311959" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-09T03:16:01.312589" level="INFO">${stdout} = </msg>
<msg time="2026-07-09T03:16:01.312697" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.13: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-07-09T03:05:54.928521" elapsed="606.384240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T03:16:01.313231" elapsed="0.000778"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.315145" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.13:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.13. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:07:00.066 16  switches: flows:  427860 431749 435145 446452 431258 449885 428248 438255 429558 431774 428838 418793 421137 426616 438015 413086  total = 114.944483 per ms 
03:08:00.167 16  switches: flows:  463696 465351 474428 469008 467233 472239 472574 471114 481562 467445 477257 473173 471369 466962 468629 458820  total = 125.135822 per ms 
03:09:00.594 16  switches: flows:  460276 465299 456000 463965 456843 453165 449931 461894 464888 451981 452212 463690 455801 456669 448507 464628  total = 121.233906 per ms 
03:10:00.695 16  switches: flows:  455510 472137 466691 456803 455305 475847 463750 468164 471192 465373 470693 469085 467171 453748 472646 467974  total = 123.992723 per ms 
03:11:00.799 16  switches: flows:  517277 519946 518966 515866 520449 511510 521388 512086 503011 515747 516466 509471 509610 511875 521427 511502  total = 137.042404 per ms 
03:12:00.900 16  switches: flows:  516109 519225 522721 527656 519328 509712 513998 513569 520548 516584 517576 518681 509938 519988 525340 518069  total = 137.918498 per ms 
03:13:01.001 16  switches: flows:  507369 491484 498327 497556 505939 472037 501234 497814 493821 508364 502763 508854 494930 486525 505307 496754  total = 132.594366 per ms 
03:14:01.109 16  switches: flows:  464860 472436 465451 464862 465093 466015 470025 468526 466528 472774 463942 453321 473332 467290 467352 462192  total = 124.177751 per ms 
03:15:01.210 16  switches: flows:  485110 484308 480422 495639 478301 471318 481767 477167 484010 484968 479242 479738 477377 483264 480992 486195  total = 128.281509 per ms 
03:16:01.311 16  switches: flows:  456378 463052 447450 446171 471922 448667 460531 437253 452405 442769 462395 475145 455707 452031 458914 462094  total = 121.344031 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 121233.91/137918.50/127969.00/43084.33 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:16:01.314408" elapsed="0.001089"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-09T03:16:01.315990" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-07-09T03:16:01.315679" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-07-09T03:16:01.315629" elapsed="0.000590"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-09T03:16:01.316457" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-07-09T03:16:01.316344" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-07-09T03:16:01.316309" elapsed="0.000288"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-09T03:16:01.316664" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-09T03:16:01.321427" elapsed="0.000388"/>
</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-07-09T03:16:01.321975" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T03:16:01.322296" elapsed="0.000129"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-09T03:16:01.317341" elapsed="0.005152"/>
</kw>
<msg time="2026-07-09T03:16:01.322646" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.13: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-07-09T03:05:54.312535" elapsed="607.010141"/>
</kw>
<status status="PASS" start="2026-07-09T03:05:54.312184" elapsed="607.010543"/>
</branch>
<status status="PASS" start="2026-07-09T03:05:54.311552" elapsed="607.011202"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.323233" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.13:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.13. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:07:00.066 16  switches: flows:  427860 431749 435145 446452 431258 449885 428248 438255 429558 431774 428838 418793 421137 426616 438015 413086  total = 114.944483 per ms 
03:08:00.167 16  switches: flows:  463696 465351 474428 469008 467233 472239 472574 471114 481562 467445 477257 473173 471369 466962 468629 458820  total = 125.135822 per ms 
03:09:00.594 16  switches: flows:  460276 465299 456000 463965 456843 453165 449931 461894 464888 451981 452212 463690 455801 456669 448507 464628  total = 121.233906 per ms 
03:10:00.695 16  switches: flows:  455510 472137 466691 456803 455305 475847 463750 468164 471192 465373 470693 469085 467171 453748 472646 467974  total = 123.992723 per ms 
03:11:00.799 16  switches: flows:  517277 519946 518966 515866 520449 511510 521388 512086 503011 515747 516466 509471 509610 511875 521427 511502  total = 137.042404 per ms 
03:12:00.900 16  switches: flows:  516109 519225 522721 527656 519328 509712 513998 513569 520548 516584 517576 518681 509938 519988 525340 518069  total = 137.918498 per ms 
03:13:01.001 16  switches: flows:  507369 491484 498327 497556 505939 472037 501234 497814 493821 508364 502763 508854 494930 486525 505307 496754  total = 132.594366 per ms 
03:14:01.109 16  switches: flows:  464860 472436 465451 464862 465093 466015 470025 468526 466528 472774 463942 453321 473332 467290 467352 462192  total = 124.177751 per ms 
03:15:01.210 16  switches: flows:  485110 484308 480422 495639 478301 471318 481767 477167 484010 484968 479242 479738 477377 483264 480992 486195  total = 128.281509 per ms 
03:16:01.311 16  switches: flows:  456378 463052 447450 446171 471922 448667 460531 437253 452405 442769 462395 475145 455707 452031 458914 462094  total = 121.344031 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 121233.91/137918.50/127969.00/43084.33 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:16:01.322917" elapsed="0.000393"/>
</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-07-09T03:16:01.323475" elapsed="0.000384"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-09T03:16:01.324285" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-09T03:16:01.324390" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 121233.91/137918.50/127969.00/43084.33 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-07-09T03:16:01.324020" elapsed="0.000397"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:16:01.324986" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 121233.91/137918.50/127969.00/43084.33 | 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-07-09T03:16:01.324571" elapsed="0.000442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.327477" 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-07-09T03:16:01.325156" elapsed="0.002380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.329972" level="INFO">121233.91/137918.50/127969.00/43084.33</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:16:01.327685" elapsed="0.002346"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:16:01.332448" 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-07-09T03:16:01.330184" elapsed="0.002293"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:16:01.335003" level="INFO">@{result_value_list} = [ 121233.91 | 137918.50 | 127969.00 | 43084.33 ]</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-07-09T03:16:01.332723" elapsed="0.002313"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.335613" level="INFO">Length is 4.</msg>
<msg time="2026-07-09T03:16:01.335706" 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-07-09T03:16:01.335216" elapsed="0.000515"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.340926" level="INFO">min :: 121233.91</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-07-09T03:16:01.336167" elapsed="0.004835"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-09T03:16:01.336005" elapsed="0.005043"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.345698" level="INFO">max :: 137918.50</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:16:01.341334" elapsed="0.004428"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-09T03:16:01.341164" elapsed="0.004638"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.350390" level="INFO">avg :: 127969.00</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-07-09T03:16:01.346049" elapsed="0.004412"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-09T03:16:01.345899" elapsed="0.004606"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.355522" level="INFO">stdev :: 43084.33</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-07-09T03:16:01.350775" elapsed="0.004821"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-09T03:16:01.350612" elapsed="0.005029"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-09T03:16:01.335804" elapsed="0.019875"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.359956" level="INFO">${min} = 121233.91</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-07-09T03:16:01.355887" elapsed="0.004134"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.364208" level="INFO">${max} = 137918.50</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-07-09T03:16:01.360201" elapsed="0.004040"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.368411" level="INFO">${average} = 127969.00</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-07-09T03:16:01.364466" elapsed="0.003979"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.372466" level="INFO">${stdev} = 43084.33</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-07-09T03:16:01.368622" elapsed="0.003873"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.373044" level="INFO">${date} = 2026-07-09 03:16:01</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-09T03:16:01.372675" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.373679" level="INFO">CBench Result: 2026-07-09 03:16:01,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,121233.91,137918.50,127969.00,43084.33</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-07-09T03:16:01.373229" elapsed="0.000510"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-09T03:16:01.374864" 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-07-09T03:16:01.374415" elapsed="0.000517"/>
</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-07-09T03:16:01.375083" elapsed="0.000504"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-09T03:16:01.373901" elapsed="0.001754"/>
</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-07-09T03:05:54.310384" elapsed="607.065333"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.376315" 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-07-09T03:16:01.375878" elapsed="0.000516"/>
</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-07-09T03:16:01.376913" elapsed="0.000262"/>
</kw>
<status status="PASS" start="2026-07-09T03:16:01.376609" elapsed="0.000636"/>
</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-07-09T03:05:54.308902" elapsed="607.068381"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.378721" 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-07-09T03:16:01.378312" elapsed="0.000468"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.380086" 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-07-09T03:16:01.379682" elapsed="0.000454"/>
</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-07-09T03:16:01.380539" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-07-09T03:16:01.380286" elapsed="0.000313"/>
</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-07-09T03:16:01.383883" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-07-09T03:16:01.383593" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-07-09T03:16:01.383569" elapsed="0.000430"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-09T03:16:01.384409" 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-07-09T03:16:01.384545" 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-07-09T03:16:01.384137" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.385192" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.13 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.73" 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-07-09T03:16:01.384711" elapsed="0.000542"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-09T03:16:01.385881" 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-07-09T03:16:01.385439" elapsed="0.000475"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-09T03:16:01.386925" level="INFO">Length is 0.</msg>
<msg time="2026-07-09T03:16:01.387020" 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-07-09T03:16:01.386571" elapsed="0.000474"/>
</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-07-09T03:16:01.387191" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-09T03:16:01.388567" level="INFO">Logging into '10.30.170.73:22' as 'jenkins'.</msg>
<msg time="2026-07-09T03:16:01.983253" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Thu Jul  9 03:16:01 UTC 2026

  System load:  0.2                Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.73
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Jul  9 03:05:54 2026 from 10.30.170.13
[?2004h[jenkins@releng-00446-20-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-07-09T03:16:01.388137" elapsed="0.595444"/>
</kw>
<msg time="2026-07-09T03:16:01.983667" 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-07-09T03:16:01.387718" elapsed="0.596029"/>
</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-07-09T03:16:01.386128" elapsed="0.597732"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-09T03:16:01.984477" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.13 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-09T03:26:08.151071" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-09T03:26:08.151610" level="INFO">${stdout} = </msg>
<msg time="2026-07-09T03:26:08.151717" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13: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-07-09T03:16:01.984105" elapsed="606.167677"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T03:26:08.152243" elapsed="0.000772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.154230" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.13. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:17:07.259 16  switches: flows:  91413 90843 89957 90343 88672 93688 93565 93612 91274 91705 89933 91818 89530 88113 90075 90634  total = 24.252917 per ms 
03:18:07.359 16  switches: flows:  111207 109983 111381 108390 107599 110165 110496 109041 107942 108739 106677 106354 107166 105843 104186 105594  total = 28.797901 per ms 
03:19:07.460 16  switches: flows:  106168 105553 106989 103376 102713 104980 106662 104910 101942 102660 100902 102883 104491 103032 99641 101222  total = 27.589345 per ms 
03:20:07.560 16  switches: flows:  113510 113386 114268 110749 110389 113025 113006 111796 109233 109569 108443 108605 110932 109320 106392 107018  total = 29.444875 per ms 
03:21:07.660 16  switches: flows:  115564 113760 116404 112682 111594 112277 115359 115744 109802 110564 111450 111517 112301 111365 108754 108972  total = 29.918545 per ms 
03:22:07.760 16  switches: flows:  114685 113437 115039 111160 110069 111352 114881 114503 109758 108622 109624 110300 110425 109723 106716 107950  total = 29.587971 per ms 
03:23:07.861 16  switches: flows:  115120 113795 115498 113579 110871 112129 115246 113427 111243 110281 110738 111263 110738 109067 107707 107586  total = 29.755142 per ms 
03:24:07.961 16  switches: flows:  116608 115968 114718 115904 111895 114549 115280 113879 112879 112227 113231 110183 112279 111299 109749 108892  total = 30.108772 per ms 
03:25:08.061 16  switches: flows:  116084 116592 114534 117565 113633 114889 115515 115123 111169 113471 113239 109791 113266 111369 108067 109692  total = 30.182942 per ms 
03:26:08.161 16  switches: flows:  114960 114507 113905 118022 112538 113224 116728 114018 109871 110580 112895 109734 113275 110735 109904 109052  total = 30.015618 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27589.34/30182.94/29489.01/9860.69 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:26:08.153411" elapsed="0.001166"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-09T03:26:08.155090" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-07-09T03:26:08.154772" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-07-09T03:26:08.154718" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-09T03:26:08.155569" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-07-09T03:26:08.155480" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-07-09T03:26:08.155440" elapsed="0.000277"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-09T03:26:08.155790" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-09T03:26:08.162221" elapsed="0.000620"/>
</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-07-09T03:26:08.162991" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-09T03:26:08.163284" elapsed="0.000121"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-09T03:26:08.156530" elapsed="0.006940"/>
</kw>
<msg time="2026-07-09T03:26:08.163602" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13: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-07-09T03:16:01.380948" elapsed="606.782681"/>
</kw>
<status status="PASS" start="2026-07-09T03:16:01.380626" elapsed="606.783055"/>
</branch>
<status status="PASS" start="2026-07-09T03:16:01.380261" elapsed="606.783443"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.164135" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.13:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.13. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:17:07.259 16  switches: flows:  91413 90843 89957 90343 88672 93688 93565 93612 91274 91705 89933 91818 89530 88113 90075 90634  total = 24.252917 per ms 
03:18:07.359 16  switches: flows:  111207 109983 111381 108390 107599 110165 110496 109041 107942 108739 106677 106354 107166 105843 104186 105594  total = 28.797901 per ms 
03:19:07.460 16  switches: flows:  106168 105553 106989 103376 102713 104980 106662 104910 101942 102660 100902 102883 104491 103032 99641 101222  total = 27.589345 per ms 
03:20:07.560 16  switches: flows:  113510 113386 114268 110749 110389 113025 113006 111796 109233 109569 108443 108605 110932 109320 106392 107018  total = 29.444875 per ms 
03:21:07.660 16  switches: flows:  115564 113760 116404 112682 111594 112277 115359 115744 109802 110564 111450 111517 112301 111365 108754 108972  total = 29.918545 per ms 
03:22:07.760 16  switches: flows:  114685 113437 115039 111160 110069 111352 114881 114503 109758 108622 109624 110300 110425 109723 106716 107950  total = 29.587971 per ms 
03:23:07.861 16  switches: flows:  115120 113795 115498 113579 110871 112129 115246 113427 111243 110281 110738 111263 110738 109067 107707 107586  total = 29.755142 per ms 
03:24:07.961 16  switches: flows:  116608 115968 114718 115904 111895 114549 115280 113879 112879 112227 113231 110183 112279 111299 109749 108892  total = 30.108772 per ms 
03:25:08.061 16  switches: flows:  116084 116592 114534 117565 113633 114889 115515 115123 111169 113471 113239 109791 113266 111369 108067 109692  total = 30.182942 per ms 
03:26:08.161 16  switches: flows:  114960 114507 113905 118022 112538 113224 116728 114018 109871 110580 112895 109734 113275 110735 109904 109052  total = 30.015618 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27589.34/30182.94/29489.01/9860.69 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:26:08.163843" elapsed="0.000367"/>
</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-07-09T03:26:08.164359" elapsed="0.000404"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-09T03:26:08.165142" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-09T03:26:08.165232" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 27589.34/30182.94/29489.01/9860.69 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-07-09T03:26:08.164925" elapsed="0.000332"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:26:08.165679" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 27589.34/30182.94/29489.01/9860.69 | 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-07-09T03:26:08.165425" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.168079" 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-07-09T03:26:08.165850" elapsed="0.002285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.170507" level="INFO">27589.34/30182.94/29489.01/9860.69</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:26:08.168282" elapsed="0.002281"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:26:08.172882" 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-07-09T03:26:08.170718" elapsed="0.002191"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-09T03:26:08.175386" level="INFO">@{result_value_list} = [ 27589.34 | 30182.94 | 29489.01 | 9860.69 ]</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-07-09T03:26:08.173099" elapsed="0.002316"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.175875" level="INFO">Length is 4.</msg>
<msg time="2026-07-09T03:26:08.175963" 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-07-09T03:26:08.175570" elapsed="0.000417"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.180631" level="INFO">min :: 27589.34</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-09T03:26:08.176358" elapsed="0.004332"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-09T03:26:08.176231" elapsed="0.004496"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.185165" level="INFO">max :: 30182.94</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-07-09T03:26:08.180935" elapsed="0.004285"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-09T03:26:08.180811" elapsed="0.004443"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.189750" level="INFO">avg :: 29489.01</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-07-09T03:26:08.185474" elapsed="0.004331"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-09T03:26:08.185335" elapsed="0.004505"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.194588" level="INFO">stdev :: 9860.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-07-09T03:26:08.190046" elapsed="0.004599"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-09T03:26:08.189921" elapsed="0.004758"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-09T03:26:08.176050" elapsed="0.018659"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.198518" level="INFO">${min} = 27589.34</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-07-09T03:26:08.194866" elapsed="0.003679"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.202568" level="INFO">${max} = 30182.94</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-07-09T03:26:08.198697" elapsed="0.003898"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.206458" level="INFO">${average} = 29489.01</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-07-09T03:26:08.202754" elapsed="0.003732"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.210387" level="INFO">${stdev} = 9860.69</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-07-09T03:26:08.206638" elapsed="0.003779"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.210948" level="INFO">${date} = 2026-07-09 03:26:08</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-09T03:26:08.210591" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.211540" level="INFO">CBench Result: 2026-07-09 03:26:08,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,27589.34,30182.94,29489.01,9860.69</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-07-09T03:26:08.211118" elapsed="0.000478"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-09T03:26:08.212732" 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-07-09T03:26:08.212228" elapsed="0.000572"/>
</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-07-09T03:26:08.212947" elapsed="0.000477"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-09T03:26:08.211753" elapsed="0.001736"/>
</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-07-09T03:16:01.379097" elapsed="606.834452"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.214009" 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-07-09T03:26:08.213695" elapsed="0.000371"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-09T03:26:08.215383" 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-07-09T03:26:08.214873" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-07-09T03:26:08.215652" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-07-09T03:26:08.215497" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-07-09T03:26:08.215474" elapsed="0.000273"/>
</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-07-09T03:26:08.215893" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-07-09T03:26:08.216047" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-07-09T03:26:08.216203" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-07-09T03:26:08.216426" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-07-09T03:26:08.216576" elapsed="0.000020"/>
</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-07-09T03:26:08.216719" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-07-09T03:26:08.216861" 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-07-09T03:26:08.217085" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-07-09T03:26:08.216941" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-07-09T03:26:08.216925" elapsed="0.000235"/>
</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-07-09T03:26:08.214530" elapsed="0.002680"/>
</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-07-09T03:16:01.377673" elapsed="606.839583"/>
</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-07-09T02:55:45.179118" elapsed="1823.038742"/>
</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>
