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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-19T00:59:56.938099" elapsed="0.805114"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-19T00:59:57.793854" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-19T00:59:57.743553" elapsed="0.050371"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-19T00:59:57.795823" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-19T00:59:57.795939" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-19T00:59:57.794090" elapsed="0.001879"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-19T00:59:57.796127" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T00:59:57.796504" elapsed="0.000219"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T00:59:57.797260" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T00:59:57.796888" elapsed="0.000442"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-19T00:59:57.797385" elapsed="0.000059"/>
</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.58
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-19T00:59:56.936634" elapsed="0.860949"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-08-19T00:59:56.932970" elapsed="0.864678"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-19T00:59:57.798324" 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-08-19T00:59:57.797850" elapsed="0.000557"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-19T00:59:57.798867" 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-08-19T00:59:57.798574" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-19T00:59:57.799580" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-19T00:59:57.799129" elapsed="0.000479"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-19T00:59:57.800188" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-19T00:59:57.799818" elapsed="0.000437"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-19T00:59:57.800827" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-19T00:59:57.800415" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-19T00:59:57.801360" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-19T00:59:57.801025" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-08-19T00:59:57.801767" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-19T00:59:57.801537" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-19T00:59:57.806167" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T00:59:57.805759" elapsed="0.000436"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-19T00:59:57.807549" level="INFO">Length is 0.</msg>
<msg time="2026-08-19T00:59:57.807636" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-19T00:59:57.806772" elapsed="0.000888"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T00:59:57.807823" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-19T00:59:57.809175" level="INFO">Logging into '10.30.171.53:22' as 'jenkins'.</msg>
<msg time="2026-08-19T00:59:58.240807" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Aug 19 00:59:16 UTC 2026

  System load:  0.27               Processes:             110
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.53
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-48317-815-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-19T00:59:57.808684" elapsed="0.432235"/>
</kw>
<msg time="2026-08-19T00:59:58.240996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T00:59:57.808339" elapsed="0.432739"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-19T00:59:57.806428" elapsed="0.434756"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.248308" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-08-19T00:59:58.241389" elapsed="0.009245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T00:59:58.250825" elapsed="0.000322"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-08-19T00:59:57.805232" elapsed="0.445978"/>
</kw>
<status status="PASS" start="2026-08-19T00:59:57.801912" elapsed="0.449353"/>
</branch>
<status status="PASS" start="2026-08-19T00:59:57.801509" elapsed="0.449790"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-19T00:59:58.251497" elapsed="0.001018"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-19T00:59:58.260840" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-08-19T00:59:58.260719" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-08-19T00:59:58.260695" elapsed="0.000225"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-19T00:59:58.264571" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-08-19T00:59:58.264449" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-08-19T00:59:58.264430" elapsed="0.000212"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T00:59:58.264774" elapsed="0.000442"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.265653" level="INFO">Logging into '10.30.171.58:8101' as 'karaf'.</msg>
<msg time="2026-08-19T00:59:58.459444" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-19T00:59:58.265382" elapsed="0.194158"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.559251" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-19T00:59:58.459720" elapsed="0.099617"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.568336" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-19T00:59:58.568526" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-19T00:59:58.559502" elapsed="0.009055"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-19T00:59:58.568710" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T00:59:58.569053" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T00:59:58.569731" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T00:59:58.569439" elapsed="0.000348"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-19T00:59:58.569838" elapsed="0.000047"/>
</return>
<msg time="2026-08-19T00:59:58.570027" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.58
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-19T00:59:58.264070" elapsed="0.305991"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-19T00:59:58.570207" elapsed="0.000550"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-19T00:59:58.570808" elapsed="0.000031"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-08-19T00:59:58.260413" elapsed="0.310527"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-19T00:59:58.574697" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-08-19T00:59:58.574579" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-08-19T00:59:58.574557" elapsed="0.000210"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T00:59:58.574898" elapsed="0.000509"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.575819" level="INFO">Logging into '10.30.171.58:8101' as 'karaf'.</msg>
<msg time="2026-08-19T00:59:58.738133" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-19T00:59:58.575563" elapsed="0.162659"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.765066" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-19T00:59:58.738394" elapsed="0.026807"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.768857" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-19T00:59:58.768954" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-19T00:59:58.765551" elapsed="0.003431"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-19T00:59:58.769116" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T00:59:58.769462" elapsed="0.000158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T00:59:58.770022" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T00:59:58.769761" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-19T00:59:58.770117" elapsed="0.000036"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.58
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-19T00:59:58.574259" elapsed="0.196014"/>
</kw>
<status status="PASS" start="2026-08-19T00:59:56.931046" elapsed="1.839288"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T00:59:58.772401" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T00:59:58.771273" elapsed="0.001192"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-19T00:59:58.773927" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-19T00:59:58.773582" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-19T00:59:58.774280" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-19T00:59:58.774043" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-19T00:59:58.777284" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-19T00:59:58.777021" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-08-19T00:59:58.777000" elapsed="0.000365"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.777688" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-19T00:59:58.777495" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T00:59:58.778405" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.58 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.53" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T00:59:58.777965" elapsed="0.000501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.779062" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T00:59:58.778603" elapsed="0.000485"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-19T00:59:58.780026" level="INFO">Length is 0.</msg>
<msg time="2026-08-19T00:59:58.780119" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-19T00:59:58.779716" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T00:59:58.780311" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-19T00:59:58.781502" level="INFO">Logging into '10.30.171.53:22' as 'jenkins'.</msg>
<msg time="2026-08-19T00:59:59.114412" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Aug 19 00:59:16 UTC 2026

  System load:  0.27               Processes:             110
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.53
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Wed Aug 19 00:59:58 2026 from 10.30.171.154
[?2004h[jenkins@releng-48317-815-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-19T00:59:58.781135" elapsed="0.333403"/>
</kw>
<msg time="2026-08-19T00:59:59.114606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T00:59:58.780793" elapsed="0.333883"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-19T00:59:58.779305" elapsed="0.335467"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-19T00:59:59.115176" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.58 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-19T01:10:05.259323" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-19T01:10:05.259921" level="INFO">${stdout} = </msg>
<msg time="2026-08-19T01:10:05.260029" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-19T00:59:59.114942" elapsed="606.145145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T01:10:05.260561" elapsed="0.000767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.262478" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58: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.58. 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:04.362 16  switches: flows:  108091 111054 112082 110713 110867 108635 107137 109372 106512 108411 107766 106371 111135 108094 105882 105765  total = 28.964783 per ms 
01:02:04.463 16  switches: flows:  124534 126086 125722 128107 128883 127670 129511 127161 127081 126050 126446 123779 125756 124066 121790 124463  total = 33.562368 per ms 
01:03:04.563 16  switches: flows:  125473 127726 126880 129254 130163 129182 131279 126395 129762 128087 127973 125257 126404 125296 123485 125302  total = 33.908691 per ms 
01:04:04.663 16  switches: flows:  123909 124641 123220 126861 126141 126192 127431 124386 125550 124729 124466 119258 121301 122211 120385 120985  total = 32.972736 per ms 
01:05:04.763 16  switches: flows:  117320 117411 117282 117763 116890 113950 116743 116822 113968 113892 114005 112577 116177 113467 112686 110795  total = 30.644647 per ms 
01:06:04.864 16  switches: flows:  126573 127562 126810 126357 124973 124486 127078 127344 121843 119758 121456 121599 124023 124480 122864 117892  total = 33.029828 per ms 
01:07:04.964 16  switches: flows:  125136 126886 123757 123927 122864 122485 124646 124276 121008 119532 119386 118943 123269 123431 120523 116375  total = 32.553046 per ms 
01:08:05.064 16  switches: flows:  125646 127487 126589 126666 126189 124071 124808 126273 122935 120461 122831 122190 125534 124202 122691 118383  total = 33.060737 per ms 
01:09:05.164 16  switches: flows:  121115 124444 121933 120791 121776 122543 121135 121697 122718 118272 121933 122222 122279 119810 122470 115112  total = 32.283598 per ms 
01:10:05.265 16  switches: flows:  127273 128983 125560 125797 125497 127738 124962 128433 128172 120900 126379 127387 126886 124625 127242 120333  total = 33.546776 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30644.65/33908.69/32840.27/10984.64 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.261689" elapsed="0.001107"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-19T01:10:05.263367" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-08-19T01:10:05.263002" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-08-19T01:10:05.262938" elapsed="0.000653"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-19T01:10:05.263818" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-08-19T01:10:05.263735" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-08-19T01:10:05.263699" elapsed="0.000258"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-19T01:10:05.264032" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T01:10:05.269669" elapsed="0.000779"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T01:10:05.270787" elapsed="0.000375"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T01:10:05.271574" elapsed="0.000239"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-19T01:10:05.264756" elapsed="0.007179"/>
</kw>
<msg time="2026-08-19T01:10:05.272231" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-19T00:59:58.774685" elapsed="606.497653"/>
</kw>
<status status="PASS" start="2026-08-19T00:59:58.774366" elapsed="606.498098"/>
</branch>
<status status="PASS" start="2026-08-19T00:59:58.774022" elapsed="606.498472"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.272927" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58: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.58. 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:04.362 16  switches: flows:  108091 111054 112082 110713 110867 108635 107137 109372 106512 108411 107766 106371 111135 108094 105882 105765  total = 28.964783 per ms 
01:02:04.463 16  switches: flows:  124534 126086 125722 128107 128883 127670 129511 127161 127081 126050 126446 123779 125756 124066 121790 124463  total = 33.562368 per ms 
01:03:04.563 16  switches: flows:  125473 127726 126880 129254 130163 129182 131279 126395 129762 128087 127973 125257 126404 125296 123485 125302  total = 33.908691 per ms 
01:04:04.663 16  switches: flows:  123909 124641 123220 126861 126141 126192 127431 124386 125550 124729 124466 119258 121301 122211 120385 120985  total = 32.972736 per ms 
01:05:04.763 16  switches: flows:  117320 117411 117282 117763 116890 113950 116743 116822 113968 113892 114005 112577 116177 113467 112686 110795  total = 30.644647 per ms 
01:06:04.864 16  switches: flows:  126573 127562 126810 126357 124973 124486 127078 127344 121843 119758 121456 121599 124023 124480 122864 117892  total = 33.029828 per ms 
01:07:04.964 16  switches: flows:  125136 126886 123757 123927 122864 122485 124646 124276 121008 119532 119386 118943 123269 123431 120523 116375  total = 32.553046 per ms 
01:08:05.064 16  switches: flows:  125646 127487 126589 126666 126189 124071 124808 126273 122935 120461 122831 122190 125534 124202 122691 118383  total = 33.060737 per ms 
01:09:05.164 16  switches: flows:  121115 124444 121933 120791 121776 122543 121135 121697 122718 118272 121933 122222 122279 119810 122470 115112  total = 32.283598 per ms 
01:10:05.265 16  switches: flows:  127273 128983 125560 125797 125497 127738 124962 128433 128172 120900 126379 127387 126886 124625 127242 120333  total = 33.546776 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 30644.65/33908.69/32840.27/10984.64 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.272633" elapsed="0.000369"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-19T01:10:05.273148" elapsed="0.000385"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-19T01:10:05.273925" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-19T01:10:05.274022" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 30644.65/33908.69/32840.27/10984.64 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-19T01:10:05.273699" elapsed="0.000349"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:10:05.274474" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 30644.65/33908.69/32840.27/10984.64 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:10:05.274200" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.276907" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.274646" elapsed="0.002318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.279404" level="INFO">30644.65/33908.69/32840.27/10984.64</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.277109" elapsed="0.002354"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:10:05.281848" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:10:05.279613" elapsed="0.002266"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:10:05.284403" level="INFO">@{result_value_list} = [ 30644.65 | 33908.69 | 32840.27 | 10984.64 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:10:05.282073" elapsed="0.002358"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.284902" level="INFO">Length is 4.</msg>
<msg time="2026-08-19T01:10:05.284995" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-19T01:10:05.284586" elapsed="0.000434"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.289770" level="INFO">min :: 30644.65</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.285427" elapsed="0.004400"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-19T01:10:05.285287" elapsed="0.004575"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.294363" level="INFO">max :: 33908.69</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.290085" elapsed="0.004334"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-19T01:10:05.289953" elapsed="0.004500"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.298916" level="INFO">avg :: 32840.27</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.294667" elapsed="0.004305"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-19T01:10:05.294541" elapsed="0.004465"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.303691" level="INFO">stdev :: 10984.64</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.299233" elapsed="0.004514"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-19T01:10:05.299096" elapsed="0.004686"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-19T01:10:05.285088" elapsed="0.018726"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.307749" level="INFO">${min} = 30644.65</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:10:05.303974" elapsed="0.003801"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.312953" level="INFO">${max} = 33908.69</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:10:05.307935" elapsed="0.005045"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.316907" level="INFO">${average} = 32840.27</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:10:05.313137" elapsed="0.003798"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.320817" level="INFO">${stdev} = 10984.64</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:10:05.317086" elapsed="0.003757"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.321380" level="INFO">${date} = 2026-08-19 01:10:05</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-19T01:10:05.321001" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.321959" level="INFO">CBench Result: 2026-08-19 01:10:05,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,30644.65,33908.69,32840.27,10984.64</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.321553" elapsed="0.000461"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-19T01:10:05.323039" 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-08-19T01:10:05.322641" elapsed="0.000471"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-19T01:10:05.323309" elapsed="0.000465"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-19T01:10:05.322152" elapsed="0.001686"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-08-19T00:59:58.772949" elapsed="606.550946"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.324384" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-19T01:10:05.324051" elapsed="0.000388"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-19T01:10:05.324947" elapsed="0.000262"/>
</kw>
<status status="PASS" start="2026-08-19T01:10:05.324650" elapsed="0.000645"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-19T00:59:58.770482" elapsed="606.554852"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.326599" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.326200" elapsed="0.000458"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.327963" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-19T01:10:05.327632" elapsed="0.000373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-19T01:10:05.328346" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-19T01:10:05.328112" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-19T01:10:05.331634" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-08-19T01:10:05.331007" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-08-19T01:10:05.330989" elapsed="0.000728"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-19T01:10:05.332036" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-19T01:10:05.331847" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.332752" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.58 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.53" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:10:05.332335" elapsed="0.000474"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-19T01:10:05.333354" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T01:10:05.332951" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-19T01:10:05.334262" level="INFO">Length is 0.</msg>
<msg time="2026-08-19T01:10:05.334353" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-19T01:10:05.333943" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T01:10:05.334517" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-19T01:10:05.335753" level="INFO">Logging into '10.30.171.53:22' as 'jenkins'.</msg>
<msg time="2026-08-19T01:10:05.958837" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Aug 19 01:10:05 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Wed Aug 19 00:59:59 2026 from 10.30.171.154
[?2004h[jenkins@releng-48317-815-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-19T01:10:05.335394" elapsed="0.623646"/>
</kw>
<msg time="2026-08-19T01:10:05.959155" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T01:10:05.334997" elapsed="0.624276"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-19T01:10:05.333576" elapsed="0.625824"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-19T01:10:05.959992" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.58 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-19T01:20:12.386515" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-19T01:20:12.387051" level="INFO">${stdout} = </msg>
<msg time="2026-08-19T01:20:12.387156" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.58:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-19T01:10:05.959651" elapsed="606.427561"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T01:20:12.387696" elapsed="0.000723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.389572" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.58: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.58. 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:11.103 16  switches: flows:  525598 515509 524587 519639 528742 514135 519021 525549 517457 511461 526576 535675 516065 522426 516613 503708  total = 138.712683 per ms 
01:12:11.205 16  switches: flows:  524926 523380 521990 530230 528448 521445 523044 519484 527794 520891 528692 524812 520270 518343 518179 527964  total = 139.429735 per ms 
01:13:11.308 16  switches: flows:  435480 434864 440747 435085 440086 434129 434207 433141 435079 436356 434186 431375 433650 435604 433190 433849  total = 115.818029 per ms 
01:14:11.410 16  switches: flows:  438169 441820 435014 437314 439838 440747 436109 441182 427121 434388 439578 446370 440679 433581 432803 438327  total = 116.521847 per ms 
01:15:11.512 16  switches: flows:  492331 491037 491435 489586 495498 490224 496531 494859 493061 494921 489485 491156 489763 491110 495043 487893  total = 131.011090 per ms 
01:16:11.949 16  switches: flows:  438763 440855 435240 437387 439377 438619 434265 435865 438691 435546 434858 442435 442219 435510 437202 439319  total = 115.924989 per ms 
01:17:12.051 16  switches: flows:  495717 492752 493000 487859 491756 493854 494511 492126 492536 492436 494504 493101 495573 492655 487272 495450  total = 131.197738 per ms 
01:18:12.153 16  switches: flows:  485579 485295 485997 489842 483267 480634 486683 483061 485814 485962 486789 490596 481698 485863 482778 481120  total = 129.130922 per ms 
01:19:12.254 16  switches: flows:  510920 510950 512672 504802 508497 506130 507715 508282 503752 508009 510667 506403 509204 507378 511405 504729  total = 135.297544 per ms 
01:20:12.389 16  switches: flows:  493660 499904 502407 497132 500363 502998 500725 493900 495157 502843 494129 498911 499289 497746 504813 508844  total = 132.914714 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 115818.03/139429.73/127471.85/43334.79 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.388789" elapsed="0.001071"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-19T01:20:12.390414" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-08-19T01:20:12.390047" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-08-19T01:20:12.389994" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-19T01:20:12.390845" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-08-19T01:20:12.390766" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-08-19T01:20:12.390731" elapsed="0.000246"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-19T01:20:12.391043" 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-08-19T01:20:12.396594" elapsed="0.000784"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T01:20:12.397703" elapsed="0.000352"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T01:20:12.398432" elapsed="0.000234"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-19T01:20:12.391739" elapsed="0.007009"/>
</kw>
<msg time="2026-08-19T01:20:12.398875" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.58:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-19T01:10:05.328736" elapsed="607.070165"/>
</kw>
<status status="PASS" start="2026-08-19T01:10:05.328429" elapsed="607.070521"/>
</branch>
<status status="PASS" start="2026-08-19T01:10:05.328093" elapsed="607.070881"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.399417" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.58: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.58. 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:11.103 16  switches: flows:  525598 515509 524587 519639 528742 514135 519021 525549 517457 511461 526576 535675 516065 522426 516613 503708  total = 138.712683 per ms 
01:12:11.205 16  switches: flows:  524926 523380 521990 530230 528448 521445 523044 519484 527794 520891 528692 524812 520270 518343 518179 527964  total = 139.429735 per ms 
01:13:11.308 16  switches: flows:  435480 434864 440747 435085 440086 434129 434207 433141 435079 436356 434186 431375 433650 435604 433190 433849  total = 115.818029 per ms 
01:14:11.410 16  switches: flows:  438169 441820 435014 437314 439838 440747 436109 441182 427121 434388 439578 446370 440679 433581 432803 438327  total = 116.521847 per ms 
01:15:11.512 16  switches: flows:  492331 491037 491435 489586 495498 490224 496531 494859 493061 494921 489485 491156 489763 491110 495043 487893  total = 131.011090 per ms 
01:16:11.949 16  switches: flows:  438763 440855 435240 437387 439377 438619 434265 435865 438691 435546 434858 442435 442219 435510 437202 439319  total = 115.924989 per ms 
01:17:12.051 16  switches: flows:  495717 492752 493000 487859 491756 493854 494511 492126 492536 492436 494504 493101 495573 492655 487272 495450  total = 131.197738 per ms 
01:18:12.153 16  switches: flows:  485579 485295 485997 489842 483267 480634 486683 483061 485814 485962 486789 490596 481698 485863 482778 481120  total = 129.130922 per ms 
01:19:12.254 16  switches: flows:  510920 510950 512672 504802 508497 506130 507715 508282 503752 508009 510667 506403 509204 507378 511405 504729  total = 135.297544 per ms 
01:20:12.389 16  switches: flows:  493660 499904 502407 497132 500363 502998 500725 493900 495157 502843 494129 498911 499289 497746 504813 508844  total = 132.914714 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 115818.03/139429.73/127471.85/43334.79 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.399113" elapsed="0.000377"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-19T01:20:12.399636" elapsed="0.000369"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-19T01:20:12.400405" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-19T01:20:12.400495" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 115818.03/139429.73/127471.85/43334.79 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-19T01:20:12.400166" elapsed="0.000353"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:20:12.400933" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 115818.03/139429.73/127471.85/43334.79 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:20:12.400673" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.403362" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.401103" elapsed="0.002316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.405762" level="INFO">115818.03/139429.73/127471.85/43334.79</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.403567" elapsed="0.002251"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:20:12.408157" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:20:12.405965" elapsed="0.002219"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:20:12.410597" level="INFO">@{result_value_list} = [ 115818.03 | 139429.73 | 127471.85 | 43334.79 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:20:12.408384" elapsed="0.002240"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.411077" level="INFO">Length is 4.</msg>
<msg time="2026-08-19T01:20:12.411164" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-19T01:20:12.410776" elapsed="0.000411"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.416034" level="INFO">min :: 115818.03</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.411600" elapsed="0.004490"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-19T01:20:12.411462" elapsed="0.004663"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.420606" level="INFO">max :: 139429.73</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.416355" elapsed="0.004306"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-19T01:20:12.416215" elapsed="0.004481"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.425263" level="INFO">avg :: 127471.85</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.420907" elapsed="0.004415"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-19T01:20:12.420782" elapsed="0.004574"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.429835" level="INFO">stdev :: 43334.79</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.425570" elapsed="0.004320"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-19T01:20:12.425443" elapsed="0.004481"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-19T01:20:12.411271" elapsed="0.018684"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.434141" level="INFO">${min} = 115818.03</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:20:12.430120" elapsed="0.004048"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.437992" level="INFO">${max} = 139429.73</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:20:12.434338" elapsed="0.003680"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.441850" level="INFO">${average} = 127471.85</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:20:12.438179" elapsed="0.003698"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.445736" level="INFO">${stdev} = 43334.79</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:20:12.442025" elapsed="0.003738"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.446300" level="INFO">${date} = 2026-08-19 01:20:12</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-19T01:20:12.445921" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.446876" level="INFO">CBench Result: 2026-08-19 01:20:12,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,115818.03,139429.73,127471.85,43334.79</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.446471" elapsed="0.000461"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-19T01:20:12.447940" 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-08-19T01:20:12.447546" elapsed="0.000460"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-19T01:20:12.448156" elapsed="0.000478"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-19T01:20:12.447069" elapsed="0.001629"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-08-19T01:10:05.326973" elapsed="607.121783"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.449221" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-19T01:20:12.448906" elapsed="0.000386"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-19T01:20:12.449798" elapsed="0.000270"/>
</kw>
<status status="PASS" start="2026-08-19T01:20:12.449500" elapsed="0.000640"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-19T01:10:05.325641" elapsed="607.124538"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.451383" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.450989" elapsed="0.000450"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.452640" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-19T01:20:12.452314" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-19T01:20:12.453006" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-19T01:20:12.452790" elapsed="0.000274"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-19T01:20:12.456074" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-19T01:20:12.455829" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-08-19T01:20:12.455811" elapsed="0.000342"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-19T01:20:12.456482" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-19T01:20:12.456298" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.457169" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.58 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.53" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:20:12.456756" elapsed="0.000470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-19T01:20:12.457768" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T01:20:12.457378" elapsed="0.000415"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-19T01:20:12.458690" level="INFO">Length is 0.</msg>
<msg time="2026-08-19T01:20:12.458776" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-19T01:20:12.458390" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T01:20:12.458939" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-19T01:20:12.460118" level="INFO">Logging into '10.30.171.53:22' as 'jenkins'.</msg>
<msg time="2026-08-19T01:20:13.030148" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-186-generic x86_64)

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

 System information as of Wed Aug 19 01:20:12 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Wed Aug 19 01:10:05 2026 from 10.30.171.154
[?2004h[jenkins@releng-48317-815-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-19T01:20:12.459765" elapsed="0.570555"/>
</kw>
<msg time="2026-08-19T01:20:13.030398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T01:20:12.459424" elapsed="0.571049"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-19T01:20:12.457991" elapsed="0.572588"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-19T01:20:13.031085" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.58 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-19T01:30:19.163830" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-19T01:30:19.164540" level="INFO">${stdout} = </msg>
<msg time="2026-08-19T01:30:19.164649" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-19T01:20:13.030794" elapsed="606.133912"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T01:30:19.165175" elapsed="0.001232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.167642" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58: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.58. 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:18.264 16  switches: flows:  114106 116475 114198 116414 115185 117474 115453 113493 118531 113122 115639 113307 114185 114796 112946 113273  total = 30.643283 per ms 
01:22:18.365 16  switches: flows:  115498 116103 113455 117782 116006 115316 116237 114984 115783 115180 116670 112626 111981 116537 112617 114475  total = 30.636308 per ms 
01:23:18.466 16  switches: flows:  112213 112576 110725 112038 111213 114527 113027 113991 111909 112806 112704 113414 112812 111851 110382 110631  total = 29.897028 per ms 
01:24:18.567 16  switches: flows:  104752 104945 105823 105037 103020 105373 104880 106847 104130 105210 106099 105545 104228 104240 104265 102910  total = 27.908458 per ms 
01:25:18.668 16  switches: flows:  116126 116034 114138 114506 113777 117603 114212 117069 114910 117069 115517 116664 114939 115671 113523 110310  total = 30.649959 per ms 
01:26:18.770 16  switches: flows:  116912 116368 114299 113607 113775 116748 115323 116670 112584 115778 115367 114966 116323 113910 114573 110489  total = 30.577129 per ms 
01:27:18.871 16  switches: flows:  116986 116759 116652 116196 115089 118429 115627 119253 114869 117743 116594 118525 117504 116052 115401 111858  total = 31.007179 per ms 
01:28:18.972 16  switches: flows:  116569 115620 115829 114262 112953 117586 115468 117810 115522 115649 115041 115991 115319 114207 115796 110501  total = 30.684183 per ms 
01:29:19.073 16  switches: flows:  116241 116720 118766 117031 115428 118263 117928 117634 116263 116660 117970 117873 116376 114579 116316 112158  total = 31.051610 per ms 
01:30:19.174 16  switches: flows:  116087 116666 117725 117585 115623 118471 115805 118173 117116 116672 114584 119061 116346 115968 116229 112424  total = 31.023807 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27908.46/31051.61/30381.74/10170.33 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.166828" elapsed="0.001121"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-19T01:30:19.168572" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-08-19T01:30:19.168214" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-08-19T01:30:19.168157" elapsed="0.000636"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-19T01:30:19.169001" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-08-19T01:30:19.168920" elapsed="0.000171"/>
</branch>
<status status="NOT RUN" start="2026-08-19T01:30:19.168884" elapsed="0.000254"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-19T01:30:19.169206" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-19T01:30:19.173520" elapsed="0.000529"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-19T01:30:19.174311" elapsed="0.000279"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-19T01:30:19.174820" elapsed="0.000158"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-19T01:30:19.169662" elapsed="0.005413"/>
</kw>
<msg time="2026-08-19T01:30:19.175316" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-19T01:20:12.453416" elapsed="606.721946"/>
</kw>
<status status="PASS" start="2026-08-19T01:20:12.453088" elapsed="606.722359"/>
</branch>
<status status="PASS" start="2026-08-19T01:20:12.452771" elapsed="606.722712"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.176280" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.58: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.58. 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:18.264 16  switches: flows:  114106 116475 114198 116414 115185 117474 115453 113493 118531 113122 115639 113307 114185 114796 112946 113273  total = 30.643283 per ms 
01:22:18.365 16  switches: flows:  115498 116103 113455 117782 116006 115316 116237 114984 115783 115180 116670 112626 111981 116537 112617 114475  total = 30.636308 per ms 
01:23:18.466 16  switches: flows:  112213 112576 110725 112038 111213 114527 113027 113991 111909 112806 112704 113414 112812 111851 110382 110631  total = 29.897028 per ms 
01:24:18.567 16  switches: flows:  104752 104945 105823 105037 103020 105373 104880 106847 104130 105210 106099 105545 104228 104240 104265 102910  total = 27.908458 per ms 
01:25:18.668 16  switches: flows:  116126 116034 114138 114506 113777 117603 114212 117069 114910 117069 115517 116664 114939 115671 113523 110310  total = 30.649959 per ms 
01:26:18.770 16  switches: flows:  116912 116368 114299 113607 113775 116748 115323 116670 112584 115778 115367 114966 116323 113910 114573 110489  total = 30.577129 per ms 
01:27:18.871 16  switches: flows:  116986 116759 116652 116196 115089 118429 115627 119253 114869 117743 116594 118525 117504 116052 115401 111858  total = 31.007179 per ms 
01:28:18.972 16  switches: flows:  116569 115620 115829 114262 112953 117586 115468 117810 115522 115649 115041 115991 115319 114207 115796 110501  total = 30.684183 per ms 
01:29:19.073 16  switches: flows:  116241 116720 118766 117031 115428 118263 117928 117634 116263 116660 117970 117873 116376 114579 116316 112158  total = 31.051610 per ms 
01:30:19.174 16  switches: flows:  116087 116666 117725 117585 115623 118471 115805 118173 117116 116672 114584 119061 116346 115968 116229 112424  total = 31.023807 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27908.46/31051.61/30381.74/10170.33 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.175731" elapsed="0.000697"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-19T01:30:19.176682" elapsed="0.000674"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-19T01:30:19.177999" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-19T01:30:19.178138" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 27908.46/31051.61/30381.74/10170.33 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-19T01:30:19.177626" elapsed="0.000551"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:30:19.178866" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 27908.46/31051.61/30381.74/10170.33 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:30:19.178457" elapsed="0.000450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.182200" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.179156" elapsed="0.003127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.184781" level="INFO">27908.46/31051.61/30381.74/10170.33</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.182454" elapsed="0.002399"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:30:19.187288" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:30:19.185023" elapsed="0.002293"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-19T01:30:19.189774" level="INFO">@{result_value_list} = [ 27908.46 | 31051.61 | 30381.74 | 10170.33 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-19T01:30:19.187525" elapsed="0.002276"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.190289" level="INFO">Length is 4.</msg>
<msg time="2026-08-19T01:30:19.190378" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-19T01:30:19.189955" elapsed="0.000447"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.195262" level="INFO">min :: 27908.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-08-19T01:30:19.190815" elapsed="0.004506"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-19T01:30:19.190678" elapsed="0.004678"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.199925" level="INFO">max :: 31051.61</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.195581" elapsed="0.004402"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-19T01:30:19.195445" elapsed="0.004594"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.204704" level="INFO">avg :: 30381.74</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.200279" elapsed="0.004482"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-19T01:30:19.200131" elapsed="0.004665"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.209405" level="INFO">stdev :: 10170.33</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.205013" elapsed="0.004457"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-19T01:30:19.204880" elapsed="0.004633"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-19T01:30:19.190473" elapsed="0.019071"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.213844" level="INFO">${min} = 27908.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-08-19T01:30:19.209705" elapsed="0.004167"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.217859" level="INFO">${max} = 31051.61</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:30:19.214059" elapsed="0.003827"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.221920" level="INFO">${average} = 30381.74</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:30:19.218045" elapsed="0.003902"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.226038" level="INFO">${stdev} = 10170.33</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-19T01:30:19.222108" elapsed="0.003956"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.226604" level="INFO">${date} = 2026-08-19 01:30:19</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-19T01:30:19.226229" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.227189" level="INFO">CBench Result: 2026-08-19 01:30:19,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,27908.46,31051.61,30381.74,10170.33</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-19T01:30:19.226777" elapsed="0.000488"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-19T01:30:19.228424" 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-08-19T01:30:19.227889" elapsed="0.000605"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-19T01:30:19.228644" elapsed="0.000463"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-19T01:30:19.227417" elapsed="0.001756"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-08-19T01:20:12.451750" elapsed="606.777502"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.229723" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-19T01:30:19.229405" elapsed="0.000375"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-19T01:30:19.231019" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-19T01:30:19.230521" elapsed="0.000525"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-19T01:30:19.231292" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-08-19T01:30:19.231123" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-08-19T01:30:19.231103" elapsed="0.000279"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.231525" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.231680" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.231839" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.232059" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.232210" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.232373" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.232516" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-08-19T01:30:19.232730" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-08-19T01:30:19.232596" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-08-19T01:30:19.232580" elapsed="0.000228"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-08-19T01:30:19.230160" elapsed="0.002697"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-19T01:20:12.450485" elapsed="606.782417"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-08-19T00:59:56.361498" elapsed="1822.872026"/>
</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>
