<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-21T01:56:51.863602" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-04-21T01:56:52.469568" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-21T01:56:52.469418" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-21T01:56:52.469388" elapsed="0.000279"/>
</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-04-21T01:56:52.469810" elapsed="0.000529"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-21T01:56:52.470807" level="INFO">Logging into '10.30.171.57:8101' as 'karaf'.</msg>
<msg time="2026-04-21T01:56:53.117564" 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-04-21T01:56:52.470510" elapsed="0.647253"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-21T01:56:53.169861" 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-04-21T01:56:53.118035" elapsed="0.051900"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-21T01:56:53.171947" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-21T01:56:53.172061" 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-04-21T01:56:53.170107" elapsed="0.001984"/>
</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-04-21T01:56:53.172265" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T01:56:53.172621" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T01:56:53.173321" 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-04-21T01:56:53.172972" elapsed="0.000404"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-21T01:56:53.173430" elapsed="0.000053"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.57
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-21T01:56:52.469011" elapsed="0.704594"/>
</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-04-21T01:56:52.465296" elapsed="0.708373"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-21T01:56:53.174283" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-04-21T01:56:53.173865" elapsed="0.000497"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-21T01:56:53.174769" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-04-21T01:56:53.174517" elapsed="0.000314"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-21T01:56:53.175410" 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-04-21T01:56:53.174991" elapsed="0.000447"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-21T01:56:53.175938" 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-04-21T01:56:53.175606" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-21T01:56:53.176549" 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-04-21T01:56:53.176151" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-21T01:56:53.177050" 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-04-21T01:56:53.176737" elapsed="0.000355"/>
</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-04-21T01:56:53.177410" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-21T01:56:53.177178" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-21T01:56:53.181902" 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-04-21T01:56:53.181484" elapsed="0.000445"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-21T01:56:53.183345" level="INFO">Length is 0.</msg>
<msg time="2026-04-21T01:56:53.183432" 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-04-21T01:56:53.182500" elapsed="0.000957"/>
</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-04-21T01:56:53.183608" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-21T01:56:53.185000" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-04-21T01:56:53.984978" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Apr 21 01:56:53 UTC 2026

  System load:  0.06               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.36
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-48317-696-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-04-21T01:56:53.184500" elapsed="0.800639"/>
</kw>
<msg time="2026-04-21T01:56:53.985296" 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-04-21T01:56:53.184127" elapsed="0.801274"/>
</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-04-21T01:56:53.182133" elapsed="0.803405"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-04-21T01:56:53.994662" 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-04-21T01:56:53.985792" elapsed="0.010921"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T01:56:53.997038" elapsed="0.000495"/>
</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-04-21T01:56:53.180929" elapsed="0.816793"/>
</kw>
<status status="PASS" start="2026-04-21T01:56:53.177541" elapsed="0.820258"/>
</branch>
<status status="PASS" start="2026-04-21T01:56:53.177152" elapsed="0.820704"/>
</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-04-21T01:56:53.998095" elapsed="0.000962"/>
</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-04-21T01:56:54.007101" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-21T01:56:54.006958" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-21T01:56:54.006926" elapsed="0.000265"/>
</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-04-21T01:56:54.011119" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-21T01:56:54.010998" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-21T01:56:54.010977" elapsed="0.000217"/>
</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-04-21T01:56:54.011367" elapsed="0.000639"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.012463" level="INFO">Logging into '10.30.171.57:8101' as 'karaf'.</msg>
<msg time="2026-04-21T01:56:54.201481" 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-04-21T01:56:54.012163" elapsed="0.189483"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.300191" 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-04-21T01:56:54.201902" elapsed="0.098483"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.311681" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-21T01:56:54.311879" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-21T01:56:54.300640" elapsed="0.011272"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-21T01:56:54.312075" elapsed="0.000294"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T01:56:54.312539" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T01:56:54.313281" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T01:56:54.312927" elapsed="0.000420"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-21T01:56:54.313401" elapsed="0.000053"/>
</return>
<msg time="2026-04-21T01:56:54.313638" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.57
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-21T01:56:54.010618" elapsed="0.303056"/>
</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-04-21T01:56:54.313829" elapsed="0.000543"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-21T01:56:54.314426" elapsed="0.000033"/>
</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-04-21T01:56:54.006338" elapsed="0.308223"/>
</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-04-21T01:56:54.318638" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-21T01:56:54.318497" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-21T01:56:54.318472" elapsed="0.000240"/>
</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-04-21T01:56:54.318847" elapsed="0.000480"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.319737" level="INFO">Logging into '10.30.171.57:8101' as 'karaf'.</msg>
<msg time="2026-04-21T01:56:54.506294" 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-04-21T01:56:54.319475" elapsed="0.187072"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.535544" 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-04-21T01:56:54.506862" elapsed="0.028789"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.537816" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-21T01:56:54.537927" 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-04-21T01:56:54.535840" elapsed="0.002117"/>
</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-04-21T01:56:54.538097" elapsed="0.000251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T01:56:54.538494" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T01:56:54.539203" 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-04-21T01:56:54.538844" elapsed="0.000436"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-21T01:56:54.539335" elapsed="0.000054"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.57
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-21T01:56:54.318127" elapsed="0.221384"/>
</kw>
<status status="PASS" start="2026-04-21T01:56:52.463337" elapsed="2.076244"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T01:56:54.542032" 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-04-21T01:56:54.540877" elapsed="0.001222"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-21T01:56:54.543733" 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-04-21T01:56:54.543308" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-04-21T01:56:54.544148" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-21T01:56:54.543870" elapsed="0.000340"/>
</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-04-21T01:56:54.547319" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-21T01:56:54.547042" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-21T01:56:54.547021" elapsed="0.000442"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.547867" 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-04-21T01:56:54.548005" 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-04-21T01:56:54.547605" elapsed="0.000428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T01:56:54.548668" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.57 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.36" 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-04-21T01:56:54.548191" elapsed="0.000547"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.549422" 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-04-21T01:56:54.548882" elapsed="0.000568"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-21T01:56:54.550456" level="INFO">Length is 0.</msg>
<msg time="2026-04-21T01:56:54.550551" 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-04-21T01:56:54.550058" elapsed="0.000517"/>
</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-04-21T01:56:54.550747" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.552127" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-04-21T01:56:54.895336" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Apr 21 01:56:53 UTC 2026

  System load:  0.06               Processes:             111
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.36
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Apr 21 01:56:53 2026 from 10.30.170.190
[?2004h[jenkins@releng-48317-696-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-04-21T01:56:54.551726" elapsed="0.343822"/>
</kw>
<msg time="2026-04-21T01:56:54.895637" 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-04-21T01:56:54.551327" elapsed="0.344399"/>
</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-04-21T01:56:54.549667" elapsed="0.346181"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-21T01:56:54.896679" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.57 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-21T02:07:01.019560" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-21T02:07:01.020461" level="INFO">${stdout} = </msg>
<msg time="2026-04-21T02:07:01.020531" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57: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-04-21T01:56:54.896060" elapsed="606.124514"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T02:07:01.020891" elapsed="0.000548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.022255" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.57. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:58:00.126 16  switches: flows:  103902 101391 99908 101196 100806 101618 100266 103249 100137 100709 98932 98940 99391 95650 97810 99148  total = 26.717550 per ms 
01:59:00.227 16  switches: flows:  114467 111586 111512 111029 111250 113138 111089 113529 109709 110706 110686 108859 109202 106787 110786 106324  total = 29.461741 per ms 
02:00:00.328 16  switches: flows:  111230 112323 109459 111944 110714 109993 111253 112382 108688 107615 111149 107900 108278 108340 108617 105501  total = 29.207624 per ms 
02:01:00.429 16  switches: flows:  106427 107048 104363 107693 106079 103995 103750 106847 106101 103072 104851 102175 102922 102536 103457 101041  total = 27.826134 per ms 
02:02:00.530 16  switches: flows:  117545 117667 115094 114846 118142 117562 117147 117936 114538 114142 115723 114916 112885 115160 113303 112986  total = 30.775146 per ms 
02:03:00.632 16  switches: flows:  119115 118880 115527 117120 118402 117979 117626 117622 113724 113779 114793 114588 114992 115034 114907 113638  total = 30.910443 per ms 
02:04:00.733 16  switches: flows:  118556 118116 115314 116479 118750 118725 116621 116243 113916 113621 114853 115263 113415 116362 113267 112468  total = 30.814557 per ms 
02:05:00.834 16  switches: flows:  107832 108842 105262 106765 107694 107566 107775 106610 105252 104119 105316 105098 104641 105905 104792 104571  total = 28.253430 per ms 
02:06:00.936 16  switches: flows:  103571 105871 104540 103660 105258 105230 104548 103664 101604 100313 101436 101436 103505 102071 102144 100687  total = 27.445943 per ms 
02:07:01.037 16  switches: flows:  103113 105458 101275 101202 102779 101983 102340 104495 100968 101645 100605 98350 98314 100817 98883 98987  total = 26.975225 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26975.23/30910.44/29074.47/9798.38 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:07:01.021689" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-21T02:07:01.022855" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-21T02:07:01.022622" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-21T02:07:01.022572" elapsed="0.000426"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-21T02:07:01.023137" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-21T02:07:01.023083" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-21T02:07:01.023061" elapsed="0.000188"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-21T02:07:01.023301" 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-04-21T02:07:01.027097" elapsed="0.000558"/>
</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-04-21T02:07:01.027866" elapsed="0.000267"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T02:07:01.028344" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-21T02:07:01.023779" elapsed="0.004792"/>
</kw>
<msg time="2026-04-21T02:07:01.028795" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57: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-04-21T01:56:54.544597" elapsed="606.484241"/>
</kw>
<status status="PASS" start="2026-04-21T01:56:54.544268" elapsed="606.484641"/>
</branch>
<status status="PASS" start="2026-04-21T01:56:54.543844" elapsed="606.485099"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.029615" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.57. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:58:00.126 16  switches: flows:  103902 101391 99908 101196 100806 101618 100266 103249 100137 100709 98932 98940 99391 95650 97810 99148  total = 26.717550 per ms 
01:59:00.227 16  switches: flows:  114467 111586 111512 111029 111250 113138 111089 113529 109709 110706 110686 108859 109202 106787 110786 106324  total = 29.461741 per ms 
02:00:00.328 16  switches: flows:  111230 112323 109459 111944 110714 109993 111253 112382 108688 107615 111149 107900 108278 108340 108617 105501  total = 29.207624 per ms 
02:01:00.429 16  switches: flows:  106427 107048 104363 107693 106079 103995 103750 106847 106101 103072 104851 102175 102922 102536 103457 101041  total = 27.826134 per ms 
02:02:00.530 16  switches: flows:  117545 117667 115094 114846 118142 117562 117147 117936 114538 114142 115723 114916 112885 115160 113303 112986  total = 30.775146 per ms 
02:03:00.632 16  switches: flows:  119115 118880 115527 117120 118402 117979 117626 117622 113724 113779 114793 114588 114992 115034 114907 113638  total = 30.910443 per ms 
02:04:00.733 16  switches: flows:  118556 118116 115314 116479 118750 118725 116621 116243 113916 113621 114853 115263 113415 116362 113267 112468  total = 30.814557 per ms 
02:05:00.834 16  switches: flows:  107832 108842 105262 106765 107694 107566 107775 106610 105252 104119 105316 105098 104641 105905 104792 104571  total = 28.253430 per ms 
02:06:00.936 16  switches: flows:  103571 105871 104540 103660 105258 105230 104548 103664 101604 100313 101436 101436 103505 102071 102144 100687  total = 27.445943 per ms 
02:07:01.037 16  switches: flows:  103113 105458 101275 101202 102779 101983 102340 104495 100968 101645 100605 98350 98314 100817 98883 98987  total = 26.975225 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26975.23/30910.44/29074.47/9798.38 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:07:01.029146" elapsed="0.000614"/>
</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-04-21T02:07:01.029985" elapsed="0.000608"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-21T02:07:01.031162" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-21T02:07:01.031345" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 26975.23/30910.44/29074.47/9798.38 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-04-21T02:07:01.030818" elapsed="0.000563"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:07:01.032010" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 26975.23/30910.44/29074.47/9798.38 | 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-04-21T02:07:01.031627" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.035730" 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-04-21T02:07:01.032272" elapsed="0.003539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.039385" level="INFO">26975.23/30910.44/29074.47/9798.38</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:07:01.036016" elapsed="0.003453"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:07:01.043090" 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-04-21T02:07:01.039709" elapsed="0.003420"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:07:01.046674" level="INFO">@{result_value_list} = [ 26975.23 | 30910.44 | 29074.47 | 9798.38 ]</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-04-21T02:07:01.043462" elapsed="0.003242"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.047190" level="INFO">Length is 4.</msg>
<msg time="2026-04-21T02:07:01.047305" 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-04-21T02:07:01.046862" elapsed="0.000477"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.052302" level="INFO">min :: 26975.23</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:07:01.047777" elapsed="0.004602"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-21T02:07:01.047644" elapsed="0.004780"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.057261" level="INFO">max :: 30910.44</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-04-21T02:07:01.052680" elapsed="0.004652"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-21T02:07:01.052533" elapsed="0.004835"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.062343" level="INFO">avg :: 29074.47</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-04-21T02:07:01.057592" elapsed="0.004811"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-21T02:07:01.057462" elapsed="0.004977"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.067407" level="INFO">stdev :: 9798.38</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:07:01.062665" elapsed="0.004801"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-21T02:07:01.062536" elapsed="0.004965"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-21T02:07:01.047434" elapsed="0.020102"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.071910" level="INFO">${min} = 26975.23</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-21T02:07:01.067695" elapsed="0.004243"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.076147" level="INFO">${max} = 30910.44</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-04-21T02:07:01.072098" elapsed="0.004077"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.080677" level="INFO">${average} = 29074.47</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-04-21T02:07:01.076350" elapsed="0.004354"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.084937" level="INFO">${stdev} = 9798.38</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-04-21T02:07:01.080864" elapsed="0.004101"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.085579" level="INFO">${date} = 2026-04-21 02:07:01</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-21T02:07:01.085125" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.086188" level="INFO">CBench Result: 2026-04-21 02:07:01,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,26975.23,30910.44,29074.47,9798.38</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-04-21T02:07:01.085775" elapsed="0.000485"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-21T02:07:01.087430" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-04-21T02:07:01.087002" elapsed="0.000494"/>
</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-04-21T02:07:01.087723" elapsed="0.000471"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-21T02:07:01.086510" elapsed="0.001766"/>
</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-04-21T01:56:54.542582" elapsed="606.545756"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.088885" 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-04-21T02:07:01.088488" elapsed="0.000455"/>
</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-04-21T02:07:01.089482" elapsed="0.000308"/>
</kw>
<status status="PASS" start="2026-04-21T02:07:01.089162" elapsed="0.000701"/>
</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-04-21T01:56:54.539726" elapsed="606.550176"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.091414" 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-04-21T02:07:01.090983" elapsed="0.000489"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.092850" 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-04-21T02:07:01.092491" elapsed="0.000477"/>
</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-04-21T02:07:01.093339" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-21T02:07:01.093090" elapsed="0.000311"/>
</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-04-21T02:07:01.096429" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-21T02:07:01.096163" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-21T02:07:01.096143" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-21T02:07:01.096860" 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-04-21T02:07:01.096981" 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-04-21T02:07:01.096644" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.097588" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.57 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.36" 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-04-21T02:07:01.097144" elapsed="0.000501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-21T02:07:01.098378" 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-04-21T02:07:01.097814" elapsed="0.000598"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-21T02:07:01.099448" level="INFO">Length is 0.</msg>
<msg time="2026-04-21T02:07:01.099540" 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-04-21T02:07:01.099035" elapsed="0.000530"/>
</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-04-21T02:07:01.099708" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-21T02:07:01.101000" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-04-21T02:07:01.686165" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Apr 21 02:07:01 UTC 2026

  System load:  1.0                Processes:             103
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.36
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Apr 21 01:56:54 2026 from 10.30.170.190
[?2004h[jenkins@releng-48317-696-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-04-21T02:07:01.100627" elapsed="0.585801"/>
</kw>
<msg time="2026-04-21T02:07:01.686540" 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-04-21T02:07:01.100188" elapsed="0.586464"/>
</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-04-21T02:07:01.098646" elapsed="0.588160"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-21T02:07:01.687518" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.57 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-21T02:17:07.741776" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-21T02:17:07.742438" level="INFO">${stdout} = </msg>
<msg time="2026-04-21T02:17:07.742582" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.57: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-04-21T02:07:01.687098" elapsed="606.055566"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T02:17:07.743176" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.745515" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.57:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.57. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:08:06.843 16  switches: flows:  530639 532815 513446 525528 529470 531325 533157 519690 523148 517390 508198 522461 520241 513146 518531 516610  total = 139.263250 per ms 
02:09:06.946 16  switches: flows:  463456 472771 470022 462502 453130 471554 466227 463097 476135 473337 466416 468515 479378 457813 455300 464181  total = 124.185534 per ms 
02:10:07.047 16  switches: flows:  472525 474591 467907 467566 476841 469227 491180 470143 461183 311365 456062 465562 473344 484246 429297 477194  total = 122.265669 per ms 
02:11:07.151 16  switches: flows:  528879 548223 555212 564022 526308 552442 544046 549108 541317 560207 548928 548597 556029 551533 565572 552394  total = 146.292667 per ms 
02:12:07.255 16  switches: flows:  408684 424349 428306 417577 422144 434332 418296 417807 430452 411540 414156 421198 386270 421772 415647 426348  total = 111.456811 per ms 
02:13:07.357 16  switches: flows:  465401 455382 462408 447148 467345 440661 455658 442813 446066 453961 452245 454478 431011 451899 444383 445629  total = 120.071517 per ms 
02:14:07.467 16  switches: flows:  490233 488557 483410 489119 501671 474560 484130 491017 491009 485506 475560 472200 453421 469789 472339 476667  total = 128.084683 per ms 
02:15:07.569 16  switches: flows:  488296 506183 485001 492866 478360 497171 491843 497197 507001 505934 458501 493339 505951 494210 498889 488822  total = 131.269667 per ms 
02:16:07.671 16  switches: flows:  531151 536288 528032 554552 532680 534706 546327 536897 544826 545485 554396 542444 533081 553257 471069 559216  total = 143.164461 per ms 
02:17:07.772 16  switches: flows:  620659 616712 631821 621277 605946 616544 624054 625522 619177 629909 614873 627474 614830 621070 615483 616710  total = 165.089714 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 111456.81/165089.71/132431.19/46781.05 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:17:07.744783" elapsed="0.000971"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-21T02:17:07.746153" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-21T02:17:07.745911" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-21T02:17:07.745868" elapsed="0.000463"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-21T02:17:07.746500" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-21T02:17:07.746431" elapsed="0.000141"/>
</branch>
<status status="NOT RUN" start="2026-04-21T02:17:07.746401" elapsed="0.000203"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-21T02:17:07.746661" elapsed="0.000026"/>
</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-04-21T02:17:07.750088" elapsed="0.000419"/>
</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-04-21T02:17:07.750663" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T02:17:07.751015" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-21T02:17:07.747195" elapsed="0.004006"/>
</kw>
<msg time="2026-04-21T02:17:07.751388" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.57: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-04-21T02:07:01.093786" elapsed="606.657631"/>
</kw>
<status status="PASS" start="2026-04-21T02:07:01.093428" elapsed="606.658047"/>
</branch>
<status status="PASS" start="2026-04-21T02:07:01.093067" elapsed="606.658438"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.752070" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.57:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.57. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:08:06.843 16  switches: flows:  530639 532815 513446 525528 529470 531325 533157 519690 523148 517390 508198 522461 520241 513146 518531 516610  total = 139.263250 per ms 
02:09:06.946 16  switches: flows:  463456 472771 470022 462502 453130 471554 466227 463097 476135 473337 466416 468515 479378 457813 455300 464181  total = 124.185534 per ms 
02:10:07.047 16  switches: flows:  472525 474591 467907 467566 476841 469227 491180 470143 461183 311365 456062 465562 473344 484246 429297 477194  total = 122.265669 per ms 
02:11:07.151 16  switches: flows:  528879 548223 555212 564022 526308 552442 544046 549108 541317 560207 548928 548597 556029 551533 565572 552394  total = 146.292667 per ms 
02:12:07.255 16  switches: flows:  408684 424349 428306 417577 422144 434332 418296 417807 430452 411540 414156 421198 386270 421772 415647 426348  total = 111.456811 per ms 
02:13:07.357 16  switches: flows:  465401 455382 462408 447148 467345 440661 455658 442813 446066 453961 452245 454478 431011 451899 444383 445629  total = 120.071517 per ms 
02:14:07.467 16  switches: flows:  490233 488557 483410 489119 501671 474560 484130 491017 491009 485506 475560 472200 453421 469789 472339 476667  total = 128.084683 per ms 
02:15:07.569 16  switches: flows:  488296 506183 485001 492866 478360 497171 491843 497197 507001 505934 458501 493339 505951 494210 498889 488822  total = 131.269667 per ms 
02:16:07.671 16  switches: flows:  531151 536288 528032 554552 532680 534706 546327 536897 544826 545485 554396 542444 533081 553257 471069 559216  total = 143.164461 per ms 
02:17:07.772 16  switches: flows:  620659 616712 631821 621277 605946 616544 624054 625522 619177 629909 614873 627474 614830 621070 615483 616710  total = 165.089714 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 111456.81/165089.71/132431.19/46781.05 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:17:07.751695" elapsed="0.000469"/>
</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-04-21T02:17:07.752367" elapsed="0.000421"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-21T02:17:07.753226" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-21T02:17:07.753332" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 111456.81/165089.71/132431.19/46781.05 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-04-21T02:17:07.752958" elapsed="0.000406"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:17:07.753857" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 111456.81/165089.71/132431.19/46781.05 | 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-04-21T02:17:07.753551" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.756635" 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-04-21T02:17:07.754044" elapsed="0.002660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.759335" level="INFO">111456.81/165089.71/132431.19/46781.05</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:17:07.756878" elapsed="0.002526"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:17:07.762043" 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-04-21T02:17:07.759571" elapsed="0.002506"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:17:07.764802" level="INFO">@{result_value_list} = [ 111456.81 | 165089.71 | 132431.19 | 46781.05 ]</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-04-21T02:17:07.762321" elapsed="0.002510"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.765368" level="INFO">Length is 4.</msg>
<msg time="2026-04-21T02:17:07.765471" 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-04-21T02:17:07.765017" elapsed="0.000478"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.770791" level="INFO">min :: 111456.81</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-04-21T02:17:07.765943" elapsed="0.004916"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-21T02:17:07.765799" elapsed="0.005100"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.776320" level="INFO">max :: 165089.71</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-04-21T02:17:07.771145" elapsed="0.005236"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-21T02:17:07.771014" elapsed="0.005406"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.781630" level="INFO">avg :: 132431.19</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:17:07.776671" elapsed="0.005032"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-21T02:17:07.776535" elapsed="0.005211"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.786863" level="INFO">stdev :: 46781.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-04-21T02:17:07.781992" elapsed="0.004933"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-21T02:17:07.781855" elapsed="0.005114"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-21T02:17:07.765569" elapsed="0.021442"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.791273" level="INFO">${min} = 111456.81</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-04-21T02:17:07.787194" elapsed="0.004108"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.796243" level="INFO">${max} = 165089.71</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-04-21T02:17:07.791462" elapsed="0.004810"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.801654" level="INFO">${average} = 132431.19</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-04-21T02:17:07.796469" elapsed="0.005212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.807605" level="INFO">${stdev} = 46781.05</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-04-21T02:17:07.801835" elapsed="0.005801"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.808557" level="INFO">${date} = 2026-04-21 02:17:07</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-21T02:17:07.807903" elapsed="0.000681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.809303" level="INFO">CBench Result: 2026-04-21 02:17:07,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,111456.81,165089.71,132431.19,46781.05</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-04-21T02:17:07.808736" elapsed="0.000627"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-21T02:17:07.811126" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-04-21T02:17:07.810499" elapsed="0.000756"/>
</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-04-21T02:17:07.811447" elapsed="0.000621"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-21T02:17:07.809678" elapsed="0.002514"/>
</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-04-21T02:07:01.091865" elapsed="606.720411"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.812897" 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-04-21T02:17:07.812524" elapsed="0.000488"/>
</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-04-21T02:17:07.813780" elapsed="0.000411"/>
</kw>
<status status="PASS" start="2026-04-21T02:17:07.813354" elapsed="0.000994"/>
</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-04-21T02:07:01.090227" elapsed="606.724168"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.816382" 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-04-21T02:17:07.815629" elapsed="0.000874"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.818677" 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-04-21T02:17:07.817980" elapsed="0.000743"/>
</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-04-21T02:17:07.819365" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-21T02:17:07.819014" elapsed="0.000460"/>
</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-04-21T02:17:07.823853" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-21T02:17:07.823591" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-21T02:17:07.823568" elapsed="0.000418"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-21T02:17:07.824573" 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-04-21T02:17:07.824704" 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-04-21T02:17:07.824127" elapsed="0.000640"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.825547" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.57 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.36" 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-04-21T02:17:07.825079" elapsed="0.000529"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-21T02:17:07.826160" 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-04-21T02:17:07.825750" elapsed="0.000437"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-21T02:17:07.828113" level="INFO">Length is 0.</msg>
<msg time="2026-04-21T02:17:07.828237" 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-04-21T02:17:07.827058" elapsed="0.001206"/>
</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-04-21T02:17:07.828537" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-21T02:17:07.830107" level="INFO">Logging into '10.30.170.36:22' as 'jenkins'.</msg>
<msg time="2026-04-21T02:17:08.526760" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue Apr 21 02:17:08 UTC 2026

  System load:  0.2                Processes:             103
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.36
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Apr 21 02:07:01 2026 from 10.30.170.190
[?2004h[jenkins@releng-48317-696-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-04-21T02:17:07.829735" elapsed="0.697259"/>
</kw>
<msg time="2026-04-21T02:17:08.527095" 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-04-21T02:17:07.829137" elapsed="0.698044"/>
</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-04-21T02:17:07.826421" elapsed="0.700907"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-21T02:17:08.527888" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.57 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-04-21T02:27:14.534896" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-21T02:27:14.541479" level="INFO">${stdout} = </msg>
<msg time="2026-04-21T02:27:14.541587" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57: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-04-21T02:17:08.527564" elapsed="606.014068"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T02:27:14.543049" elapsed="0.002502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.548058" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.57. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:18:13.684 16  switches: flows:  100874 100252 101010 98144 99786 98858 99708 99065 105136 97988 97399 97725 97776 98324 99254 97161  total = 26.474333 per ms 
02:19:13.785 16  switches: flows:  114076 113003 114349 113244 112806 111566 112244 113085 109243 110472 108598 111715 111735 110134 111825 110615  total = 29.762036 per ms 
02:20:13.885 16  switches: flows:  109097 106940 109985 108446 106630 109192 107373 107627 106513 104790 105006 106931 105349 106558 106677 105983  total = 28.503999 per ms 
02:21:13.985 16  switches: flows:  111333 111758 114336 112459 111325 113025 111504 111186 111042 110706 109511 110546 109909 109775 112265 112653  total = 29.672659 per ms 
02:22:14.086 16  switches: flows:  113169 111706 114855 113438 112818 114699 111848 110540 112341 110474 110268 111645 111549 110535 113025 112416  total = 29.872183 per ms 
02:23:14.188 16  switches: flows:  104523 103621 105763 103371 104524 104785 103880 102972 103339 101408 102402 102994 102318 102517 104021 102822  total = 27.540683 per ms 
02:24:14.288 16  switches: flows:  105988 107342 106922 104397 105893 107241 105356 104373 102984 103435 104452 104946 103404 105547 106660 103949  total = 28.001391 per ms 
02:25:14.389 16  switches: flows:  101180 101739 102236 101007 101593 102074 102352 102193 99457 98929 98901 100012 99056 100378 100243 99033  total = 26.795021 per ms 
02:26:14.489 16  switches: flows:  109208 109704 110884 107712 108603 109884 108375 109049 108054 106047 106940 107921 106598 106532 107884 105686  total = 28.769941 per ms 
02:27:14.589 16  switches: flows:  93957 94091 94331 93589 94419 94908 94725 93744 92074 92633 91957 92849 92941 94152 94600 92560  total = 24.917187 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24917.19/29872.18/28203.90/9524.86 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:27:14.545935" elapsed="0.002915"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-04-21T02:27:14.550979" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-21T02:27:14.550165" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-21T02:27:14.550088" elapsed="0.001085"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-21T02:27:14.551413" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-21T02:27:14.551351" elapsed="0.000127"/>
</branch>
<status status="NOT RUN" start="2026-04-21T02:27:14.551321" elapsed="0.000192"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-21T02:27:14.551564" elapsed="0.000020"/>
</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-04-21T02:27:14.555579" elapsed="0.000697"/>
</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-04-21T02:27:14.556517" elapsed="0.000321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-21T02:27:14.557043" elapsed="0.000152"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-21T02:27:14.552244" elapsed="0.005041"/>
</kw>
<msg time="2026-04-21T02:27:14.557490" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57: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-04-21T02:17:07.819996" elapsed="606.737542"/>
</kw>
<status status="PASS" start="2026-04-21T02:17:07.819551" elapsed="606.738070"/>
</branch>
<status status="PASS" start="2026-04-21T02:17:07.818864" elapsed="606.738800"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.558466" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.57:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.57. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:18:13.684 16  switches: flows:  100874 100252 101010 98144 99786 98858 99708 99065 105136 97988 97399 97725 97776 98324 99254 97161  total = 26.474333 per ms 
02:19:13.785 16  switches: flows:  114076 113003 114349 113244 112806 111566 112244 113085 109243 110472 108598 111715 111735 110134 111825 110615  total = 29.762036 per ms 
02:20:13.885 16  switches: flows:  109097 106940 109985 108446 106630 109192 107373 107627 106513 104790 105006 106931 105349 106558 106677 105983  total = 28.503999 per ms 
02:21:13.985 16  switches: flows:  111333 111758 114336 112459 111325 113025 111504 111186 111042 110706 109511 110546 109909 109775 112265 112653  total = 29.672659 per ms 
02:22:14.086 16  switches: flows:  113169 111706 114855 113438 112818 114699 111848 110540 112341 110474 110268 111645 111549 110535 113025 112416  total = 29.872183 per ms 
02:23:14.188 16  switches: flows:  104523 103621 105763 103371 104524 104785 103880 102972 103339 101408 102402 102994 102318 102517 104021 102822  total = 27.540683 per ms 
02:24:14.288 16  switches: flows:  105988 107342 106922 104397 105893 107241 105356 104373 102984 103435 104452 104946 103404 105547 106660 103949  total = 28.001391 per ms 
02:25:14.389 16  switches: flows:  101180 101739 102236 101007 101593 102074 102352 102193 99457 98929 98901 100012 99056 100378 100243 99033  total = 26.795021 per ms 
02:26:14.489 16  switches: flows:  109208 109704 110884 107712 108603 109884 108375 109049 108054 106047 106940 107921 106598 106532 107884 105686  total = 28.769941 per ms 
02:27:14.589 16  switches: flows:  93957 94091 94331 93589 94419 94908 94725 93744 92074 92633 91957 92849 92941 94152 94600 92560  total = 24.917187 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24917.19/29872.18/28203.90/9524.86 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:27:14.557931" elapsed="0.000646"/>
</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-04-21T02:27:14.558799" elapsed="0.000605"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-04-21T02:27:14.559905" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-04-21T02:27:14.560005" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24917.19/29872.18/28203.90/9524.86 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-04-21T02:27:14.559628" elapsed="0.000403"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:27:14.560632" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24917.19/29872.18/28203.90/9524.86 | 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-04-21T02:27:14.560251" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.563841" 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-04-21T02:27:14.560904" elapsed="0.003025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.567353" level="INFO">24917.19/29872.18/28203.90/9524.86</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:27:14.564146" elapsed="0.003290"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:27:14.570700" 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-04-21T02:27:14.567645" elapsed="0.003095"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-04-21T02:27:14.576868" level="INFO">@{result_value_list} = [ 24917.19 | 29872.18 | 28203.90 | 9524.86 ]</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-04-21T02:27:14.571061" elapsed="0.005887"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.578112" level="INFO">Length is 4.</msg>
<msg time="2026-04-21T02:27:14.578271" 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-04-21T02:27:14.577431" elapsed="0.000878"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.585608" level="INFO">min :: 24917.19</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-21T02:27:14.578963" elapsed="0.006723"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-21T02:27:14.578760" elapsed="0.006971"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.594041" level="INFO">max :: 29872.18</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-04-21T02:27:14.585979" elapsed="0.008207"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-21T02:27:14.585835" elapsed="0.008465"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.599883" level="INFO">avg :: 28203.90</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-04-21T02:27:14.594845" elapsed="0.005119"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-04-21T02:27:14.594515" elapsed="0.005496"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.604771" level="INFO">stdev :: 9524.86</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-04-21T02:27:14.600344" elapsed="0.004493"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-04-21T02:27:14.600125" elapsed="0.004751"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-04-21T02:27:14.578430" elapsed="0.026481"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.608994" level="INFO">${min} = 24917.19</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-21T02:27:14.605116" elapsed="0.003914"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.613055" level="INFO">${max} = 29872.18</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-04-21T02:27:14.609234" elapsed="0.003852"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.617079" level="INFO">${average} = 28203.90</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-04-21T02:27:14.613274" elapsed="0.003836"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.621177" level="INFO">${stdev} = 9524.86</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-04-21T02:27:14.617299" elapsed="0.003931"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.621876" level="INFO">${date} = 2026-04-21 02:27:14</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-04-21T02:27:14.621454" elapsed="0.000448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.622508" level="INFO">CBench Result: 2026-04-21 02:27:14,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24917.19,29872.18,28203.90,9524.86</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-04-21T02:27:14.622060" elapsed="0.000509"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-04-21T02:27:14.624514" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-04-21T02:27:14.623334" elapsed="0.001271"/>
</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-04-21T02:27:14.624773" elapsed="0.000574"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-04-21T02:27:14.622776" elapsed="0.002648"/>
</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-04-21T02:17:07.817044" elapsed="606.808448"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.626483" 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-04-21T02:27:14.625655" elapsed="0.000902"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-21T02:27:14.628169" 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-04-21T02:27:14.627587" elapsed="0.000609"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-21T02:27:14.628492" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-21T02:27:14.628318" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-21T02:27:14.628287" elapsed="0.000331"/>
</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-04-21T02:27:14.628790" 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-04-21T02:27:14.628951" elapsed="0.000019"/>
</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-04-21T02:27:14.629136" 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-04-21T02:27:14.629426" elapsed="0.000022"/>
</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-04-21T02:27:14.629578" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-21T02:27:14.629725" 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-04-21T02:27:14.629871" elapsed="0.000019"/>
</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-04-21T02:27:14.630095" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-21T02:27:14.629954" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-21T02:27:14.629937" elapsed="0.000234"/>
</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-04-21T02:27:14.627107" elapsed="0.003138"/>
</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-04-21T02:17:07.814884" elapsed="606.815422"/>
</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-04-21T01:56:51.865381" elapsed="1822.766633"/>
</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>
