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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-09-06T01:07:15.707887" elapsed="0.807910"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-06T01:07:16.564120" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-09-06T01:07:16.516085" elapsed="0.048108"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-06T01:07:16.565917" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-06T01:07:16.566054" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-09-06T01:07:16.564351" elapsed="0.001732"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-09-06T01:07:16.566224" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:07:16.566564" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:07:16.567273" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:07:16.566930" elapsed="0.000394"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-06T01:07:16.567374" elapsed="0.000052"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.161
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-06T01:07:15.706523" elapsed="0.861029"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-09-06T01:07:15.703207" elapsed="0.864405"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-06T01:07:16.568151" 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-09-06T01:07:16.567781" elapsed="0.000424"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-06T01:07:16.568594" 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-09-06T01:07:16.568347" elapsed="0.000309"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-06T01:07:16.569301" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-09-06T01:07:16.568796" elapsed="0.000532"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-06T01:07:16.569794" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-06T01:07:16.569493" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-06T01:07:16.570330" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-09-06T01:07:16.569988" elapsed="0.000367"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-06T01:07:16.570797" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-06T01:07:16.570522" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-09-06T01:07:16.571140" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:07:16.570913" elapsed="0.000277"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-06T01:07:16.575352" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:07:16.574980" elapsed="0.000395"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-06T01:07:16.576318" level="INFO">Length is 0.</msg>
<msg time="2026-09-06T01:07:16.576393" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-06T01:07:16.575879" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:07:16.576559" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-06T01:07:16.577790" level="INFO">Logging into '10.30.170.195:22' as 'jenkins'.</msg>
<msg time="2026-09-06T01:07:17.063633" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sun Sep  6 01:06:42 UTC 2026

  System load:  0.16               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.195
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


[?2004h[jenkins@releng-48317-830-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-06T01:07:16.577338" elapsed="0.486442"/>
</kw>
<msg time="2026-09-06T01:07:17.063862" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:07:16.577027" elapsed="0.486922"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-06T01:07:16.575576" elapsed="0.488499"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.074753" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-09-06T01:07:17.064274" elapsed="0.012179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:07:17.076636" elapsed="0.000252"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-09-06T01:07:16.574505" elapsed="0.502441"/>
</kw>
<status status="PASS" start="2026-09-06T01:07:16.571363" elapsed="0.505642"/>
</branch>
<status status="PASS" start="2026-09-06T01:07:16.570890" elapsed="0.506151"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-06T01:07:17.077185" elapsed="0.000465"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-09-06T01:07:17.081635" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-09-06T01:07:17.081522" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-09-06T01:07:17.081499" elapsed="0.000209"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-09-06T01:07:17.085049" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-09-06T01:07:17.084914" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-09-06T01:07:17.084896" elapsed="0.000219"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:07:17.085234" elapsed="0.000402"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.086037" level="INFO">Logging into '10.30.170.161:8101' as 'karaf'.</msg>
<msg time="2026-09-06T01:07:17.364701" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-09-06T01:07:17.085770" elapsed="0.279069"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.472972" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-09-06T01:07:17.365095" elapsed="0.107942"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.477093" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-06T01:07:17.477260" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-09-06T01:07:17.473176" elapsed="0.004112"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-09-06T01:07:17.477409" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:07:17.477743" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:07:17.478416" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:07:17.478128" elapsed="0.000350"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-06T01:07:17.478524" elapsed="0.000049"/>
</return>
<msg time="2026-09-06T01:07:17.478705" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.161
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-06T01:07:17.084599" elapsed="0.394134"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-09-06T01:07:17.478859" elapsed="0.000507"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-06T01:07:17.479412" elapsed="0.000030"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-09-06T01:07:17.081230" elapsed="0.398310"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-09-06T01:07:17.482879" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-09-06T01:07:17.482759" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-09-06T01:07:17.482737" elapsed="0.000205"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:07:17.483074" elapsed="0.000413"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.483852" level="INFO">Logging into '10.30.170.161:8101' as 'karaf'.</msg>
<msg time="2026-09-06T01:07:17.668086" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-09-06T01:07:17.483625" elapsed="0.184598"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.690452" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-09-06T01:07:17.668441" elapsed="0.022081"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.692457" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-06T01:07:17.692571" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-09-06T01:07:17.690657" elapsed="0.001946"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-09-06T01:07:17.692736" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:07:17.693054" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:07:17.693664" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:07:17.693361" elapsed="0.000348"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-06T01:07:17.693756" elapsed="0.000046"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.161
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-06T01:07:17.482473" elapsed="0.211432"/>
</kw>
<status status="PASS" start="2026-09-06T01:07:15.701472" elapsed="1.992523"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:07:17.695843" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:07:17.694728" elapsed="0.001174"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-06T01:07:17.697218" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-06T01:07:17.696875" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-09-06T01:07:17.697563" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:07:17.697328" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-06T01:07:17.700248" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:07:17.700027" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-09-06T01:07:17.700009" elapsed="0.000311"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.700631" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-09-06T01:07:17.700437" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:07:17.701312" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.161 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.195" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:07:17.700880" elapsed="0.000487"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.701980" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:07:17.701538" elapsed="0.000483"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-06T01:07:17.702861" level="INFO">Length is 0.</msg>
<msg time="2026-09-06T01:07:17.702940" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-06T01:07:17.702560" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:07:17.703113" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-06T01:07:17.704201" level="INFO">Logging into '10.30.170.195:22' as 'jenkins'.</msg>
<msg time="2026-09-06T01:07:18.071644" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sun Sep  6 01:06:42 UTC 2026

  System load:  0.16               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.195
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Sun Sep  6 01:07:16 2026 from 10.30.171.111
[?2004h[jenkins@releng-48317-830-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-06T01:07:17.703865" elapsed="0.367946"/>
</kw>
<msg time="2026-09-06T01:07:18.071886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:07:17.703559" elapsed="0.368417"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-06T01:07:17.702214" elapsed="0.369869"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-06T01:07:18.072667" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.161 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-06T01:17:24.220407" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-06T01:17:24.220840" level="INFO">${stdout} = </msg>
<msg time="2026-09-06T01:17:24.220903" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-06T01:07:18.072272" elapsed="606.148700"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:17:24.221315" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.222544" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.161. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:08:23.327 16  switches: flows:  92163 89420 88641 89979 86339 87183 89376 85395 83522 84133 83669 81830 83609 83525 83942 81553  total = 22.904650 per ms 
01:09:23.428 16  switches: flows:  98572 97804 95343 95245 94625 95023 94642 92833 90075 88992 88644 88033 88755 87262 87417 88245  total = 24.484303 per ms 
01:10:23.528 16  switches: flows:  94540 96399 96493 93969 91396 92519 91054 90188 87675 88412 88509 86197 88189 87150 85559 85618  total = 24.024326 per ms 
01:11:23.628 16  switches: flows:  93257 93458 94225 90241 90853 90579 90435 88374 84172 85239 84150 84305 84699 85385 82086 82894  total = 23.366869 per ms 
01:12:23.729 16  switches: flows:  98252 94750 95559 95040 93727 95423 93505 92800 88755 87996 89570 86350 91474 88402 86175 85326  total = 24.344406 per ms 
01:13:23.830 16  switches: flows:  96643 97366 96531 95435 94049 94892 94863 94229 90043 87088 88294 88337 88621 87691 88876 87012  total = 24.458662 per ms 
01:14:23.930 16  switches: flows:  99820 98795 98197 95395 94457 95070 96706 92472 87966 90382 88474 88220 88505 89248 88049 88079  total = 24.622815 per ms 
01:15:24.031 16  switches: flows:  98983 99683 96868 94065 94931 95847 95299 92827 88348 89732 88745 86820 89664 86901 86145 87622  total = 24.500412 per ms 
01:16:24.132 16  switches: flows:  101363 100886 99297 97333 94548 96322 97705 93056 90372 90997 90697 88320 89903 87607 88531 90443  total = 24.914739 per ms 
01:17:24.233 16  switches: flows:  98460 98841 97542 94106 92620 94201 94128 89697 86951 88439 88807 86254 87832 88085 86493 89150  total = 24.319520 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23366.87/24914.74/24337.34/8122.83 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.222066" elapsed="0.000659"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-06T01:17:24.223071" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-09-06T01:17:24.222855" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-09-06T01:17:24.222817" elapsed="0.000407"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-06T01:17:24.223352" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-09-06T01:17:24.223304" elapsed="0.000102"/>
</branch>
<status status="NOT RUN" start="2026-09-06T01:17:24.223283" elapsed="0.000151"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-06T01:17:24.223479" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:17:24.226662" elapsed="0.000481"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:17:24.227325" elapsed="0.000261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:17:24.227757" elapsed="0.000138"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-06T01:17:24.223886" elapsed="0.004112"/>
</kw>
<msg time="2026-09-06T01:17:24.228162" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-06T01:07:17.697930" elapsed="606.530267"/>
</kw>
<status status="PASS" start="2026-09-06T01:07:17.697642" elapsed="606.530618"/>
</branch>
<status status="PASS" start="2026-09-06T01:07:17.697308" elapsed="606.530981"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.228839" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.161. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:08:23.327 16  switches: flows:  92163 89420 88641 89979 86339 87183 89376 85395 83522 84133 83669 81830 83609 83525 83942 81553  total = 22.904650 per ms 
01:09:23.428 16  switches: flows:  98572 97804 95343 95245 94625 95023 94642 92833 90075 88992 88644 88033 88755 87262 87417 88245  total = 24.484303 per ms 
01:10:23.528 16  switches: flows:  94540 96399 96493 93969 91396 92519 91054 90188 87675 88412 88509 86197 88189 87150 85559 85618  total = 24.024326 per ms 
01:11:23.628 16  switches: flows:  93257 93458 94225 90241 90853 90579 90435 88374 84172 85239 84150 84305 84699 85385 82086 82894  total = 23.366869 per ms 
01:12:23.729 16  switches: flows:  98252 94750 95559 95040 93727 95423 93505 92800 88755 87996 89570 86350 91474 88402 86175 85326  total = 24.344406 per ms 
01:13:23.830 16  switches: flows:  96643 97366 96531 95435 94049 94892 94863 94229 90043 87088 88294 88337 88621 87691 88876 87012  total = 24.458662 per ms 
01:14:23.930 16  switches: flows:  99820 98795 98197 95395 94457 95070 96706 92472 87966 90382 88474 88220 88505 89248 88049 88079  total = 24.622815 per ms 
01:15:24.031 16  switches: flows:  98983 99683 96868 94065 94931 95847 95299 92827 88348 89732 88745 86820 89664 86901 86145 87622  total = 24.500412 per ms 
01:16:24.132 16  switches: flows:  101363 100886 99297 97333 94548 96322 97705 93056 90372 90997 90697 88320 89903 87607 88531 90443  total = 24.914739 per ms 
01:17:24.233 16  switches: flows:  98460 98841 97542 94106 92620 94201 94128 89697 86951 88439 88807 86254 87832 88085 86493 89150  total = 24.319520 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23366.87/24914.74/24337.34/8122.83 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.228469" elapsed="0.000480"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-09-06T01:17:24.229160" elapsed="0.000489"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-06T01:17:24.230175" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-06T01:17:24.230303" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 23366.87/24914.74/24337.34/8122.83 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-09-06T01:17:24.229853" elapsed="0.000483"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:17:24.230861" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 23366.87/24914.74/24337.34/8122.83 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:17:24.230529" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.233855" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.231120" elapsed="0.002822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.236787" level="INFO">23366.87/24914.74/24337.34/8122.83</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.234144" elapsed="0.002709"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:17:24.239064" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:17:24.237060" elapsed="0.002029"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:17:24.241215" level="INFO">@{result_value_list} = [ 23366.87 | 24914.74 | 24337.34 | 8122.83 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:17:24.239267" elapsed="0.001972"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.241650" level="INFO">Length is 4.</msg>
<msg time="2026-09-06T01:17:24.241733" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-06T01:17:24.241375" elapsed="0.000379"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.245872" level="INFO">min :: 23366.87</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.242130" elapsed="0.003806"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-06T01:17:24.242013" elapsed="0.003966"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.249904" level="INFO">max :: 24914.74</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.246175" elapsed="0.003807"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-06T01:17:24.246061" elapsed="0.003952"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.253967" level="INFO">avg :: 24337.34</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.250209" elapsed="0.003811"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-06T01:17:24.250093" elapsed="0.003957"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.257994" level="INFO">stdev :: 8122.83</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.254246" elapsed="0.003801"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-06T01:17:24.254132" elapsed="0.003946"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-06T01:17:24.241816" elapsed="0.016291"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.261546" level="INFO">${min} = 23366.87</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:17:24.258255" elapsed="0.003315"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.266510" level="INFO">${max} = 24914.74</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:17:24.261706" elapsed="0.004832"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.270036" level="INFO">${average} = 24337.34</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:17:24.266689" elapsed="0.003371"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.273683" level="INFO">${stdev} = 8122.83</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:17:24.270197" elapsed="0.003509"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.274235" level="INFO">${date} = 2026-09-06 01:17:24</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-06T01:17:24.273852" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.274754" level="INFO">CBench Result: 2026-09-06 01:17:24,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,23366.87,24914.74,24337.34,8122.83</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.274388" elapsed="0.000415"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-06T01:17:24.275800" 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-09-06T01:17:24.275406" elapsed="0.000453"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-06T01:17:24.276017" elapsed="0.000427"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-06T01:17:24.274977" elapsed="0.001525"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-09-06T01:07:17.696306" elapsed="606.580248"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.276996" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-09-06T01:17:24.276683" elapsed="0.000363"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-09-06T01:17:24.277509" elapsed="0.000256"/>
</kw>
<status status="PASS" start="2026-09-06T01:17:24.277246" elapsed="0.000578"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-09-06T01:07:17.694132" elapsed="606.583726"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.279106" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.278640" elapsed="0.000518"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.280282" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-06T01:17:24.279984" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-09-06T01:17:24.280637" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:17:24.280387" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-06T01:17:24.283309" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:17:24.283090" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-09-06T01:17:24.283073" elapsed="0.000307"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-06T01:17:24.283685" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-09-06T01:17:24.283499" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.284334" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.161 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.195" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:17:24.283943" elapsed="0.000442"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-06T01:17:24.284856" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:17:24.284510" elapsed="0.000369"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-06T01:17:24.285694" level="INFO">Length is 0.</msg>
<msg time="2026-09-06T01:17:24.285772" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-06T01:17:24.285408" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:17:24.285931" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-06T01:17:24.287013" level="INFO">Logging into '10.30.170.195:22' as 'jenkins'.</msg>
<msg time="2026-09-06T01:17:24.904694" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sun Sep  6 01:17:24 UTC 2026

  System load:  1.0                Processes:             106
  Usage of /:   20.4% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.195
  Swap usage:   0%

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

   https://ubuntu.com/workshop

Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Sun Sep  6 01:07:17 2026 from 10.30.171.111
[?2004h[jenkins@releng-48317-830-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-06T01:17:24.286675" elapsed="0.618210"/>
</kw>
<msg time="2026-09-06T01:17:24.905005" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:17:24.286374" elapsed="0.618722"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-06T01:17:24.285085" elapsed="0.620121"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-06T01:17:24.905685" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.161 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-06T01:27:30.964897" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-06T01:27:30.965496" level="INFO">${stdout} = </msg>
<msg time="2026-09-06T01:27:30.965594" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-06T01:17:24.905408" elapsed="606.060239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:27:30.966138" elapsed="0.000629"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:30.967909" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.161. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:18:30.045 16  switches: flows:  598125 602156 591546 603301 607302 595453 597986 600641 591643 584930 613908 580728 599848 594942 592502 594994  total = 159.166750 per ms 
01:19:30.147 16  switches: flows:  677278 666702 679589 662230 675562 679310 666563 668799 676935 668519 673806 660536 674911 671893 673816 677443  total = 178.931045 per ms 
01:20:30.249 16  switches: flows:  655513 674441 677603 656639 664147 671038 674307 669353 663790 680813 673208 665539 672199 671705 667356 672763  total = 178.206527 per ms 
01:21:30.350 16  switches: flows:  633209 636542 632184 640185 640605 649417 643481 633222 637684 644742 639794 644603 648537 644109 638488 641463  total = 170.518974 per ms 
01:22:30.453 16  switches: flows:  633848 643074 647622 637971 638289 642455 640396 647840 644812 645039 650492 644830 640375 644908 639943 642311  total = 171.111025 per ms 
01:23:30.555 16  switches: flows:  707015 706032 716804 699109 703418 698958 708355 710313 706845 702003 720962 699450 709078 707554 698961 702279  total = 187.966392 per ms 
01:24:30.658 16  switches: flows:  702947 726191 717242 704012 719178 718047 708949 717187 712472 725020 725599 707203 714262 721431 724247 716028  total = 190.678366 per ms 
01:25:30.759 16  switches: flows:  707623 712951 705764 693194 701271 709125 698317 698275 705192 715776 710259 705679 700653 695448 712539 705864  total = 187.649867 per ms 
01:26:30.860 16  switches: flows:  641521 653609 651012 640535 658010 644669 653949 655305 646056 659204 664798 656885 659281 639912 642904 655166  total = 173.421991 per ms 
01:27:30.962 16  switches: flows:  654207 658630 659062 641550 657294 650200 639600 653207 651084 660944 662515 638389 663282 653384 643630 655985  total = 173.754062 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 170518.97/190678.37/179137.58/60161.94 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:30.967163" elapsed="0.001074"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-06T01:27:30.968704" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-09-06T01:27:30.968419" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-09-06T01:27:30.968370" elapsed="0.000566"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-06T01:27:30.969167" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-09-06T01:27:30.969091" elapsed="0.000159"/>
</branch>
<status status="NOT RUN" start="2026-09-06T01:27:30.969058" elapsed="0.000237"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-06T01:27:30.969359" elapsed="0.000027"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:27:30.974772" elapsed="0.000831"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:27:30.975935" elapsed="0.000365"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:27:30.976575" elapsed="0.000218"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-06T01:27:30.970034" elapsed="0.006894"/>
</kw>
<msg time="2026-09-06T01:27:30.977221" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-06T01:17:24.281020" elapsed="606.696258"/>
</kw>
<status status="PASS" start="2026-09-06T01:17:24.280713" elapsed="606.696665"/>
</branch>
<status status="PASS" start="2026-09-06T01:17:24.280366" elapsed="606.697060"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:30.978384" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.161. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:18:30.045 16  switches: flows:  598125 602156 591546 603301 607302 595453 597986 600641 591643 584930 613908 580728 599848 594942 592502 594994  total = 159.166750 per ms 
01:19:30.147 16  switches: flows:  677278 666702 679589 662230 675562 679310 666563 668799 676935 668519 673806 660536 674911 671893 673816 677443  total = 178.931045 per ms 
01:20:30.249 16  switches: flows:  655513 674441 677603 656639 664147 671038 674307 669353 663790 680813 673208 665539 672199 671705 667356 672763  total = 178.206527 per ms 
01:21:30.350 16  switches: flows:  633209 636542 632184 640185 640605 649417 643481 633222 637684 644742 639794 644603 648537 644109 638488 641463  total = 170.518974 per ms 
01:22:30.453 16  switches: flows:  633848 643074 647622 637971 638289 642455 640396 647840 644812 645039 650492 644830 640375 644908 639943 642311  total = 171.111025 per ms 
01:23:30.555 16  switches: flows:  707015 706032 716804 699109 703418 698958 708355 710313 706845 702003 720962 699450 709078 707554 698961 702279  total = 187.966392 per ms 
01:24:30.658 16  switches: flows:  702947 726191 717242 704012 719178 718047 708949 717187 712472 725020 725599 707203 714262 721431 724247 716028  total = 190.678366 per ms 
01:25:30.759 16  switches: flows:  707623 712951 705764 693194 701271 709125 698317 698275 705192 715776 710259 705679 700653 695448 712539 705864  total = 187.649867 per ms 
01:26:30.860 16  switches: flows:  641521 653609 651012 640535 658010 644669 653949 655305 646056 659204 664798 656885 659281 639912 642904 655166  total = 173.421991 per ms 
01:27:30.962 16  switches: flows:  654207 658630 659062 641550 657294 650200 639600 653207 651084 660944 662515 638389 663282 653384 643630 655985  total = 173.754062 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 170518.97/190678.37/179137.58/60161.94 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:30.977718" elapsed="0.000826"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-09-06T01:27:30.978853" elapsed="0.000798"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-06T01:27:30.980507" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-06T01:27:30.980694" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 170518.97/190678.37/179137.58/60161.94 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-09-06T01:27:30.980048" elapsed="0.000698"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:27:30.981640" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 170518.97/190678.37/179137.58/60161.94 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:27:30.981115" elapsed="0.000582"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:30.987038" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:30.982051" elapsed="0.005108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:30.992388" level="INFO">170518.97/190678.37/179137.58/60161.94</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:30.987474" elapsed="0.005033"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:27:30.997648" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:27:30.992819" elapsed="0.004883"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:27:31.002831" level="INFO">@{result_value_list} = [ 170518.97 | 190678.37 | 179137.58 | 60161.94 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:27:30.998145" elapsed="0.004766"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.003921" level="INFO">Length is 4.</msg>
<msg time="2026-09-06T01:27:31.004151" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-06T01:27:31.003285" elapsed="0.000913"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.012490" level="INFO">min :: 170518.97</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:31.004936" elapsed="0.007624"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-06T01:27:31.004661" elapsed="0.007941"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.018508" level="INFO">max :: 190678.37</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:31.012883" elapsed="0.005694"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-06T01:27:31.012712" elapsed="0.005907"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.024262" level="INFO">avg :: 179137.58</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:31.018899" elapsed="0.005435"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-06T01:27:31.018726" elapsed="0.005650"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.029969" level="INFO">stdev :: 60161.94</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:31.024641" elapsed="0.005399"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-06T01:27:31.024482" elapsed="0.005600"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-06T01:27:31.004316" elapsed="0.025803"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.035104" level="INFO">${min} = 170518.97</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:27:31.030312" elapsed="0.004828"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.039927" level="INFO">${max} = 190678.37</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:27:31.035344" elapsed="0.004634"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.044729" level="INFO">${average} = 179137.58</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:27:31.040167" elapsed="0.004594"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.049600" level="INFO">${stdev} = 60161.94</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:27:31.044977" elapsed="0.004656"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.050321" level="INFO">${date} = 2026-09-06 01:27:31</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-06T01:27:31.049829" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.051042" level="INFO">CBench Result: 2026-09-06 01:27:31,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,170518.97,190678.37,179137.58,60161.94</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:31.050531" elapsed="0.000560"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-06T01:27:31.052037" 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-09-06T01:27:31.051637" elapsed="0.000459"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-06T01:27:31.052228" elapsed="0.000411"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-06T01:27:31.051227" elapsed="0.001469"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-09-06T01:17:24.279459" elapsed="606.773289"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.053185" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-09-06T01:27:31.052889" elapsed="0.000346"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-09-06T01:27:31.053673" elapsed="0.000245"/>
</kw>
<status status="PASS" start="2026-09-06T01:27:31.053412" elapsed="0.000581"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-09-06T01:17:24.278164" elapsed="606.775863"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.055428" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:31.055095" elapsed="0.000383"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.056539" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-06T01:27:31.056251" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-09-06T01:27:31.056894" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:27:31.056681" elapsed="0.000265"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-06T01:27:31.059948" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:27:31.059714" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-09-06T01:27:31.059696" elapsed="0.000337"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-06T01:27:31.060327" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-09-06T01:27:31.060150" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.060997" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.161 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.195" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:27:31.060570" elapsed="0.000489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-06T01:27:31.061525" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:27:31.061182" elapsed="0.000367"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-06T01:27:31.062349" level="INFO">Length is 0.</msg>
<msg time="2026-09-06T01:27:31.062426" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-06T01:27:31.062073" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:27:31.062571" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-06T01:27:31.063625" level="INFO">Logging into '10.30.170.195:22' as 'jenkins'.</msg>
<msg time="2026-09-06T01:27:31.687415" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sun Sep  6 01:27:31 UTC 2026

  System load:  0.23               Processes:             104
  Usage of /:   20.4% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.195
  Swap usage:   0%

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

   https://ubuntu.com/workshop

Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Sun Sep  6 01:17:24 2026 from 10.30.171.111
[?2004h[jenkins@releng-48317-830-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-09-06T01:27:31.063319" elapsed="0.624273"/>
</kw>
<msg time="2026-09-06T01:27:31.687671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:27:31.063017" elapsed="0.624735"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-09-06T01:27:31.061723" elapsed="0.626128"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-06T01:27:31.688356" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.161 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-06T01:37:37.741147" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-06T01:37:37.741770" level="INFO">${stdout} = </msg>
<msg time="2026-09-06T01:37:37.741861" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-06T01:27:31.688090" elapsed="606.053833"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:37:37.742377" elapsed="0.000650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.744068" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.161. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:28:36.837 16  switches: flows:  93466 92816 91298 97996 90367 91648 90484 90924 88296 89249 90761 92292 89132 87627 95410 90224  total = 24.366500 per ms 
01:29:36.938 16  switches: flows:  98373 98070 96098 94642 96116 97219 95580 95622 94352 90345 93228 91759 92587 93695 90915 91860  total = 25.132328 per ms 
01:30:37.038 16  switches: flows:  94374 96821 94244 94921 96306 95519 93513 91878 91374 90439 91356 91172 91853 91871 90172 90421  total = 24.729255 per ms 
01:31:37.139 16  switches: flows:  96649 95318 92682 92591 93297 95191 91875 92386 89515 90091 91171 90726 88581 88991 89550 91044  total = 24.453435 per ms 
01:32:37.239 16  switches: flows:  98970 99052 97945 95442 98899 98796 95804 93297 93770 92697 93778 92015 91214 93988 92302 94429  total = 25.330994 per ms 
01:33:37.339 16  switches: flows:  100304 99524 98513 98218 99283 98384 96611 95266 95640 93472 93260 95400 93359 93953 94458 95790  total = 25.647774 per ms 
01:34:37.440 16  switches: flows:  97976 97864 97520 95172 96523 97818 95026 93164 92288 92985 91714 93162 91672 92540 91120 93496  total = 25.125360 per ms 
01:35:37.540 16  switches: flows:  98403 97538 98627 95694 98394 98308 93357 93540 93645 93267 91967 93903 92487 92229 93031 91832  total = 25.228244 per ms 
01:36:37.640 16  switches: flows:  97722 96338 95958 92989 96900 96360 93667 94551 92623 92361 92341 92178 90825 91410 92365 91586  total = 24.961237 per ms 
01:37:37.740 16  switches: flows:  97293 97574 95885 94857 96260 97462 95593 92940 93148 92814 93189 91528 91284 93416 93780 93391  total = 25.131621 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24453.43/25647.77/25082.25/8367.02 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.743371" elapsed="0.001049"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-06T01:37:37.744897" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-09-06T01:37:37.744622" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-09-06T01:37:37.744566" elapsed="0.000578"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-06T01:37:37.745348" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-09-06T01:37:37.745276" elapsed="0.000149"/>
</branch>
<status status="NOT RUN" start="2026-09-06T01:37:37.745224" elapsed="0.000243"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-06T01:37:37.745524" elapsed="0.000025"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-06T01:37:37.750832" elapsed="0.000734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-09-06T01:37:37.751854" elapsed="0.000358"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-06T01:37:37.752491" elapsed="0.000191"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-06T01:37:37.746150" elapsed="0.006634"/>
</kw>
<msg time="2026-09-06T01:37:37.753092" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-06T01:27:31.057262" elapsed="606.695886"/>
</kw>
<status status="PASS" start="2026-09-06T01:27:31.056983" elapsed="606.696264"/>
</branch>
<status status="PASS" start="2026-09-06T01:27:31.056661" elapsed="606.696656"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.754353" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.161:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.161. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:28:36.837 16  switches: flows:  93466 92816 91298 97996 90367 91648 90484 90924 88296 89249 90761 92292 89132 87627 95410 90224  total = 24.366500 per ms 
01:29:36.938 16  switches: flows:  98373 98070 96098 94642 96116 97219 95580 95622 94352 90345 93228 91759 92587 93695 90915 91860  total = 25.132328 per ms 
01:30:37.038 16  switches: flows:  94374 96821 94244 94921 96306 95519 93513 91878 91374 90439 91356 91172 91853 91871 90172 90421  total = 24.729255 per ms 
01:31:37.139 16  switches: flows:  96649 95318 92682 92591 93297 95191 91875 92386 89515 90091 91171 90726 88581 88991 89550 91044  total = 24.453435 per ms 
01:32:37.239 16  switches: flows:  98970 99052 97945 95442 98899 98796 95804 93297 93770 92697 93778 92015 91214 93988 92302 94429  total = 25.330994 per ms 
01:33:37.339 16  switches: flows:  100304 99524 98513 98218 99283 98384 96611 95266 95640 93472 93260 95400 93359 93953 94458 95790  total = 25.647774 per ms 
01:34:37.440 16  switches: flows:  97976 97864 97520 95172 96523 97818 95026 93164 92288 92985 91714 93162 91672 92540 91120 93496  total = 25.125360 per ms 
01:35:37.540 16  switches: flows:  98403 97538 98627 95694 98394 98308 93357 93540 93645 93267 91967 93903 92487 92229 93031 91832  total = 25.228244 per ms 
01:36:37.640 16  switches: flows:  97722 96338 95958 92989 96900 96360 93667 94551 92623 92361 92341 92178 90825 91410 92365 91586  total = 24.961237 per ms 
01:37:37.740 16  switches: flows:  97293 97574 95885 94857 96260 97462 95593 92940 93148 92814 93189 91528 91284 93416 93780 93391  total = 25.131621 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24453.43/25647.77/25082.25/8367.02 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.753608" elapsed="0.000924"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-09-06T01:37:37.754865" elapsed="0.000796"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-06T01:37:37.756488" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-06T01:37:37.756661" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24453.43/25647.77/25082.25/8367.02 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-09-06T01:37:37.756022" elapsed="0.000686"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:37:37.757547" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24453.43/25647.77/25082.25/8367.02 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:37:37.757037" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.762486" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.757877" elapsed="0.004777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.768149" level="INFO">24453.43/25647.77/25082.25/8367.02</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.763010" elapsed="0.005324"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:37:37.773851" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:37:37.768754" elapsed="0.005154"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-06T01:37:37.778812" level="INFO">@{result_value_list} = [ 24453.43 | 25647.77 | 25082.25 | 8367.02 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-09-06T01:37:37.774385" elapsed="0.004481"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.779872" level="INFO">Length is 4.</msg>
<msg time="2026-09-06T01:37:37.780082" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-09-06T01:37:37.779207" elapsed="0.000924"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.788319" level="INFO">min :: 24453.43</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.781021" elapsed="0.007371"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-06T01:37:37.780645" elapsed="0.007790"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.794411" level="INFO">max :: 25647.77</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.788749" elapsed="0.005733"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-06T01:37:37.788571" elapsed="0.005952"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.800099" level="INFO">avg :: 25082.25</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.794779" elapsed="0.005389"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-06T01:37:37.794625" elapsed="0.005585"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.805731" level="INFO">stdev :: 8367.02</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.800499" elapsed="0.005302"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-06T01:37:37.800338" elapsed="0.005504"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-06T01:37:37.780276" elapsed="0.025602"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.810772" level="INFO">${min} = 24453.43</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:37:37.806090" elapsed="0.004712"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.814268" level="INFO">${max} = 25647.77</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:37:37.810943" elapsed="0.003349"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.817690" level="INFO">${average} = 25082.25</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:37:37.814424" elapsed="0.003290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.821149" level="INFO">${stdev} = 8367.02</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-06T01:37:37.817847" elapsed="0.003325"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.821651" level="INFO">${date} = 2026-09-06 01:37:37</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-06T01:37:37.821325" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.822177" level="INFO">CBench Result: 2026-09-06 01:37:37,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24453.43,25647.77,25082.25,8367.02</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-06T01:37:37.821806" elapsed="0.000419"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-06T01:37:37.823214" 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-09-06T01:37:37.822793" elapsed="0.000493"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-06T01:37:37.823419" elapsed="0.000412"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-06T01:37:37.822376" elapsed="0.001512"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-09-06T01:27:31.055749" elapsed="606.768189"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.824376" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-09-06T01:37:37.824092" elapsed="0.000334"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-06T01:37:37.825484" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-09-06T01:37:37.825049" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-09-06T01:37:37.825705" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-09-06T01:37:37.825576" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-09-06T01:37:37.825558" elapsed="0.000227"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.825912" elapsed="0.000019"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.826065" elapsed="0.000018"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.826207" elapsed="0.000018"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.826351" elapsed="0.000018"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.826514" elapsed="0.000018"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.826642" elapsed="0.000018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.826773" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-09-06T01:37:37.826984" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-09-06T01:37:37.826848" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-09-06T01:37:37.826834" elapsed="0.000220"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-09-06T01:37:37.824748" elapsed="0.002350"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-09-06T01:27:31.054580" elapsed="606.772558"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-09-06T01:07:15.182748" elapsed="1822.644948"/>
</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>
