<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-09-10T01:00:19.692012" 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-10T01:00:20.213792" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-09-10T01:00:20.213663" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-09-10T01:00:20.213634" elapsed="0.000269"/>
</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-10T01:00:20.214036" elapsed="0.000625"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-10T01:00:20.215101" level="INFO">Logging into '10.30.171.18:8101' as 'karaf'.</msg>
<msg time="2026-09-10T01:00:20.954548" 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-10T01:00:20.214832" elapsed="0.739910"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.003217" 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-10T01:00:20.955044" elapsed="0.048244"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.004967" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-10T01:00:21.005065" 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-10T01:00:21.003474" elapsed="0.001617"/>
</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-10T01:00:21.005233" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:00:21.005588" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:00:21.006259" 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-10T01:00:21.005955" elapsed="0.000353"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-10T01:00:21.006355" elapsed="0.000049"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.18
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-10T01:00:20.213305" elapsed="0.793316"/>
</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-10T01:00:20.209954" elapsed="0.796758"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-10T01:00:21.007432" 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-10T01:00:21.007012" elapsed="0.000490"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-10T01:00:21.007895" 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-10T01:00:21.007644" elapsed="0.000313"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-10T01:00:21.008522" 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-10T01:00:21.008098" elapsed="0.000449"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-10T01:00:21.009025" 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-10T01:00:21.008702" elapsed="0.000361"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-10T01:00:21.009549" 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-10T01:00:21.009196" elapsed="0.000377"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-10T01:00:21.010017" 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-10T01:00:21.009718" elapsed="0.000336"/>
</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-10T01:00:21.010341" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:00:21.010138" elapsed="0.000251"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.014389" 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-10T01:00:21.014023" elapsed="0.000410"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-10T01:00:21.015365" level="INFO">Length is 0.</msg>
<msg time="2026-09-10T01:00:21.015455" 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-10T01:00:21.014959" elapsed="0.000519"/>
</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-10T01:00:21.015609" elapsed="0.000615"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.017176" level="INFO">Logging into '10.30.171.226:22' as 'jenkins'.</msg>
<msg time="2026-09-10T01:00:21.507077" 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 Thu Sep 10 00:59:46 UTC 2026

  System load:  0.12               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.226
  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-834-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-10T01:00:21.016697" elapsed="0.490544"/>
</kw>
<msg time="2026-09-10T01:00:21.507334" 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-10T01:00:21.016366" elapsed="0.491068"/>
</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-10T01:00:21.014632" elapsed="0.492940"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.518187" 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-10T01:00:21.507792" elapsed="0.014926"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:00:21.522982" elapsed="0.000598"/>
</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-10T01:00:21.013542" elapsed="0.510127"/>
</kw>
<status status="PASS" start="2026-09-10T01:00:21.010481" elapsed="0.513235"/>
</branch>
<status status="PASS" start="2026-09-10T01:00:21.010112" elapsed="0.513648"/>
</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-10T01:00:21.523980" elapsed="0.000964"/>
</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-10T01:00:21.531798" elapsed="0.000054"/>
</return>
<status status="NOT RUN" start="2026-09-10T01:00:21.531605" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-09-10T01:00:21.531559" elapsed="0.000384"/>
</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-10T01:00:21.536846" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-09-10T01:00:21.536675" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-09-10T01:00:21.536652" elapsed="0.000283"/>
</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-10T01:00:21.537102" elapsed="0.000555"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.538182" level="INFO">Logging into '10.30.171.18:8101' as 'karaf'.</msg>
<msg time="2026-09-10T01:00:21.758045" 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-10T01:00:21.537859" elapsed="0.220341"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.846012" 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-10T01:00:21.758477" elapsed="0.087700"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.852623" 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-10T01:00:21.852813" 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-10T01:00:21.846437" elapsed="0.006421"/>
</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-10T01:00:21.852988" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:00:21.853372" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:00:21.854101" 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-10T01:00:21.853757" elapsed="0.000413"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-10T01:00:21.854222" elapsed="0.000056"/>
</return>
<msg time="2026-09-10T01:00:21.854423" 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.171.18
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-10T01:00:21.536218" elapsed="0.318258"/>
</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-10T01:00:21.854610" elapsed="0.000510"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-10T01:00:21.855202" elapsed="0.000042"/>
</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-10T01:00:21.531107" elapsed="0.324259"/>
</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-10T01:00:21.859011" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-09-10T01:00:21.858883" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-09-10T01:00:21.858860" elapsed="0.000215"/>
</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-10T01:00:21.859195" elapsed="0.000425"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-10T01:00:21.860007" level="INFO">Logging into '10.30.171.18:8101' as 'karaf'.</msg>
<msg time="2026-09-10T01:00:22.119796" 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-10T01:00:21.859751" elapsed="0.260219"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-10T01:00:22.142856" 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-10T01:00:22.120235" elapsed="0.022677"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-10T01:00:22.144595" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-10T01:00:22.144689" 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-10T01:00:22.143046" elapsed="0.001669"/>
</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-10T01:00:22.144850" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:00:22.145153" elapsed="0.000192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:00:22.145773" 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-10T01:00:22.145489" elapsed="0.000349"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-10T01:00:22.145887" elapsed="0.000053"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.18
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-10T01:00:21.858567" elapsed="0.287478"/>
</kw>
<status status="PASS" start="2026-09-10T01:00:20.208117" elapsed="1.937986"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:00:22.148287" 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-10T01:00:22.147109" elapsed="0.001237"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-10T01:00:22.149699" 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-10T01:00:22.149343" elapsed="0.000396"/>
</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-10T01:00:22.150164" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:00:22.149935" elapsed="0.000286"/>
</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-10T01:00:22.152927" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:00:22.152688" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-09-10T01:00:22.152671" elapsed="0.000329"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-10T01:00:22.153303" 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-10T01:00:22.153411" 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-10T01:00:22.153120" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:00:22.153972" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.18 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.226" 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-10T01:00:22.153571" elapsed="0.000455"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-10T01:00:22.154593" 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-10T01:00:22.154150" elapsed="0.000466"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-10T01:00:22.155431" level="INFO">Length is 0.</msg>
<msg time="2026-09-10T01:00:22.155527" 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-10T01:00:22.155140" elapsed="0.000408"/>
</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-10T01:00:22.155675" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-10T01:00:22.156768" level="INFO">Logging into '10.30.171.226:22' as 'jenkins'.</msg>
<msg time="2026-09-10T01:00:22.517765" 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 Thu Sep 10 00:59:46 UTC 2026

  System load:  0.12               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.226
  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: Thu Sep 10 01:00:21 2026 from 10.30.170.246
[?2004h[jenkins@releng-48317-834-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-10T01:00:22.156453" elapsed="0.361537"/>
</kw>
<msg time="2026-09-10T01:00:22.518078" 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-10T01:00:22.156129" elapsed="0.362046"/>
</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-10T01:00:22.154796" elapsed="0.363501"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-10T01:00:22.518856" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.18 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-10T01:10:28.661695" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-10T01:10:28.662379" level="INFO">${stdout} = </msg>
<msg time="2026-09-10T01:10:28.662476" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-10T01:00:22.518536" elapsed="606.143993"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:10:28.663050" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.665141" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.18. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:01:27.743 16  switches: flows:  77936 77658 76830 76968 74857 75869 75156 74063 74781 72381 71891 73304 72995 70984 74175 71588  total = 19.857267 per ms 
01:02:27.844 16  switches: flows:  82237 82668 82346 81872 80308 81030 81225 81117 81070 77593 76606 78004 80222 76710 81536 76982  total = 21.323173 per ms 
01:03:27.945 16  switches: flows:  82066 83553 82499 83776 81310 80812 80766 80467 82031 78066 77519 76913 81098 76667 81166 77638  total = 21.403394 per ms 
01:04:28.045 16  switches: flows:  86679 87141 88919 87463 86281 85654 85921 86808 87961 83786 82870 82403 86858 81389 85778 81332  total = 22.749425 per ms 
01:05:28.146 16  switches: flows:  89105 86816 86653 82882 79437 76991 77066 76629 77211 71937 72796 71552 76023 71253 73999 71900  total = 20.669678 per ms 
01:06:28.246 16  switches: flows:  93086 92148 88361 85394 80107 79864 78202 78540 79725 74462 73122 75157 78744 73629 76833 74096  total = 21.322239 per ms 
01:07:28.347 16  switches: flows:  97599 96052 92706 89411 84918 83673 82233 80959 82599 76807 77878 78227 82237 77371 80314 77815  total = 22.309366 per ms 
01:08:28.450 16  switches: flows:  98123 94187 92304 89128 84660 82238 81283 81006 81400 76766 75870 75785 80476 76112 79772 76212  total = 22.051890 per ms 
01:09:28.550 16  switches: flows:  92820 92929 90380 87527 83754 83587 82146 81974 80559 76919 76865 76948 81389 77625 79902 77038  total = 22.002655 per ms 
01:10:28.651 16  switches: flows:  94801 92607 91791 90017 85024 83902 81597 82005 81196 76792 77509 77695 80986 77435 79718 77196  total = 22.134249 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 20669.68/22749.43/21774.01/7282.93 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:10:28.664391" elapsed="0.001021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-10T01:10:28.665894" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-09-10T01:10:28.665587" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-09-10T01:10:28.665532" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-10T01:10:28.666330" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-09-10T01:10:28.666258" elapsed="0.000155"/>
</branch>
<status status="NOT RUN" start="2026-09-10T01:10:28.666227" elapsed="0.000229"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-10T01:10:28.666522" 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-10T01:10:28.671661" elapsed="0.000719"/>
</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-10T01:10:28.672675" elapsed="0.000374"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:10:28.673313" elapsed="0.000200"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-10T01:10:28.667177" elapsed="0.006440"/>
</kw>
<msg time="2026-09-10T01:10:28.673898" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-10T01:00:22.150556" elapsed="606.523398"/>
</kw>
<status status="PASS" start="2026-09-10T01:00:22.150247" elapsed="606.523823"/>
</branch>
<status status="PASS" start="2026-09-10T01:00:22.149910" elapsed="606.524207"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.675035" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.18. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:01:27.743 16  switches: flows:  77936 77658 76830 76968 74857 75869 75156 74063 74781 72381 71891 73304 72995 70984 74175 71588  total = 19.857267 per ms 
01:02:27.844 16  switches: flows:  82237 82668 82346 81872 80308 81030 81225 81117 81070 77593 76606 78004 80222 76710 81536 76982  total = 21.323173 per ms 
01:03:27.945 16  switches: flows:  82066 83553 82499 83776 81310 80812 80766 80467 82031 78066 77519 76913 81098 76667 81166 77638  total = 21.403394 per ms 
01:04:28.045 16  switches: flows:  86679 87141 88919 87463 86281 85654 85921 86808 87961 83786 82870 82403 86858 81389 85778 81332  total = 22.749425 per ms 
01:05:28.146 16  switches: flows:  89105 86816 86653 82882 79437 76991 77066 76629 77211 71937 72796 71552 76023 71253 73999 71900  total = 20.669678 per ms 
01:06:28.246 16  switches: flows:  93086 92148 88361 85394 80107 79864 78202 78540 79725 74462 73122 75157 78744 73629 76833 74096  total = 21.322239 per ms 
01:07:28.347 16  switches: flows:  97599 96052 92706 89411 84918 83673 82233 80959 82599 76807 77878 78227 82237 77371 80314 77815  total = 22.309366 per ms 
01:08:28.450 16  switches: flows:  98123 94187 92304 89128 84660 82238 81283 81006 81400 76766 75870 75785 80476 76112 79772 76212  total = 22.051890 per ms 
01:09:28.550 16  switches: flows:  92820 92929 90380 87527 83754 83587 82146 81974 80559 76919 76865 76948 81389 77625 79902 77038  total = 22.002655 per ms 
01:10:28.651 16  switches: flows:  94801 92607 91791 90017 85024 83902 81597 82005 81196 76792 77509 77695 80986 77435 79718 77196  total = 22.134249 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 20669.68/22749.43/21774.01/7282.93 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:10:28.674399" elapsed="0.000787"/>
</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-10T01:10:28.675489" elapsed="0.000768"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-10T01:10:28.677163" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-10T01:10:28.677415" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 20669.68/22749.43/21774.01/7282.93 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-10T01:10:28.676578" elapsed="0.000889"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:10:28.678489" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 20669.68/22749.43/21774.01/7282.93 | 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-10T01:10:28.677921" elapsed="0.000623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.683486" 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-10T01:10:28.678868" elapsed="0.004731"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.688455" level="INFO">20669.68/22749.43/21774.01/7282.93</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:10:28.683927" elapsed="0.004641"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:10:28.693464" 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-10T01:10:28.688896" elapsed="0.004623"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:10:28.698455" level="INFO">@{result_value_list} = [ 20669.68 | 22749.43 | 21774.01 | 7282.93 ]</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-10T01:10:28.693950" elapsed="0.004560"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.699489" level="INFO">Length is 4.</msg>
<msg time="2026-09-10T01:10:28.699676" 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-10T01:10:28.698815" elapsed="0.000909"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.707970" level="INFO">min :: 20669.68</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-10T01:10:28.700533" elapsed="0.007527"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-10T01:10:28.700272" elapsed="0.007831"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.713899" level="INFO">max :: 22749.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-10T01:10:28.708378" elapsed="0.005593"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-10T01:10:28.708216" elapsed="0.005810"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.720046" level="INFO">avg :: 21774.01</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:10:28.714297" elapsed="0.005822"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-10T01:10:28.714136" elapsed="0.006027"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.725921" level="INFO">stdev :: 7282.93</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-10T01:10:28.720437" elapsed="0.005568"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-10T01:10:28.720276" elapsed="0.005773"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-10T01:10:28.699884" elapsed="0.026204"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.731006" level="INFO">${min} = 20669.68</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-10T01:10:28.726287" elapsed="0.004752"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.737320" level="INFO">${max} = 22749.43</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-10T01:10:28.731232" elapsed="0.006123"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.742382" level="INFO">${average} = 21774.01</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-10T01:10:28.737546" elapsed="0.004870"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.747444" level="INFO">${stdev} = 7282.93</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-10T01:10:28.742608" elapsed="0.004870"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.748163" level="INFO">${date} = 2026-09-10 01:10:28</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-10T01:10:28.747678" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.748777" level="INFO">CBench Result: 2026-09-10 01:10:28,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,20669.68,22749.43,21774.01,7282.93</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-10T01:10:28.748400" elapsed="0.000442"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-10T01:10:28.749795" 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-10T01:10:28.749428" elapsed="0.000457"/>
</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-10T01:10:28.750066" elapsed="0.000448"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-10T01:10:28.748989" elapsed="0.001583"/>
</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-10T01:00:22.148745" elapsed="606.601880"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.751086" 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-10T01:10:28.750759" elapsed="0.000376"/>
</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-10T01:10:28.751588" elapsed="0.000253"/>
</kw>
<status status="PASS" start="2026-09-10T01:10:28.751322" elapsed="0.000580"/>
</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-10T01:00:22.146240" elapsed="606.605696"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.753281" 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-10T01:10:28.752684" elapsed="0.000651"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.754460" 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-10T01:10:28.754168" elapsed="0.000330"/>
</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-10T01:10:28.754798" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:10:28.754564" elapsed="0.000307"/>
</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-10T01:10:28.757512" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:10:28.757293" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-09-10T01:10:28.757276" elapsed="0.000307"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-10T01:10:28.757898" 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-10T01:10:28.758017" 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-10T01:10:28.757701" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.758717" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.18 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.226" 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-10T01:10:28.758162" elapsed="0.000610"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-10T01:10:28.759368" 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-10T01:10:28.758926" elapsed="0.000466"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-10T01:10:28.760207" level="INFO">Length is 0.</msg>
<msg time="2026-09-10T01:10:28.760286" 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-10T01:10:28.759914" elapsed="0.000394"/>
</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-10T01:10:28.760435" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-10T01:10:28.761515" level="INFO">Logging into '10.30.171.226:22' as 'jenkins'.</msg>
<msg time="2026-09-10T01:10:29.372898" 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 Thu Sep 10 01:10:28 UTC 2026

  System load:  1.15               Processes:             104
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.226
  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: Thu Sep 10 01:00:22 2026 from 10.30.170.246
[?2004h[jenkins@releng-48317-834-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-10T01:10:28.761202" elapsed="0.611887"/>
</kw>
<msg time="2026-09-10T01:10:29.373167" 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-10T01:10:28.760876" elapsed="0.612371"/>
</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-10T01:10:28.759569" elapsed="0.613780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-10T01:10:29.373809" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.18 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-10T01:20:35.450060" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-10T01:20:35.450703" level="INFO">${stdout} = </msg>
<msg time="2026-09-10T01:20:35.450815" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.18: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-10T01:10:29.373546" elapsed="606.077365"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:20:35.451415" elapsed="0.000682"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.453177" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.18. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:11:34.506 16  switches: flows:  597687 600146 591056 589787 593873 597125 594551 573995 601179 603937 592999 594657 577346 589796 597346 593096  total = 158.142933 per ms 
01:12:34.609 16  switches: flows:  694117 691655 684871 686708 683808 681426 691128 688113 689952 689665 683161 680249 678918 693504 699220 684835  total = 183.046460 per ms 
01:13:34.710 16  switches: flows:  699887 698151 688438 686625 695388 688462 698249 692226 694929 699236 694603 698589 701124 689307 693516 694405  total = 184.908228 per ms 
01:14:34.813 16  switches: flows:  655850 656200 641604 654180 666492 647865 656812 649920 657053 661030 650087 657882 652860 652468 660374 644514  total = 174.126766 per ms 
01:15:34.914 16  switches: flows:  667270 667914 665163 659338 667841 666450 660182 667034 661910 669836 661223 661657 660094 661088 673533 665208  total = 176.964442 per ms 
01:16:35.030 16  switches: flows:  676685 665796 666382 663694 660204 663596 671768 661521 673778 671113 659987 659261 657780 673472 663145 667089  total = 177.249124 per ms 
01:17:35.131 16  switches: flows:  669546 685098 670538 675544 674451 676541 676492 669532 670478 679980 667634 675249 666759 667179 675519 673557  total = 179.265385 per ms 
01:18:35.232 16  switches: flows:  646365 650803 644630 633660 648255 647922 651591 650258 649401 653990 645466 639143 645691 642343 649490 647547  total = 172.154557 per ms 
01:19:35.333 16  switches: flows:  647392 656090 645016 642940 657217 645892 650488 648077 648505 653920 647839 645614 653307 650449 657114 641118  total = 172.893318 per ms 
01:20:35.435 16  switches: flows:  692809 701233 698861 688971 699370 692712 701794 685170 692830 694468 687642 695331 687802 700543 704101 698666  total = 185.059783 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 172154.56/185059.78/178407.56/59655.75 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:20:35.452447" elapsed="0.001009"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-10T01:20:35.453947" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-09-10T01:20:35.453620" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-09-10T01:20:35.453574" elapsed="0.000590"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-10T01:20:35.454352" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-09-10T01:20:35.454279" elapsed="0.000154"/>
</branch>
<status status="NOT RUN" start="2026-09-10T01:20:35.454248" elapsed="0.000227"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-10T01:20:35.454536" 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-10T01:20:35.459764" elapsed="0.000772"/>
</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-10T01:20:35.460867" elapsed="0.000347"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:20:35.461477" elapsed="0.000207"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-10T01:20:35.455189" elapsed="0.006599"/>
</kw>
<msg time="2026-09-10T01:20:35.462093" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.18: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-10T01:10:28.755191" elapsed="606.706955"/>
</kw>
<status status="PASS" start="2026-09-10T01:10:28.754894" elapsed="606.707347"/>
</branch>
<status status="PASS" start="2026-09-10T01:10:28.754544" elapsed="606.707743"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.463192" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.18. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:11:34.506 16  switches: flows:  597687 600146 591056 589787 593873 597125 594551 573995 601179 603937 592999 594657 577346 589796 597346 593096  total = 158.142933 per ms 
01:12:34.609 16  switches: flows:  694117 691655 684871 686708 683808 681426 691128 688113 689952 689665 683161 680249 678918 693504 699220 684835  total = 183.046460 per ms 
01:13:34.710 16  switches: flows:  699887 698151 688438 686625 695388 688462 698249 692226 694929 699236 694603 698589 701124 689307 693516 694405  total = 184.908228 per ms 
01:14:34.813 16  switches: flows:  655850 656200 641604 654180 666492 647865 656812 649920 657053 661030 650087 657882 652860 652468 660374 644514  total = 174.126766 per ms 
01:15:34.914 16  switches: flows:  667270 667914 665163 659338 667841 666450 660182 667034 661910 669836 661223 661657 660094 661088 673533 665208  total = 176.964442 per ms 
01:16:35.030 16  switches: flows:  676685 665796 666382 663694 660204 663596 671768 661521 673778 671113 659987 659261 657780 673472 663145 667089  total = 177.249124 per ms 
01:17:35.131 16  switches: flows:  669546 685098 670538 675544 674451 676541 676492 669532 670478 679980 667634 675249 666759 667179 675519 673557  total = 179.265385 per ms 
01:18:35.232 16  switches: flows:  646365 650803 644630 633660 648255 647922 651591 650258 649401 653990 645466 639143 645691 642343 649490 647547  total = 172.154557 per ms 
01:19:35.333 16  switches: flows:  647392 656090 645016 642940 657217 645892 650488 648077 648505 653920 647839 645614 653307 650449 657114 641118  total = 172.893318 per ms 
01:20:35.435 16  switches: flows:  692809 701233 698861 688971 699370 692712 701794 685170 692830 694468 687642 695331 687802 700543 704101 698666  total = 185.059783 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 172154.56/185059.78/178407.56/59655.75 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:20:35.462564" elapsed="0.000778"/>
</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-10T01:20:35.463633" elapsed="0.000766"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-10T01:20:35.465198" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-10T01:20:35.465382" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 172154.56/185059.78/178407.56/59655.75 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-10T01:20:35.464716" elapsed="0.000716"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:20:35.466319" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 172154.56/185059.78/178407.56/59655.75 | 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-10T01:20:35.465763" elapsed="0.000610"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.471340" 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-10T01:20:35.466664" elapsed="0.004820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.476462" level="INFO">172154.56/185059.78/178407.56/59655.75</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:20:35.471792" elapsed="0.004783"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:20:35.481464" 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-10T01:20:35.476917" elapsed="0.004601"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:20:35.486595" level="INFO">@{result_value_list} = [ 172154.56 | 185059.78 | 178407.56 | 59655.75 ]</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-10T01:20:35.481996" elapsed="0.004655"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.487633" level="INFO">Length is 4.</msg>
<msg time="2026-09-10T01:20:35.487878" 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-10T01:20:35.487011" elapsed="0.000940"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.496141" level="INFO">min :: 172154.56</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-10T01:20:35.488719" elapsed="0.007495"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-10T01:20:35.488461" elapsed="0.007797"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.502374" level="INFO">max :: 185059.78</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-10T01:20:35.496555" elapsed="0.005889"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-10T01:20:35.496371" elapsed="0.006116"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.508269" level="INFO">avg :: 178407.56</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-10T01:20:35.502755" elapsed="0.005585"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-10T01:20:35.502595" elapsed="0.005788"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.514108" level="INFO">stdev :: 59655.75</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:20:35.508653" elapsed="0.005524"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-10T01:20:35.508491" elapsed="0.005734"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-10T01:20:35.488097" elapsed="0.026180"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.518736" level="INFO">${min} = 172154.56</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-10T01:20:35.514484" elapsed="0.004277"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.522289" level="INFO">${max} = 185059.78</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-10T01:20:35.518916" elapsed="0.003397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.525868" level="INFO">${average} = 178407.56</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-10T01:20:35.522452" elapsed="0.003440"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.529423" level="INFO">${stdev} = 59655.75</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-10T01:20:35.526041" elapsed="0.003406"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.529937" level="INFO">${date} = 2026-09-10 01:20:35</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-10T01:20:35.529592" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.530472" level="INFO">CBench Result: 2026-09-10 01:20:35,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,172154.56,185059.78,178407.56,59655.75</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-10T01:20:35.530094" elapsed="0.000439"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-10T01:20:35.531459" 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-10T01:20:35.531100" elapsed="0.000422"/>
</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-10T01:20:35.531657" elapsed="0.000461"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-10T01:20:35.530662" elapsed="0.001513"/>
</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-10T01:10:28.753610" elapsed="606.778617"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.532651" 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-10T01:20:35.532364" elapsed="0.000337"/>
</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-10T01:20:35.533179" elapsed="0.000233"/>
</kw>
<status status="PASS" start="2026-09-10T01:20:35.532902" elapsed="0.000571"/>
</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-10T01:10:28.752214" elapsed="606.781294"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.534902" 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-10T01:20:35.534541" elapsed="0.000424"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.536445" 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-10T01:20:35.536124" elapsed="0.000361"/>
</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-10T01:20:35.536782" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:20:35.536584" 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-10T01:20:35.539576" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:20:35.539355" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-09-10T01:20:35.539339" elapsed="0.000309"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-10T01:20:35.539955" 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-10T01:20:35.540059" 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-10T01:20:35.539765" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.540574" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.18 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.226" 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-10T01:20:35.540202" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-10T01:20:35.541137" 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-10T01:20:35.540749" elapsed="0.000412"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-10T01:20:35.541991" level="INFO">Length is 0.</msg>
<msg time="2026-09-10T01:20:35.542073" 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-10T01:20:35.541665" elapsed="0.000429"/>
</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-10T01:20:35.542221" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-10T01:20:35.543293" level="INFO">Logging into '10.30.171.226:22' as 'jenkins'.</msg>
<msg time="2026-09-10T01:20:36.135653" 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 Thu Sep 10 01:20:35 UTC 2026

  System load:  0.47               Processes:             104
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.226
  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: Thu Sep 10 01:10:29 2026 from 10.30.170.246
[?2004h[jenkins@releng-48317-834-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-10T01:20:35.542979" elapsed="0.592836"/>
</kw>
<msg time="2026-09-10T01:20:36.135918" 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-10T01:20:35.542642" elapsed="0.593372"/>
</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-10T01:20:35.541339" elapsed="0.594788"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-10T01:20:36.136655" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.18 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-10T01:30:42.164098" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-10T01:30:42.164799" level="INFO">${stdout} = </msg>
<msg time="2026-09-10T01:30:42.164933" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-09-10T01:20:36.136345" elapsed="606.028641"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:30:42.165470" elapsed="0.000673"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.167282" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.18. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:21:41.245 16  switches: flows:  97220 95505 93262 91054 89148 86951 84724 85628 82769 80696 81627 80762 80363 80233 80155 80938  total = 22.850583 per ms 
01:22:41.345 16  switches: flows:  94232 93781 92554 90064 89045 85775 85038 84070 82747 80646 81250 81161 81481 81455 82236 80572  total = 22.730484 per ms 
01:23:41.445 16  switches: flows:  94196 93969 95897 91153 87364 86395 83777 82840 82920 80068 83233 81244 80575 81503 82480 81008  total = 22.772332 per ms 
01:24:41.546 16  switches: flows:  95840 92645 93090 92263 88771 84773 84133 84217 83074 79615 80465 81404 81251 81092 81409 81941  total = 22.728442 per ms 
01:25:41.646 16  switches: flows:  95136 94309 93544 89974 87846 85474 84297 84588 82461 79037 81109 81493 80875 81459 81748 81322  total = 22.706574 per ms 
01:26:41.746 16  switches: flows:  95544 92706 94513 90036 89445 87745 83990 87101 83647 80020 79959 81421 81661 82161 82454 81545  total = 22.860937 per ms 
01:27:41.847 16  switches: flows:  93160 93407 91147 88518 89091 86742 82923 85564 82120 79716 78408 80323 82599 82065 83021 80747  total = 22.621409 per ms 
01:28:41.947 16  switches: flows:  96267 93262 92924 89566 87160 86733 83633 86186 84797 80396 80162 81045 84010 81431 83467 80207  total = 22.815991 per ms 
01:29:42.047 16  switches: flows:  95346 93237 92970 87594 87021 87993 83536 86345 83154 79377 79181 80514 83435 81851 83686 80419  total = 22.723047 per ms 
01:30:42.147 16  switches: flows:  92576 92959 91040 88013 86112 85988 83409 85571 81560 80799 79360 82136 84051 82162 82394 79380  total = 22.587457 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 22587.46/22860.94/22727.41/7576.24 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:30:42.166527" elapsed="0.001142"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-10T01:30:42.168236" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-09-10T01:30:42.167931" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-09-10T01:30:42.167856" elapsed="0.000661"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-10T01:30:42.168712" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-09-10T01:30:42.168637" elapsed="0.000158"/>
</branch>
<status status="NOT RUN" start="2026-09-10T01:30:42.168605" elapsed="0.000265"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-10T01:30:42.168935" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-10T01:30:42.174891" elapsed="0.000841"/>
</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-10T01:30:42.176114" elapsed="0.000377"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-10T01:30:42.176755" elapsed="0.000258"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-10T01:30:42.169630" elapsed="0.007492"/>
</kw>
<msg time="2026-09-10T01:30:42.177373" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-09-10T01:20:35.537166" elapsed="606.640285"/>
</kw>
<status status="PASS" start="2026-09-10T01:20:35.536872" elapsed="606.640679"/>
</branch>
<status status="PASS" start="2026-09-10T01:20:35.536565" elapsed="606.641032"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.178525" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.18:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.18. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:21:41.245 16  switches: flows:  97220 95505 93262 91054 89148 86951 84724 85628 82769 80696 81627 80762 80363 80233 80155 80938  total = 22.850583 per ms 
01:22:41.345 16  switches: flows:  94232 93781 92554 90064 89045 85775 85038 84070 82747 80646 81250 81161 81481 81455 82236 80572  total = 22.730484 per ms 
01:23:41.445 16  switches: flows:  94196 93969 95897 91153 87364 86395 83777 82840 82920 80068 83233 81244 80575 81503 82480 81008  total = 22.772332 per ms 
01:24:41.546 16  switches: flows:  95840 92645 93090 92263 88771 84773 84133 84217 83074 79615 80465 81404 81251 81092 81409 81941  total = 22.728442 per ms 
01:25:41.646 16  switches: flows:  95136 94309 93544 89974 87846 85474 84297 84588 82461 79037 81109 81493 80875 81459 81748 81322  total = 22.706574 per ms 
01:26:41.746 16  switches: flows:  95544 92706 94513 90036 89445 87745 83990 87101 83647 80020 79959 81421 81661 82161 82454 81545  total = 22.860937 per ms 
01:27:41.847 16  switches: flows:  93160 93407 91147 88518 89091 86742 82923 85564 82120 79716 78408 80323 82599 82065 83021 80747  total = 22.621409 per ms 
01:28:41.947 16  switches: flows:  96267 93262 92924 89566 87160 86733 83633 86186 84797 80396 80162 81045 84010 81431 83467 80207  total = 22.815991 per ms 
01:29:42.047 16  switches: flows:  95346 93237 92970 87594 87021 87993 83536 86345 83154 79377 79181 80514 83435 81851 83686 80419  total = 22.723047 per ms 
01:30:42.147 16  switches: flows:  92576 92959 91040 88013 86112 85988 83409 85571 81560 80799 79360 82136 84051 82162 82394 79380  total = 22.587457 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 22587.46/22860.94/22727.41/7576.24 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:30:42.177917" elapsed="0.000757"/>
</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-10T01:30:42.179001" elapsed="0.000732"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-10T01:30:42.180539" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-10T01:30:42.180715" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 22587.46/22860.94/22727.41/7576.24 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-10T01:30:42.180092" elapsed="0.000672"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:30:42.181638" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 22587.46/22860.94/22727.41/7576.24 | 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-10T01:30:42.181120" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.186592" 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-10T01:30:42.182010" elapsed="0.004693"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.191662" level="INFO">22587.46/22860.94/22727.41/7576.24</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:30:42.187032" elapsed="0.004745"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:30:42.196633" 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-10T01:30:42.192117" elapsed="0.004569"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-10T01:30:42.201690" level="INFO">@{result_value_list} = [ 22587.46 | 22860.94 | 22727.41 | 7576.24 ]</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-10T01:30:42.197106" elapsed="0.004639"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.202985" level="INFO">Length is 4.</msg>
<msg time="2026-09-10T01:30:42.203233" 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-10T01:30:42.202226" elapsed="0.001078"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.211403" level="INFO">min :: 22587.46</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-10T01:30:42.204204" elapsed="0.007282"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-10T01:30:42.203901" elapsed="0.007635"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.217446" level="INFO">max :: 22860.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-10T01:30:42.211896" elapsed="0.005622"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-10T01:30:42.211657" elapsed="0.005903"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.223427" level="INFO">avg :: 22727.41</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-10T01:30:42.217881" elapsed="0.005617"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-10T01:30:42.217663" elapsed="0.005878"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.229363" level="INFO">stdev :: 7576.24</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-10T01:30:42.223801" elapsed="0.005648"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-10T01:30:42.223643" elapsed="0.005849"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-10T01:30:42.203470" elapsed="0.026059"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.234108" level="INFO">${min} = 22587.46</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-10T01:30:42.229730" elapsed="0.004402"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.237665" level="INFO">${max} = 22860.94</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-09-10T01:30:42.234271" elapsed="0.003417"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.241262" level="INFO">${average} = 22727.41</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-10T01:30:42.237839" elapsed="0.003446"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.244843" level="INFO">${stdev} = 7576.24</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-10T01:30:42.241442" elapsed="0.003426"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.245325" level="INFO">${date} = 2026-09-10 01:30:42</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-10T01:30:42.245013" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.245872" level="INFO">CBench Result: 2026-09-10 01:30:42,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,22587.46,22860.94,22727.41,7576.24</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-10T01:30:42.245491" elapsed="0.000431"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-10T01:30:42.246964" 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-10T01:30:42.246505" elapsed="0.000520"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-09-10T01:30:42.247161" elapsed="0.000426"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-10T01:30:42.246063" elapsed="0.001582"/>
</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-10T01:20:35.535240" elapsed="606.712457"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.248124" 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-10T01:30:42.247844" elapsed="0.000331"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-10T01:30:42.249451" 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-10T01:30:42.248846" elapsed="0.000630"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-09-10T01:30:42.249684" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-09-10T01:30:42.249547" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-09-10T01:30:42.249528" elapsed="0.000239"/>
</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-10T01:30:42.249914" elapsed="0.000020"/>
</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-10T01:30:42.250055" 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-10T01:30:42.250221" 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-10T01:30:42.250357" elapsed="0.000031"/>
</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-10T01:30:42.250542" 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-10T01:30:42.250672" 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-10T01:30:42.250799" elapsed="0.000032"/>
</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-10T01:30:42.251011" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-09-10T01:30:42.250888" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-09-10T01:30:42.250873" elapsed="0.000209"/>
</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-10T01:30:42.248529" elapsed="0.002601"/>
</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-10T01:20:35.534026" elapsed="606.717145"/>
</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-10T01:00:19.693491" elapsed="1822.558287"/>
</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>
