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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-20T02:12:36.706331" elapsed="0.847450"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-20T02:12:37.604676" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-20T02:12:37.554075" elapsed="0.050787"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-20T02:12:37.607019" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-20T02:12:37.607143" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-20T02:12:37.605173" elapsed="0.002001"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-20T02:12:37.607343" elapsed="0.000361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:12:37.607898" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:12:37.608681" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:12:37.608308" elapsed="0.000463"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-20T02:12:37.608829" elapsed="0.000062"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.56
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-20T02:12:36.704781" elapsed="0.904252"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-08-20T02:12:36.701062" elapsed="0.908040"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-20T02:12:37.609708" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-20T02:12:37.609300" elapsed="0.000491"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-20T02:12:37.610211" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-20T02:12:37.609949" elapsed="0.000337"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-20T02:12:37.610918" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-20T02:12:37.610448" elapsed="0.000500"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-20T02:12:37.611470" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-20T02:12:37.611124" elapsed="0.000392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-20T02:12:37.612101" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-20T02:12:37.611692" elapsed="0.000436"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-20T02:12:37.612621" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-20T02:12:37.612300" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-08-20T02:12:37.612991" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:12:37.612772" elapsed="0.000277"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-20T02:12:37.617836" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:12:37.617381" elapsed="0.000484"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-20T02:12:37.618943" level="INFO">Length is 0.</msg>
<msg time="2026-08-20T02:12:37.619030" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-20T02:12:37.618436" elapsed="0.000619"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:12:37.619202" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-20T02:12:37.620686" level="INFO">Logging into '10.30.171.11:22' as 'jenkins'.</msg>
<msg time="2026-08-20T02:12:38.061818" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 20 02:11:55 UTC 2026

  System load:  0.38               Processes:             111
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.11
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-00446-62-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-20T02:12:37.620134" elapsed="0.441866"/>
</kw>
<msg time="2026-08-20T02:12:38.062099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:12:37.619775" elapsed="0.442421"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-20T02:12:37.618074" elapsed="0.444251"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.071370" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-08-20T02:12:38.062550" elapsed="0.010785"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:12:38.073787" elapsed="0.000610"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-08-20T02:12:37.616837" elapsed="0.457703"/>
</kw>
<status status="PASS" start="2026-08-20T02:12:37.613350" elapsed="0.461277"/>
</branch>
<status status="PASS" start="2026-08-20T02:12:37.612745" elapsed="0.461953"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-20T02:12:38.075088" elapsed="0.001084"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-20T02:12:38.083434" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-08-20T02:12:38.083253" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-08-20T02:12:38.083218" elapsed="0.000330"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-20T02:12:38.087926" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-08-20T02:12:38.087805" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-08-20T02:12:38.087785" elapsed="0.000210"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:12:38.088138" elapsed="0.000473"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.089045" level="INFO">Logging into '10.30.170.56:8101' as 'karaf'.</msg>
<msg time="2026-08-20T02:12:38.308620" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-20T02:12:38.088777" elapsed="0.220075"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.404150" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-20T02:12:38.309214" elapsed="0.095104"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.409931" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-20T02:12:38.410147" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-20T02:12:38.404600" elapsed="0.005580"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-20T02:12:38.410326" elapsed="0.000331"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:12:38.410839" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:12:38.411560" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:12:38.411221" elapsed="0.000397"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-20T02:12:38.411675" elapsed="0.000083"/>
</return>
<msg time="2026-08-20T02:12:38.411942" 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.170.56
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-20T02:12:38.087430" elapsed="0.324555"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-20T02:12:38.412152" elapsed="0.000621"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-20T02:12:38.412830" elapsed="0.000037"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-08-20T02:12:38.082804" elapsed="0.330186"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-20T02:12:38.417012" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-08-20T02:12:38.416859" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-08-20T02:12:38.416830" elapsed="0.000254"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:12:38.417232" elapsed="0.000520"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.418443" level="INFO">Logging into '10.30.170.56:8101' as 'karaf'.</msg>
<msg time="2026-08-20T02:12:38.574305" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-20T02:12:38.418151" elapsed="0.156346"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.599680" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-20T02:12:38.574836" elapsed="0.025100"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.604075" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-20T02:12:38.604290" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-20T02:12:38.600408" elapsed="0.003948"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-20T02:12:38.604654" elapsed="0.000489"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:12:38.605459" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:12:38.606793" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:12:38.606189" elapsed="0.000703"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-20T02:12:38.607009" elapsed="0.000075"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.56
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-20T02:12:38.416461" elapsed="0.190867"/>
</kw>
<status status="PASS" start="2026-08-20T02:12:36.698924" elapsed="1.908528"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:12:38.610783" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:12:38.608933" elapsed="0.001947"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-20T02:12:38.612876" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-20T02:12:38.612382" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-20T02:12:38.613283" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:12:38.613027" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-20T02:12:38.616444" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:12:38.616189" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-08-20T02:12:38.616169" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.616946" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-20T02:12:38.616675" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:12:38.617764" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.56 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.11" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:12:38.617254" elapsed="0.000588"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.618599" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:12:38.617992" elapsed="0.000642"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-20T02:12:38.619650" level="INFO">Length is 0.</msg>
<msg time="2026-08-20T02:12:38.619761" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-20T02:12:38.619303" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:12:38.619930" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.621154" level="INFO">Logging into '10.30.171.11:22' as 'jenkins'.</msg>
<msg time="2026-08-20T02:12:38.979084" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 20 02:11:55 UTC 2026

  System load:  0.38               Processes:             111
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.11
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Aug 20 02:12:37 2026 from 10.30.171.48
[?2004h[jenkins@releng-00446-62-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-20T02:12:38.620793" elapsed="0.358641"/>
</kw>
<msg time="2026-08-20T02:12:38.979600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:12:38.620424" elapsed="0.359390"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-20T02:12:38.618880" elapsed="0.361223"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-20T02:12:38.981204" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.56 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-20T02:22:45.107124" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-20T02:22:45.107481" level="INFO">${stdout} = </msg>
<msg time="2026-08-20T02:22:45.107530" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56: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-08-20T02:12:38.980566" elapsed="606.126992"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:22:45.107851" elapsed="0.000467"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.108937" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.56. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:13:44.197 16  switches: flows:  101188 101259 103651 102002 99819 103574 102150 101199 101083 98549 99669 97957 98903 100261 98576 97132  total = 26.782867 per ms 
02:14:44.297 16  switches: flows:  115099 115746 120338 118587 115418 117259 118099 116916 116029 114492 114144 113754 113102 115016 113303 112073  total = 30.771527 per ms 
02:15:44.397 16  switches: flows:  119039 120192 122475 119580 118077 118885 118484 119326 117659 116866 114345 116330 116344 116145 117009 115014  total = 31.377122 per ms 
02:16:44.499 16  switches: flows:  114822 114783 117239 115432 112607 113362 114445 113648 113014 112043 109900 112389 112068 110764 111811 110998  total = 30.105086 per ms 
02:17:44.600 16  switches: flows:  116614 115782 119321 119273 114948 118032 114193 116290 115218 113392 112463 113400 112786 110958 113449 114403  total = 30.624215 per ms 
02:18:44.701 16  switches: flows:  118443 117125 121991 121018 117482 116397 116884 114782 114787 115030 109934 112346 116289 115754 114455 114012  total = 30.893903 per ms 
02:19:44.802 16  switches: flows:  121822 120610 122448 122486 120216 118450 118084 118463 116567 116051 114144 115643 117743 116159 116095 116911  total = 31.478890 per ms 
02:20:44.903 16  switches: flows:  119473 119921 122923 121708 119022 117364 117532 117319 116069 112393 113344 114954 115894 116098 116214 115105  total = 31.203459 per ms 
02:21:45.004 16  switches: flows:  120185 120132 124763 122701 119541 119665 117108 116428 115782 114691 114337 115778 117998 117817 116425 116979  total = 31.452886 per ms 
02:22:45.105 16  switches: flows:  120384 120634 122648 122628 119857 119820 118693 118895 115073 115203 113927 115447 117595 117304 116465 116642  total = 31.467679 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30105.09/31478.89/31041.64/10357.02 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.108535" elapsed="0.000577"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-20T02:22:45.109386" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-08-20T02:22:45.109221" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-08-20T02:22:45.109188" elapsed="0.000312"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-20T02:22:45.109600" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-08-20T02:22:45.109563" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-08-20T02:22:45.109546" elapsed="0.000117"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-20T02:22:45.109695" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:22:45.112273" elapsed="0.000375"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:22:45.112811" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:22:45.113113" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-20T02:22:45.110040" elapsed="0.003227"/>
</kw>
<msg time="2026-08-20T02:22:45.113397" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56: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-08-20T02:12:38.613753" elapsed="606.499670"/>
</kw>
<status status="PASS" start="2026-08-20T02:12:38.613375" elapsed="606.500098"/>
</branch>
<status status="PASS" start="2026-08-20T02:12:38.613001" elapsed="606.500496"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.113944" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.56. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:13:44.197 16  switches: flows:  101188 101259 103651 102002 99819 103574 102150 101199 101083 98549 99669 97957 98903 100261 98576 97132  total = 26.782867 per ms 
02:14:44.297 16  switches: flows:  115099 115746 120338 118587 115418 117259 118099 116916 116029 114492 114144 113754 113102 115016 113303 112073  total = 30.771527 per ms 
02:15:44.397 16  switches: flows:  119039 120192 122475 119580 118077 118885 118484 119326 117659 116866 114345 116330 116344 116145 117009 115014  total = 31.377122 per ms 
02:16:44.499 16  switches: flows:  114822 114783 117239 115432 112607 113362 114445 113648 113014 112043 109900 112389 112068 110764 111811 110998  total = 30.105086 per ms 
02:17:44.600 16  switches: flows:  116614 115782 119321 119273 114948 118032 114193 116290 115218 113392 112463 113400 112786 110958 113449 114403  total = 30.624215 per ms 
02:18:44.701 16  switches: flows:  118443 117125 121991 121018 117482 116397 116884 114782 114787 115030 109934 112346 116289 115754 114455 114012  total = 30.893903 per ms 
02:19:44.802 16  switches: flows:  121822 120610 122448 122486 120216 118450 118084 118463 116567 116051 114144 115643 117743 116159 116095 116911  total = 31.478890 per ms 
02:20:44.903 16  switches: flows:  119473 119921 122923 121708 119022 117364 117532 117319 116069 112393 113344 114954 115894 116098 116214 115105  total = 31.203459 per ms 
02:21:45.004 16  switches: flows:  120185 120132 124763 122701 119541 119665 117108 116428 115782 114691 114337 115778 117998 117817 116425 116979  total = 31.452886 per ms 
02:22:45.105 16  switches: flows:  120384 120634 122648 122628 119857 119820 118693 118895 115073 115203 113927 115447 117595 117304 116465 116642  total = 31.467679 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30105.09/31478.89/31041.64/10357.02 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.113636" elapsed="0.000381"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-20T02:22:45.114163" elapsed="0.000366"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-20T02:22:45.114936" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-20T02:22:45.115033" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30105.09/31478.89/31041.64/10357.02 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-20T02:22:45.114690" elapsed="0.000368"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:22:45.115470" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30105.09/31478.89/31041.64/10357.02 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:22:45.115213" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.117900" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.115642" elapsed="0.002314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.120303" level="INFO">30105.09/31478.89/31041.64/10357.02</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.118102" elapsed="0.002256"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:22:45.122749" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:22:45.120542" elapsed="0.002235"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:22:45.125172" level="INFO">@{result_value_list} = [ 30105.09 | 31478.89 | 31041.64 | 10357.02 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:22:45.122963" elapsed="0.002236"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.125654" level="INFO">Length is 4.</msg>
<msg time="2026-08-20T02:22:45.125764" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-20T02:22:45.125350" elapsed="0.000440"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.130489" level="INFO">min :: 30105.09</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.126179" elapsed="0.004366"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-20T02:22:45.126047" elapsed="0.004533"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.135110" level="INFO">max :: 31478.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.130815" elapsed="0.004350"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-20T02:22:45.130670" elapsed="0.004529"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.139751" level="INFO">avg :: 31041.64</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.135414" elapsed="0.004398"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-20T02:22:45.135286" elapsed="0.004560"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.144430" level="INFO">stdev :: 10357.02</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.140071" elapsed="0.004419"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-20T02:22:45.139940" elapsed="0.004587"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-20T02:22:45.125858" elapsed="0.018702"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.148583" level="INFO">${min} = 30105.09</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:22:45.144735" elapsed="0.003876"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.154034" level="INFO">${max} = 31478.89</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:22:45.148790" elapsed="0.005271"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.158022" level="INFO">${average} = 31041.64</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:22:45.154214" elapsed="0.003835"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.162045" level="INFO">${stdev} = 10357.02</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:22:45.158201" elapsed="0.003871"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.162603" level="INFO">${date} = 2026-08-20 02:22:45</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-20T02:22:45.162231" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.163216" level="INFO">CBench Result: 2026-08-20 02:22:45,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30105.09,31478.89,31041.64,10357.02</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.162791" elapsed="0.000481"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-20T02:22:45.164340" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-20T02:22:45.163905" elapsed="0.000520"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-20T02:22:45.164578" elapsed="0.000485"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-20T02:22:45.163415" elapsed="0.001720"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-08-20T02:12:38.611514" elapsed="606.553680"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.165662" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-20T02:22:45.165344" elapsed="0.000390"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-20T02:22:45.166264" elapsed="0.000268"/>
</kw>
<status status="PASS" start="2026-08-20T02:22:45.165946" elapsed="0.000656"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-20T02:12:38.607697" elapsed="606.558943"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.168077" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.167678" elapsed="0.000455"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.169534" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-20T02:22:45.169197" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-20T02:22:45.169930" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:22:45.169693" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-20T02:22:45.172928" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:22:45.172657" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-08-20T02:22:45.172639" elapsed="0.000370"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-20T02:22:45.173334" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-20T02:22:45.173137" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.174053" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.56 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.11" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:22:45.173609" elapsed="0.000501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-20T02:22:45.174641" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:22:45.174248" elapsed="0.000419"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-20T02:22:45.175578" level="INFO">Length is 0.</msg>
<msg time="2026-08-20T02:22:45.175666" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-20T02:22:45.175265" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:22:45.175849" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-20T02:22:45.177105" level="INFO">Logging into '10.30.171.11:22' as 'jenkins'.</msg>
<msg time="2026-08-20T02:22:45.764583" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 20 02:22:45 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Aug 20 02:12:38 2026 from 10.30.171.48
[?2004h[jenkins@releng-00446-62-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-20T02:22:45.176736" elapsed="0.588071"/>
</kw>
<msg time="2026-08-20T02:22:45.764900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:22:45.176373" elapsed="0.588624"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-20T02:22:45.174892" elapsed="0.590227"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-20T02:22:45.765736" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.56 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-20T02:32:53.019495" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-20T02:32:53.020117" level="INFO">${stdout} = </msg>
<msg time="2026-08-20T02:32:53.020222" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-20T02:22:45.765369" elapsed="607.254915"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:32:53.020784" elapsed="0.000664"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.022563" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.56. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:23:50.890 16  switches: flows:  485241 466255 497724 474183 470425 490473 476553 479011 476993 472963 467516 459173 475577 465595 454894 471224  total = 126.396667 per ms 
02:24:51.520 16  switches: flows:  559767 562696 556958 568811 557813 560668 556568 556063 559658 559168 570062 555912 550612 568455 558747 560816  total = 147.830017 per ms 
02:25:51.621 16  switches: flows:  597202 580384 573001 581071 585519 585788 578631 575340 578265 584904 578840 582502 570151 597524 576758 584861  total = 154.919124 per ms 
02:26:51.723 16  switches: flows:  628819 630316 632031 637969 634843 637577 634752 630168 638946 628705 638037 631273 628683 632590 630787 638956  total = 168.623417 per ms 
02:27:51.826 16  switches: flows:  612428 614518 623377 616821 622589 616232 615326 615876 616687 615910 619767 620353 612576 615639 617092 610419  total = 164.145428 per ms 
02:28:51.927 16  switches: flows:  573722 573598 566174 570264 573195 577491 571959 571654 582469 577991 574876 586923 569369 562133 575869 572932  total = 152.754308 per ms 
02:29:52.028 16  switches: flows:  617301 613480 607142 610587 609465 611599 609498 604965 617305 622159 605872 609885 613997 613769 610765 613006  total = 162.905825 per ms 
02:30:52.819 16  switches: flows:  626578 622380 623899 626088 612507 627558 620150 616996 621844 623824 619647 617779 620788 626181 615868 623568  total = 163.606753 per ms 
02:31:52.920 16  switches: flows:  607855 601443 599870 604822 602022 614089 610841 600006 598775 614250 591767 606071 615262 599456 597068 604508  total = 160.864437 per ms 
02:32:53.022 16  switches: flows:  625949 632650 623238 628454 630757 628618 634296 627962 634305 627914 630319 630922 625361 638403 630433 626944  total = 167.661053 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 147830.02/168623.42/160367.82/53867.62 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.021837" elapsed="0.001113"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-20T02:32:53.023436" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-08-20T02:32:53.023137" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-08-20T02:32:53.023086" elapsed="0.000575"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-20T02:32:53.023879" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-08-20T02:32:53.023822" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-08-20T02:32:53.023785" elapsed="0.000181"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-20T02:32:53.024009" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:32:53.027481" elapsed="0.000481"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:32:53.028165" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:32:53.028566" elapsed="0.000163"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-20T02:32:53.024437" elapsed="0.004371"/>
</kw>
<msg time="2026-08-20T02:32:53.028985" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-20T02:22:45.170320" elapsed="607.858702"/>
</kw>
<status status="PASS" start="2026-08-20T02:22:45.170013" elapsed="607.859077"/>
</branch>
<status status="PASS" start="2026-08-20T02:22:45.169670" elapsed="607.859453"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.029742" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.56. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:23:50.890 16  switches: flows:  485241 466255 497724 474183 470425 490473 476553 479011 476993 472963 467516 459173 475577 465595 454894 471224  total = 126.396667 per ms 
02:24:51.520 16  switches: flows:  559767 562696 556958 568811 557813 560668 556568 556063 559658 559168 570062 555912 550612 568455 558747 560816  total = 147.830017 per ms 
02:25:51.621 16  switches: flows:  597202 580384 573001 581071 585519 585788 578631 575340 578265 584904 578840 582502 570151 597524 576758 584861  total = 154.919124 per ms 
02:26:51.723 16  switches: flows:  628819 630316 632031 637969 634843 637577 634752 630168 638946 628705 638037 631273 628683 632590 630787 638956  total = 168.623417 per ms 
02:27:51.826 16  switches: flows:  612428 614518 623377 616821 622589 616232 615326 615876 616687 615910 619767 620353 612576 615639 617092 610419  total = 164.145428 per ms 
02:28:51.927 16  switches: flows:  573722 573598 566174 570264 573195 577491 571959 571654 582469 577991 574876 586923 569369 562133 575869 572932  total = 152.754308 per ms 
02:29:52.028 16  switches: flows:  617301 613480 607142 610587 609465 611599 609498 604965 617305 622159 605872 609885 613997 613769 610765 613006  total = 162.905825 per ms 
02:30:52.819 16  switches: flows:  626578 622380 623899 626088 612507 627558 620150 616996 621844 623824 619647 617779 620788 626181 615868 623568  total = 163.606753 per ms 
02:31:52.920 16  switches: flows:  607855 601443 599870 604822 602022 614089 610841 600006 598775 614250 591767 606071 615262 599456 597068 604508  total = 160.864437 per ms 
02:32:53.022 16  switches: flows:  625949 632650 623238 628454 630757 628618 634296 627962 634305 627914 630319 630922 625361 638403 630433 626944  total = 167.661053 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 147830.02/168623.42/160367.82/53867.62 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.029318" elapsed="0.000531"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-20T02:32:53.030054" elapsed="0.000499"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-20T02:32:53.031112" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-20T02:32:53.031237" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 147830.02/168623.42/160367.82/53867.62 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-20T02:32:53.030806" elapsed="0.000466"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:32:53.031863" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 147830.02/168623.42/160367.82/53867.62 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:32:53.031484" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.035238" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.032103" elapsed="0.003216"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.037827" level="INFO">147830.02/168623.42/160367.82/53867.62</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.035521" elapsed="0.002367"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:32:53.040256" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:32:53.038036" elapsed="0.002247"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:32:53.042675" level="INFO">@{result_value_list} = [ 147830.02 | 168623.42 | 160367.82 | 53867.62 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:32:53.040477" elapsed="0.002226"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.043186" level="INFO">Length is 4.</msg>
<msg time="2026-08-20T02:32:53.043274" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-20T02:32:53.042881" elapsed="0.000417"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.048156" level="INFO">min :: 147830.02</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.043671" elapsed="0.004541"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-20T02:32:53.043543" elapsed="0.004703"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.052757" level="INFO">max :: 168623.42</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.048462" elapsed="0.004351"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-20T02:32:53.048335" elapsed="0.004512"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.057363" level="INFO">avg :: 160367.82</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.053060" elapsed="0.004359"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-20T02:32:53.052935" elapsed="0.004517"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.062057" level="INFO">stdev :: 53867.62</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.057666" elapsed="0.004447"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-20T02:32:53.057538" elapsed="0.004610"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-20T02:32:53.043361" elapsed="0.018818"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.066118" level="INFO">${min} = 147830.02</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:32:53.062335" elapsed="0.003810"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.070209" level="INFO">${max} = 168623.42</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:32:53.066298" elapsed="0.003937"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.074126" level="INFO">${average} = 160367.82</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:32:53.070388" elapsed="0.003765"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.078032" level="INFO">${stdev} = 53867.62</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:32:53.074302" elapsed="0.003757"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.078565" level="INFO">${date} = 2026-08-20 02:32:53</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-20T02:32:53.078216" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.079190" level="INFO">CBench Result: 2026-08-20 02:32:53,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,147830.02,168623.42,160367.82,53867.62</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.078778" elapsed="0.000468"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-20T02:32:53.080247" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-20T02:32:53.079858" elapsed="0.000456"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-20T02:32:53.080462" elapsed="0.000467"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-20T02:32:53.079380" elapsed="0.001611"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-08-20T02:22:45.168467" elapsed="607.912582"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.081505" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-20T02:32:53.081195" elapsed="0.000366"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-20T02:32:53.082075" elapsed="0.000260"/>
</kw>
<status status="PASS" start="2026-08-20T02:32:53.081777" elapsed="0.000628"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-20T02:22:45.167108" elapsed="607.915334"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.083640" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.083266" elapsed="0.000430"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.084914" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-20T02:32:53.084563" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-20T02:32:53.085284" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:32:53.085064" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-20T02:32:53.088372" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:32:53.088128" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-08-20T02:32:53.088108" elapsed="0.000345"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-20T02:32:53.088776" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-20T02:32:53.088581" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.089471" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.56 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.11" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:32:53.089054" elapsed="0.000475"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-20T02:32:53.090072" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:32:53.089665" elapsed="0.000434"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-20T02:32:53.091013" level="INFO">Length is 0.</msg>
<msg time="2026-08-20T02:32:53.091102" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-20T02:32:53.090670" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:32:53.091268" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-20T02:32:53.092452" level="INFO">Logging into '10.30.171.11:22' as 'jenkins'.</msg>
<msg time="2026-08-20T02:32:53.701180" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Thu Aug 20 02:32:53 UTC 2026

  System load:  0.35               Processes:             105
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.11
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Thu Aug 20 02:22:45 2026 from 10.30.171.48
[?2004h[jenkins@releng-00446-62-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-20T02:32:53.092099" elapsed="0.609323"/>
</kw>
<msg time="2026-08-20T02:32:53.701538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-20T02:32:53.091756" elapsed="0.609887"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-20T02:32:53.090297" elapsed="0.611520"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-20T02:32:53.702582" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.56 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-20T02:42:59.744294" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-20T02:42:59.744891" level="INFO">${stdout} = </msg>
<msg time="2026-08-20T02:42:59.745003" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56: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-08-20T02:32:53.702115" elapsed="606.042946"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:42:59.745496" elapsed="0.000696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.747352" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.56. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:33:58.848 16  switches: flows:  103687 102405 104534 102957 102067 103093 102598 107395 99714 101272 100873 109336 98982 102368 107793 100058  total = 27.485533 per ms 
02:34:58.948 16  switches: flows:  109870 108447 107802 106631 107409 108534 109574 108847 108201 106799 107107 106027 105914 106135 105503 107434  total = 28.622749 per ms 
02:35:59.048 16  switches: flows:  117219 115488 116556 118924 114750 115208 114443 117579 113969 115914 115409 114316 115089 114575 115655 112363  total = 30.739624 per ms 
02:36:59.149 16  switches: flows:  117876 116614 116616 119550 116032 117524 116661 118947 114690 116886 117094 114614 117133 117308 117358 114733  total = 31.108686 per ms 
02:37:59.249 16  switches: flows:  116237 114990 114437 117978 116027 116381 115798 116986 113657 115226 114115 113919 115506 115730 115368 112882  total = 30.702676 per ms 
02:38:59.349 16  switches: flows:  114587 112930 115197 115287 115915 115182 114248 115132 112235 112633 112142 112165 113138 112828 113302 112280  total = 30.269493 per ms 
02:39:59.449 16  switches: flows:  116617 116397 119379 119339 118129 117426 116068 118643 114092 115798 114544 114592 113095 116096 115574 114922  total = 30.960153 per ms 
02:40:59.550 16  switches: flows:  115985 116912 119317 119381 118233 118370 116199 120722 114674 115328 113211 114377 112424 116063 115765 117843  total = 31.028260 per ms 
02:41:59.650 16  switches: flows:  114089 113966 115840 115273 114514 113269 113494 115084 111734 112020 112555 112974 111313 110642 111682 111407  total = 30.113985 per ms 
02:42:59.750 16  switches: flows:  114886 116242 117271 119561 118150 118916 119224 119550 116022 115793 117607 115640 113617 114776 115229 114940  total = 31.071823 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28622.75/31108.69/30513.05/10198.35 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.746567" elapsed="0.001133"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-20T02:42:59.748219" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-08-20T02:42:59.747918" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-08-20T02:42:59.747866" elapsed="0.000580"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-20T02:42:59.748664" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-08-20T02:42:59.748581" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-08-20T02:42:59.748545" elapsed="0.000296"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-20T02:42:59.748912" 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-08-20T02:42:59.753619" elapsed="0.000363"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-20T02:42:59.754134" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-20T02:42:59.754428" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-20T02:42:59.749592" elapsed="0.004991"/>
</kw>
<msg time="2026-08-20T02:42:59.754719" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56: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-08-20T02:32:53.085679" elapsed="606.669082"/>
</kw>
<status status="PASS" start="2026-08-20T02:32:53.085367" elapsed="606.669445"/>
</branch>
<status status="PASS" start="2026-08-20T02:32:53.085044" elapsed="606.669793"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.755281" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.56:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.56. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:33:58.848 16  switches: flows:  103687 102405 104534 102957 102067 103093 102598 107395 99714 101272 100873 109336 98982 102368 107793 100058  total = 27.485533 per ms 
02:34:58.948 16  switches: flows:  109870 108447 107802 106631 107409 108534 109574 108847 108201 106799 107107 106027 105914 106135 105503 107434  total = 28.622749 per ms 
02:35:59.048 16  switches: flows:  117219 115488 116556 118924 114750 115208 114443 117579 113969 115914 115409 114316 115089 114575 115655 112363  total = 30.739624 per ms 
02:36:59.149 16  switches: flows:  117876 116614 116616 119550 116032 117524 116661 118947 114690 116886 117094 114614 117133 117308 117358 114733  total = 31.108686 per ms 
02:37:59.249 16  switches: flows:  116237 114990 114437 117978 116027 116381 115798 116986 113657 115226 114115 113919 115506 115730 115368 112882  total = 30.702676 per ms 
02:38:59.349 16  switches: flows:  114587 112930 115197 115287 115915 115182 114248 115132 112235 112633 112142 112165 113138 112828 113302 112280  total = 30.269493 per ms 
02:39:59.449 16  switches: flows:  116617 116397 119379 119339 118129 117426 116068 118643 114092 115798 114544 114592 113095 116096 115574 114922  total = 30.960153 per ms 
02:40:59.550 16  switches: flows:  115985 116912 119317 119381 118233 118370 116199 120722 114674 115328 113211 114377 112424 116063 115765 117843  total = 31.028260 per ms 
02:41:59.650 16  switches: flows:  114089 113966 115840 115273 114514 113269 113494 115084 111734 112020 112555 112974 111313 110642 111682 111407  total = 30.113985 per ms 
02:42:59.750 16  switches: flows:  114886 116242 117271 119561 118150 118916 119224 119550 116022 115793 117607 115640 113617 114776 115229 114940  total = 31.071823 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28622.75/31108.69/30513.05/10198.35 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.754984" elapsed="0.000372"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-20T02:42:59.755511" elapsed="0.000405"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-20T02:42:59.756302" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-20T02:42:59.756392" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28622.75/31108.69/30513.05/10198.35 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-20T02:42:59.756080" elapsed="0.000337"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:42:59.756844" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28622.75/31108.69/30513.05/10198.35 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:42:59.756570" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.759246" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.757016" elapsed="0.002287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.761730" level="INFO">28622.75/31108.69/30513.05/10198.35</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.759447" elapsed="0.002343"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:42:59.764215" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:42:59.761946" elapsed="0.002296"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-20T02:42:59.766655" level="INFO">@{result_value_list} = [ 28622.75 | 31108.69 | 30513.05 | 10198.35 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-20T02:42:59.764438" elapsed="0.002246"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.767165" level="INFO">Length is 4.</msg>
<msg time="2026-08-20T02:42:59.767253" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-20T02:42:59.766856" elapsed="0.000421"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.772017" level="INFO">min :: 28622.75</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.767659" elapsed="0.004421"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-20T02:42:59.767528" elapsed="0.004589"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.776647" level="INFO">max :: 31108.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-08-20T02:42:59.772348" elapsed="0.004357"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-20T02:42:59.772210" elapsed="0.004545"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.781349" level="INFO">avg :: 30513.05</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.776966" elapsed="0.004440"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-20T02:42:59.776840" elapsed="0.004600"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.786064" level="INFO">stdev :: 10198.35</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.781658" elapsed="0.004462"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-20T02:42:59.781525" elapsed="0.004629"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-20T02:42:59.767340" elapsed="0.018845"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.790295" level="INFO">${min} = 28622.75</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:42:59.786358" elapsed="0.003964"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.794239" level="INFO">${max} = 31108.69</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:42:59.790478" elapsed="0.003787"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.798340" level="INFO">${average} = 30513.05</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:42:59.794418" elapsed="0.003949"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.802292" level="INFO">${stdev} = 10198.35</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-20T02:42:59.798523" elapsed="0.003796"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.802842" level="INFO">${date} = 2026-08-20 02:42:59</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-20T02:42:59.802478" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.803424" level="INFO">CBench Result: 2026-08-20 02:42:59,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28622.75,31108.69,30513.05,10198.35</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-20T02:42:59.803019" elapsed="0.000462"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-20T02:42:59.804540" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-20T02:42:59.804093" elapsed="0.000515"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-20T02:42:59.804792" elapsed="0.000461"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-20T02:42:59.803615" elapsed="0.001702"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-08-20T02:32:53.084017" elapsed="606.721358"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.805852" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-20T02:42:59.805520" elapsed="0.000389"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-20T02:42:59.807104" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-20T02:42:59.806602" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-20T02:42:59.807354" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-08-20T02:42:59.807207" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-08-20T02:42:59.807188" elapsed="0.000252"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-08-20T02:42:59.807579" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-08-20T02:42:59.807752" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-08-20T02:42:59.807914" 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-08-20T02:42:59.808105" 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-08-20T02:42:59.808255" elapsed="0.000026"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-08-20T02:42:59.808407" 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-08-20T02:42:59.808556" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-08-20T02:42:59.808815" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-20T02:42:59.808640" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-08-20T02:42:59.808622" elapsed="0.000275"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-08-20T02:42:59.806268" elapsed="0.002681"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-20T02:32:53.082764" elapsed="606.726232"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-08-20T02:12:36.108338" elapsed="1823.701062"/>
</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>
