<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-01T01:05:47.193963" 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-10-01T01:05:47.666896" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-10-01T01:05:47.666785" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-10-01T01:05:47.666757" elapsed="0.000230"/>
</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-10-01T01:05:47.667152" elapsed="0.000450"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-01T01:05:47.668034" level="INFO">Logging into '10.30.171.66:8101' as 'karaf'.</msg>
<msg time="2026-10-01T01:05:48.578871" 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-10-01T01:05:47.667796" elapsed="0.911257"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-01T01:05:48.628719" 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-10-01T01:05:48.579349" elapsed="0.049435"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-01T01:05:48.630401" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-01T01:05:48.630519" 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-10-01T01:05:48.628950" elapsed="0.001597"/>
</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-10-01T01:05:48.630701" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:05:48.631044" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:05:48.631817" 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-10-01T01:05:48.631487" elapsed="0.000380"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-01T01:05:48.631915" elapsed="0.000053"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.66
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-01T01:05:47.666484" elapsed="0.965586"/>
</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-10-01T01:05:47.664864" elapsed="0.967264"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-01T01:05:48.632695" 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-10-01T01:05:48.632329" elapsed="0.000419"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-01T01:05:48.633105" 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-10-01T01:05:48.632894" elapsed="0.000262"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-01T01:05:48.633800" 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-10-01T01:05:48.633340" elapsed="0.000486"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-01T01:05:48.634346" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-01T01:05:48.634023" elapsed="0.000363"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-01T01:05:48.634881" 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-10-01T01:05:48.634560" elapsed="0.000346"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-01T01:05:48.635385" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-01T01:05:48.635084" elapsed="0.000340"/>
</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-10-01T01:05:48.635712" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:05:48.635520" elapsed="0.000242"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-01T01:05:48.637929" 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-10-01T01:05:48.637583" elapsed="0.000372"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-01T01:05:48.639071" level="INFO">Length is 0.</msg>
<msg time="2026-10-01T01:05:48.639148" 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-10-01T01:05:48.638471" elapsed="0.000700"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-01T01:05:48.639332" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-01T01:05:48.640438" level="INFO">Logging into '10.30.170.86:22' as 'jenkins'.</msg>
<msg time="2026-10-01T01:05:49.137330" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Oct  1 01:05:04 UTC 2026

  System load:  0.17               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.86
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


[?2004h[jenkins@releng-48317-853-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-10-01T01:05:48.640172" elapsed="0.497338"/>
</kw>
<msg time="2026-10-01T01:05:49.137602" 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-10-01T01:05:48.639813" elapsed="0.497885"/>
</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-10-01T01:05:48.638136" elapsed="0.499679"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.147564" 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-10-01T01:05:49.138037" elapsed="0.011226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:05:49.149448" elapsed="0.000282"/>
</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-10-01T01:05:48.637094" elapsed="0.512693"/>
</kw>
<status status="PASS" start="2026-10-01T01:05:48.635838" elapsed="0.513983"/>
</branch>
<status status="PASS" start="2026-10-01T01:05:48.635494" elapsed="0.514360"/>
</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-10-01T01:05:49.150018" elapsed="0.000484"/>
</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-10-01T01:05:49.152359" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-10-01T01:05:49.152254" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-10-01T01:05:49.152231" elapsed="0.000200"/>
</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-10-01T01:05:49.153885" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-01T01:05:49.153794" elapsed="0.000134"/>
</branch>
<status status="PASS" start="2026-10-01T01:05:49.153776" elapsed="0.000173"/>
</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-10-01T01:05:49.154103" elapsed="0.000380"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.154856" level="INFO">Logging into '10.30.171.66:8101' as 'karaf'.</msg>
<msg time="2026-10-01T01:05:49.368476" 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-10-01T01:05:49.154655" elapsed="0.213943"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.476044" 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-10-01T01:05:49.368819" elapsed="0.107312"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.482020" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-01T01:05:49.482224" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-10-01T01:05:49.476349" elapsed="0.005906"/>
</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-10-01T01:05:49.482395" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:05:49.482750" elapsed="0.000185"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:05:49.483446" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:05:49.483111" elapsed="0.000401"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-01T01:05:49.483563" elapsed="0.000053"/>
</return>
<msg time="2026-10-01T01:05:49.483748" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.66
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-01T01:05:49.153509" elapsed="0.330268"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-01T01:05:49.483933" elapsed="0.000521"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-01T01:05:49.484515" elapsed="0.000030"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-10-01T01:05:49.151982" elapsed="0.332643"/>
</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-10-01T01:05:49.486350" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-10-01T01:05:49.486234" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-10-01T01:05:49.486194" elapsed="0.000225"/>
</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-10-01T01:05:49.486589" elapsed="0.000366"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.487346" level="INFO">Logging into '10.30.171.66:8101' as 'karaf'.</msg>
<msg time="2026-10-01T01:05:49.657080" 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-10-01T01:05:49.487124" elapsed="0.170125"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.684111" 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-10-01T01:05:49.657526" elapsed="0.026641"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.686169" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-01T01:05:49.686284" 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-10-01T01:05:49.684336" elapsed="0.001976"/>
</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-10-01T01:05:49.686445" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:05:49.686766" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:05:49.687434" 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-10-01T01:05:49.687118" elapsed="0.000376"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-01T01:05:49.687542" elapsed="0.000049"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.66
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-01T01:05:49.485933" elapsed="0.201749"/>
</kw>
<status status="PASS" start="2026-10-01T01:05:47.663137" elapsed="2.024602"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:05:49.689529" 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-10-01T01:05:49.688828" elapsed="0.000761"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-01T01:05:49.690835" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-01T01:05:49.690521" elapsed="0.000355"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-01T01:05:49.691179" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:05:49.690953" elapsed="0.000301"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-01T01:05:49.692332" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:05:49.692095" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-10-01T01:05:49.692077" elapsed="0.000334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.692782" 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-10-01T01:05:49.692893" 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-10-01T01:05:49.692599" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:05:49.693438" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.66 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.86" 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-10-01T01:05:49.693088" elapsed="0.000421"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.694062" 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-10-01T01:05:49.693669" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-01T01:05:49.694928" level="INFO">Length is 0.</msg>
<msg time="2026-10-01T01:05:49.695009" 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-10-01T01:05:49.694638" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-01T01:05:49.695166" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-01T01:05:49.696287" level="INFO">Logging into '10.30.170.86:22' as 'jenkins'.</msg>
<msg time="2026-10-01T01:05:50.092272" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Oct  1 01:05:04 UTC 2026

  System load:  0.17               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.86
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Thu Oct  1 01:05:49 2026 from 10.30.171.30
[?2004h[jenkins@releng-48317-853-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-10-01T01:05:49.696002" elapsed="0.396489"/>
</kw>
<msg time="2026-10-01T01:05:50.092574" 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-10-01T01:05:49.695641" elapsed="0.397022"/>
</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-10-01T01:05:49.694284" elapsed="0.398504"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-01T01:05:50.093437" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.66 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-01T01:15:56.244449" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-01T01:15:56.244927" level="INFO">${stdout} = </msg>
<msg time="2026-10-01T01:15:56.245025" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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-10-01T01:05:50.093093" elapsed="606.151987"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:15:56.245520" elapsed="0.000646"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.247364" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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.66. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:55.348 16  switches: flows:  92406 91248 90471 92260 88916 90888 91626 88124 90242 88071 90489 86710 85702 88304 88938 88516  total = 23.881850 per ms 
01:07:55.448 16  switches: flows:  100868 98882 99998 100014 96601 98288 97428 97233 95662 97430 95063 95201 95909 95831 95358 95014  total = 25.869805 per ms 
01:08:55.548 16  switches: flows:  105019 103777 103136 104549 102063 104811 102301 100610 100061 102387 101092 98118 98883 99654 99160 99763  total = 27.044600 per ms 
01:09:55.648 16  switches: flows:  104073 102631 102826 104826 100384 101632 101956 99683 97736 98105 96757 98140 97422 98685 98490 99188  total = 26.664411 per ms 
01:10:55.748 16  switches: flows:  102072 104350 103216 104258 100697 100850 99889 99094 96521 98928 96581 94859 95533 97401 98101 99150  total = 26.480808 per ms 
01:11:55.849 16  switches: flows:  99107 101412 99279 100432 99229 99377 97298 94640 94328 95217 95396 94393 93882 93034 96062 95604  total = 25.768496 per ms 
01:12:55.949 16  switches: flows:  98137 97589 100700 100083 96401 97891 95958 95197 92699 92638 94580 93546 90386 91966 93803 93331  total = 25.372739 per ms 
01:13:56.049 16  switches: flows:  104469 104076 103114 106337 100867 99668 97776 97546 93202 95641 94005 97475 95071 94767 96343 96020  total = 26.229177 per ms 
01:14:56.149 16  switches: flows:  101113 102010 99454 99693 98789 96657 96226 95160 91779 93505 92405 92930 91122 94244 94729 92062  total = 25.488729 per ms 
01:15:56.250 16  switches: flows:  99365 97804 95515 98145 95910 96370 93289 92307 89703 92556 90818 93952 90889 90590 92904 93017  total = 25.010487 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25010.49/27044.60/25992.14/8686.59 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:15:56.246636" elapsed="0.001016"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-01T01:15:56.248090" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-10-01T01:15:56.247843" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-10-01T01:15:56.247790" elapsed="0.000529"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-01T01:15:56.248539" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-01T01:15:56.248463" elapsed="0.000159"/>
</branch>
<status status="NOT RUN" start="2026-10-01T01:15:56.248406" elapsed="0.000259"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-01T01:15:56.248754" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-01T01:15:56.250323" elapsed="0.000669"/>
</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-10-01T01:15:56.251396" elapsed="0.000325"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:15:56.252020" elapsed="0.000230"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-01T01:15:56.249414" elapsed="0.002945"/>
</kw>
<msg time="2026-10-01T01:15:56.252583" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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-10-01T01:05:49.691600" elapsed="606.561038"/>
</kw>
<status status="PASS" start="2026-10-01T01:05:49.691284" elapsed="606.561472"/>
</branch>
<status status="PASS" start="2026-10-01T01:05:49.690931" elapsed="606.561875"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.253831" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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.66. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:55.348 16  switches: flows:  92406 91248 90471 92260 88916 90888 91626 88124 90242 88071 90489 86710 85702 88304 88938 88516  total = 23.881850 per ms 
01:07:55.448 16  switches: flows:  100868 98882 99998 100014 96601 98288 97428 97233 95662 97430 95063 95201 95909 95831 95358 95014  total = 25.869805 per ms 
01:08:55.548 16  switches: flows:  105019 103777 103136 104549 102063 104811 102301 100610 100061 102387 101092 98118 98883 99654 99160 99763  total = 27.044600 per ms 
01:09:55.648 16  switches: flows:  104073 102631 102826 104826 100384 101632 101956 99683 97736 98105 96757 98140 97422 98685 98490 99188  total = 26.664411 per ms 
01:10:55.748 16  switches: flows:  102072 104350 103216 104258 100697 100850 99889 99094 96521 98928 96581 94859 95533 97401 98101 99150  total = 26.480808 per ms 
01:11:55.849 16  switches: flows:  99107 101412 99279 100432 99229 99377 97298 94640 94328 95217 95396 94393 93882 93034 96062 95604  total = 25.768496 per ms 
01:12:55.949 16  switches: flows:  98137 97589 100700 100083 96401 97891 95958 95197 92699 92638 94580 93546 90386 91966 93803 93331  total = 25.372739 per ms 
01:13:56.049 16  switches: flows:  104469 104076 103114 106337 100867 99668 97776 97546 93202 95641 94005 97475 95071 94767 96343 96020  total = 26.229177 per ms 
01:14:56.149 16  switches: flows:  101113 102010 99454 99693 98789 96657 96226 95160 91779 93505 92405 92930 91122 94244 94729 92062  total = 25.488729 per ms 
01:15:56.250 16  switches: flows:  99365 97804 95515 98145 95910 96370 93289 92307 89703 92556 90818 93952 90889 90590 92904 93017  total = 25.010487 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25010.49/27044.60/25992.14/8686.59 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:15:56.253198" elapsed="0.000787"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-01T01:15:56.254357" elapsed="0.000761"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-01T01:15:56.255953" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-01T01:15:56.256138" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25010.49/27044.60/25992.14/8686.59 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-10-01T01:15:56.255514" elapsed="0.000676"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:15:56.257079" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25010.49/27044.60/25992.14/8686.59 | 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-10-01T01:15:56.256570" elapsed="0.000565"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.258333" 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-10-01T01:15:56.257569" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.259576" level="INFO">25010.49/27044.60/25992.14/8686.59</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:15:56.258867" elapsed="0.000821"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:15:56.260702" 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-10-01T01:15:56.260046" elapsed="0.000733"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:15:56.261885" level="INFO">@{result_value_list} = [ 25010.49 | 27044.60 | 25992.14 | 8686.59 ]</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-10-01T01:15:56.261194" elapsed="0.000747"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.262935" level="INFO">Length is 4.</msg>
<msg time="2026-10-01T01:15:56.263114" 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-10-01T01:15:56.262304" elapsed="0.000862"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.265176" level="INFO">min :: 25010.49</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-10-01T01:15:56.264185" elapsed="0.001142"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-01T01:15:56.263801" elapsed="0.001598"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.266907" level="INFO">max :: 27044.60</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-10-01T01:15:56.265966" elapsed="0.001054"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-01T01:15:56.265579" elapsed="0.001509"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.268595" level="INFO">avg :: 25992.14</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-10-01T01:15:56.267657" elapsed="0.001051"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-01T01:15:56.267292" elapsed="0.001505"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.270310" level="INFO">stdev :: 8686.59</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-10-01T01:15:56.269374" elapsed="0.001049"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-01T01:15:56.268978" elapsed="0.001513"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-01T01:15:56.263378" elapsed="0.007179"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.271821" level="INFO">${min} = 25010.49</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:15:56.270918" elapsed="0.000958"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.273083" level="INFO">${max} = 27044.60</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:15:56.272205" elapsed="0.000933"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.274377" level="INFO">${average} = 25992.14</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:15:56.273494" elapsed="0.000939"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.275643" level="INFO">${stdev} = 8686.59</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:15:56.274793" elapsed="0.000904"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.276892" level="INFO">${date} = 2026-10-01 01:15:56</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-01T01:15:56.276130" elapsed="0.000815"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.278103" level="INFO">CBench Result: 2026-10-01 01:15:56,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25010.49,27044.60,25992.14,8686.59</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-10-01T01:15:56.277376" elapsed="0.000870"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-01T01:15:56.280621" 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-10-01T01:15:56.279440" elapsed="0.001351"/>
</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-10-01T01:15:56.281197" elapsed="0.000903"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-01T01:15:56.278520" elapsed="0.003751"/>
</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-10-01T01:05:49.689971" elapsed="606.592424"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.283388" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-01T01:15:56.282711" elapsed="0.000794"/>
</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-10-01T01:15:56.284772" elapsed="0.000582"/>
</kw>
<status status="PASS" start="2026-10-01T01:15:56.284041" elapsed="0.001455"/>
</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-10-01T01:05:49.687879" elapsed="606.597689"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.288105" 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-10-01T01:15:56.287631" elapsed="0.000547"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.289696" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-01T01:15:56.289289" elapsed="0.000479"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-01T01:15:56.290395" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:15:56.289857" elapsed="0.000616"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-01T01:15:56.291946" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:15:56.291634" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-01T01:15:56.291609" elapsed="0.000444"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-01T01:15:56.292579" 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-10-01T01:15:56.292745" 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-10-01T01:15:56.292325" elapsed="0.000457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.293650" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.66 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.86" 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-10-01T01:15:56.293018" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-01T01:15:56.294442" 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-10-01T01:15:56.293963" elapsed="0.000513"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-01T01:15:56.295673" level="INFO">Length is 0.</msg>
<msg time="2026-10-01T01:15:56.295803" 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-10-01T01:15:56.295229" elapsed="0.000606"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-01T01:15:56.296018" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-01T01:15:56.297535" level="INFO">Logging into '10.30.170.86:22' as 'jenkins'.</msg>
<msg time="2026-10-01T01:15:57.010562" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Oct  1 01:15:56 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Thu Oct  1 01:05:49 2026 from 10.30.171.30
[?2004h[jenkins@releng-48317-853-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-10-01T01:15:56.297152" elapsed="0.713655"/>
</kw>
<msg time="2026-10-01T01:15:57.010895" 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-10-01T01:15:56.296643" elapsed="0.714347"/>
</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-10-01T01:15:56.294724" elapsed="0.716378"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-01T01:15:57.011680" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.66 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-01T01:26:03.060632" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-01T01:26:03.061269" level="INFO">${stdout} = </msg>
<msg time="2026-10-01T01:26:03.061373" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.66: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-10-01T01:15:57.011384" elapsed="606.050043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:26:03.061890" elapsed="0.000680"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.063766" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.66: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.66. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:17:02.148 16  switches: flows:  606659 605285 603824 619080 609746 608778 609826 606927 593996 587330 596036 602156 596985 597777 602134 606263  total = 160.880033 per ms 
01:18:02.249 16  switches: flows:  639639 626564 639904 616966 633079 629527 634367 627194 641339 631190 629355 626309 631704 626321 632492 633187  total = 168.036822 per ms 
01:19:02.351 16  switches: flows:  643143 642631 644403 628953 651974 640490 651131 642261 650674 644755 643371 634020 642426 639774 645793 648300  total = 171.279819 per ms 
01:20:02.453 16  switches: flows:  643452 650834 646543 638845 646473 643770 646699 637468 644003 639800 641818 640705 653243 639773 644843 646368  total = 171.453679 per ms 
01:21:02.554 16  switches: flows:  637605 634641 634722 626224 641057 628498 638440 637090 639811 635150 635792 631930 633772 629161 637712 641961  total = 169.108104 per ms 
01:22:02.656 16  switches: flows:  640004 652345 642369 649362 651067 661136 653583 655714 651435 651966 652826 646803 652008 650053 657001 660337  total = 173.507977 per ms 
01:23:02.757 16  switches: flows:  664951 657717 655444 651176 653246 654713 654563 655577 664650 638528 663537 657918 652440 650011 657393 653104  total = 174.455651 per ms 
01:24:02.859 16  switches: flows:  655079 649836 653572 650709 647190 647174 645818 642291 653367 647071 645423 646353 652137 648274 654819 645222  total = 172.781686 per ms 
01:25:02.962 16  switches: flows:  634739 638129 643151 645935 647234 651977 639991 643844 647676 649708 630746 650532 648838 644567 648281 641451  total = 171.486570 per ms 
01:26:03.064 16  switches: flows:  613224 620506 621268 624835 618523 623310 617613 616281 624519 608492 626282 625496 618600 624760 616904 622846  total = 165.111595 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 165111.60/174455.65/170802.43/57001.05 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:26:03.063049" elapsed="0.001010"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-01T01:26:03.064549" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-10-01T01:26:03.064248" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-10-01T01:26:03.064174" elapsed="0.000570"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-01T01:26:03.064958" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-10-01T01:26:03.064859" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-10-01T01:26:03.064828" elapsed="0.000255"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-01T01:26:03.065145" elapsed="0.000027"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-01T01:26:03.066707" elapsed="0.000696"/>
</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-10-01T01:26:03.067776" elapsed="0.000343"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:26:03.068425" elapsed="0.000227"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-01T01:26:03.065796" elapsed="0.002962"/>
</kw>
<msg time="2026-10-01T01:26:03.069006" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.66: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-10-01T01:15:56.290923" elapsed="606.778140"/>
</kw>
<status status="PASS" start="2026-10-01T01:15:56.290506" elapsed="606.778653"/>
</branch>
<status status="PASS" start="2026-10-01T01:15:56.289832" elapsed="606.779374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.070258" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.66: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.66. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:17:02.148 16  switches: flows:  606659 605285 603824 619080 609746 608778 609826 606927 593996 587330 596036 602156 596985 597777 602134 606263  total = 160.880033 per ms 
01:18:02.249 16  switches: flows:  639639 626564 639904 616966 633079 629527 634367 627194 641339 631190 629355 626309 631704 626321 632492 633187  total = 168.036822 per ms 
01:19:02.351 16  switches: flows:  643143 642631 644403 628953 651974 640490 651131 642261 650674 644755 643371 634020 642426 639774 645793 648300  total = 171.279819 per ms 
01:20:02.453 16  switches: flows:  643452 650834 646543 638845 646473 643770 646699 637468 644003 639800 641818 640705 653243 639773 644843 646368  total = 171.453679 per ms 
01:21:02.554 16  switches: flows:  637605 634641 634722 626224 641057 628498 638440 637090 639811 635150 635792 631930 633772 629161 637712 641961  total = 169.108104 per ms 
01:22:02.656 16  switches: flows:  640004 652345 642369 649362 651067 661136 653583 655714 651435 651966 652826 646803 652008 650053 657001 660337  total = 173.507977 per ms 
01:23:02.757 16  switches: flows:  664951 657717 655444 651176 653246 654713 654563 655577 664650 638528 663537 657918 652440 650011 657393 653104  total = 174.455651 per ms 
01:24:02.859 16  switches: flows:  655079 649836 653572 650709 647190 647174 645818 642291 653367 647071 645423 646353 652137 648274 654819 645222  total = 172.781686 per ms 
01:25:02.962 16  switches: flows:  634739 638129 643151 645935 647234 651977 639991 643844 647676 649708 630746 650532 648838 644567 648281 641451  total = 171.486570 per ms 
01:26:03.064 16  switches: flows:  613224 620506 621268 624835 618523 623310 617613 616281 624519 608492 626282 625496 618600 624760 616904 622846  total = 165.111595 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 165111.60/174455.65/170802.43/57001.05 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:26:03.069626" elapsed="0.000789"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-01T01:26:03.070754" elapsed="0.000806"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-01T01:26:03.072383" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-01T01:26:03.072566" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 165111.60/174455.65/170802.43/57001.05 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given `string` that contain the `pattern`.</doc>
<status status="PASS" start="2026-10-01T01:26:03.071951" elapsed="0.000667"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:26:03.073488" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 165111.60/174455.65/170802.43/57001.05 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-01T01:26:03.072988" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.074692" 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-10-01T01:26:03.073965" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.075949" level="INFO">165111.60/174455.65/170802.43/57001.05</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:26:03.075247" elapsed="0.000818"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:26:03.077068" 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-10-01T01:26:03.076429" elapsed="0.000696"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:26:03.078245" level="INFO">@{result_value_list} = [ 165111.60 | 174455.65 | 170802.43 | 57001.05 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-01T01:26:03.077571" elapsed="0.000737"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.079299" level="INFO">Length is 4.</msg>
<msg time="2026-10-01T01:26:03.079475" 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-10-01T01:26:03.078643" elapsed="0.000882"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.081344" level="INFO">min :: 165111.60</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-10-01T01:26:03.080390" elapsed="0.001073"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-01T01:26:03.079991" elapsed="0.001539"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.083015" level="INFO">max :: 174455.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-10-01T01:26:03.082084" elapsed="0.001040"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-01T01:26:03.081703" elapsed="0.001489"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.084706" level="INFO">avg :: 170802.43</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:26:03.083762" elapsed="0.001055"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-01T01:26:03.083396" elapsed="0.001487"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.086396" level="INFO">stdev :: 57001.05</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:26:03.085472" elapsed="0.001035"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-01T01:26:03.085078" elapsed="0.001497"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-01T01:26:03.079645" elapsed="0.006990"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.087852" level="INFO">${min} = 165111.60</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:26:03.086994" elapsed="0.000931"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.089145" level="INFO">${max} = 174455.65</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:26:03.088288" elapsed="0.000910"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.090431" level="INFO">${average} = 170802.43</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:26:03.089558" elapsed="0.000927"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.091689" level="INFO">${stdev} = 57001.05</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:26:03.090809" elapsed="0.000933"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.092937" level="INFO">${date} = 2026-10-01 01:26:03</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-01T01:26:03.092165" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.094155" level="INFO">CBench Result: 2026-10-01 01:26:03,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,165111.60,174455.65,170802.43,57001.05</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:26:03.093418" elapsed="0.000880"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-01T01:26:03.096239" 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-10-01T01:26:03.095510" elapsed="0.000871"/>
</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-10-01T01:26:03.096749" elapsed="0.001242"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-01T01:26:03.094557" elapsed="0.003567"/>
</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-10-01T01:15:56.288600" elapsed="606.809686"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.099283" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-01T01:26:03.098606" elapsed="0.000795"/>
</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-10-01T01:26:03.100521" elapsed="0.000567"/>
</kw>
<status status="PASS" start="2026-10-01T01:26:03.099812" elapsed="0.001449"/>
</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-10-01T01:15:56.286368" elapsed="606.814970"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.104267" 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-10-01T01:26:03.103514" elapsed="0.000876"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.105933" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-01T01:26:03.105508" elapsed="0.000480"/>
</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 [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-01T01:26:03.106446" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:26:03.106122" elapsed="0.000414"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-01T01:26:03.108263" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:26:03.107945" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-10-01T01:26:03.107921" elapsed="0.000444"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-01T01:26:03.108829" 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-10-01T01:26:03.108993" 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-10-01T01:26:03.108607" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.109748" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.66 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.86" 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-10-01T01:26:03.109283" elapsed="0.000539"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-01T01:26:03.110538" 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-10-01T01:26:03.110060" elapsed="0.000513"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-01T01:26:03.111712" level="INFO">Length is 0.</msg>
<msg time="2026-10-01T01:26:03.111821" 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-10-01T01:26:03.111324" elapsed="0.000528"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-01T01:26:03.112050" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-01T01:26:03.113650" level="INFO">Logging into '10.30.170.86:22' as 'jenkins'.</msg>
<msg time="2026-10-01T01:26:03.731116" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Oct  1 01:26:03 UTC 2026

  System load:  0.33               Processes:             104
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.86
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Thu Oct  1 01:15:56 2026 from 10.30.171.30
[?2004h[jenkins@releng-48317-853-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-10-01T01:26:03.113272" elapsed="0.618105"/>
</kw>
<msg time="2026-10-01T01:26:03.731487" 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-10-01T01:26:03.112697" elapsed="0.618894"/>
</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-10-01T01:26:03.110820" elapsed="0.620908"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-01T01:26:03.732462" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.66 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-01T01:36:09.790501" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-01T01:36:09.792466" level="INFO">${stdout} = </msg>
<msg time="2026-10-01T01:36:09.792569" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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-10-01T01:26:03.732088" elapsed="606.060533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:36:09.793103" elapsed="0.000760"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.795069" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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.66. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:27:08.902 16  switches: flows:  105788 95372 95134 93527 93858 94217 94599 95861 92103 103661 94632 93269 93828 93622 92500 93728  total = 25.428317 per ms 
01:28:09.002 16  switches: flows:  98621 100722 95708 96011 97581 98321 98679 97414 93849 98052 96918 95379 93529 95600 94092 96816  total = 25.745233 per ms 
01:29:09.102 16  switches: flows:  101590 96701 96282 99723 99113 98005 98741 97226 97288 97346 99381 98616 94540 96997 95140 97616  total = 26.028284 per ms 
01:30:09.202 16  switches: flows:  99969 96265 94615 96176 97251 97842 98505 96385 94513 96752 98575 93614 94071 94602 93455 97073  total = 25.618296 per ms 
01:31:09.303 16  switches: flows:  104808 101603 98329 100924 101122 101476 103571 101704 99717 101381 101826 101874 97570 97423 99287 101497  total = 26.857026 per ms 
01:32:09.403 16  switches: flows:  108141 106720 102983 104805 106986 108295 107905 105633 102841 105521 106269 104140 104099 102796 102622 105446  total = 28.039887 per ms 
01:33:09.503 16  switches: flows:  108013 106966 103696 103201 106898 105933 106043 105295 103137 105995 104819 101364 101529 102024 102814 106310  total = 27.854113 per ms 
01:34:09.603 16  switches: flows:  107594 105101 100891 102444 103540 105382 103924 101714 100325 102733 103508 101241 99841 100587 101941 104196  total = 27.370360 per ms 
01:35:09.704 16  switches: flows:  105602 103567 101656 102950 102665 105041 104270 103730 100947 106058 104190 100836 99899 101228 99963 104175  total = 27.400530 per ms 
01:36:09.805 16  switches: flows:  107896 104111 102024 104603 102094 105193 105920 102320 102197 104286 103525 103180 100685 100872 102801 104090  total = 27.550612 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25618.30/28039.89/26940.48/9022.30 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:36:09.794382" elapsed="0.001010"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-01T01:36:09.795825" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-10-01T01:36:09.795579" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-10-01T01:36:09.795531" elapsed="0.000484"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-01T01:36:09.796249" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-10-01T01:36:09.796127" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-10-01T01:36:09.796096" elapsed="0.000281"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-01T01:36:09.796439" elapsed="0.000027"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-01T01:36:09.797959" elapsed="0.000692"/>
</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-10-01T01:36:09.799018" elapsed="0.000365"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-01T01:36:09.799694" elapsed="0.000199"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-01T01:36:09.797059" elapsed="0.002967"/>
</kw>
<msg time="2026-10-01T01:36:09.800298" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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-10-01T01:26:03.107233" elapsed="606.693121"/>
</kw>
<status status="PASS" start="2026-10-01T01:26:03.106578" elapsed="606.693889"/>
</branch>
<status status="PASS" start="2026-10-01T01:26:03.106096" elapsed="606.694419"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.801553" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.66: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.66. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:27:08.902 16  switches: flows:  105788 95372 95134 93527 93858 94217 94599 95861 92103 103661 94632 93269 93828 93622 92500 93728  total = 25.428317 per ms 
01:28:09.002 16  switches: flows:  98621 100722 95708 96011 97581 98321 98679 97414 93849 98052 96918 95379 93529 95600 94092 96816  total = 25.745233 per ms 
01:29:09.102 16  switches: flows:  101590 96701 96282 99723 99113 98005 98741 97226 97288 97346 99381 98616 94540 96997 95140 97616  total = 26.028284 per ms 
01:30:09.202 16  switches: flows:  99969 96265 94615 96176 97251 97842 98505 96385 94513 96752 98575 93614 94071 94602 93455 97073  total = 25.618296 per ms 
01:31:09.303 16  switches: flows:  104808 101603 98329 100924 101122 101476 103571 101704 99717 101381 101826 101874 97570 97423 99287 101497  total = 26.857026 per ms 
01:32:09.403 16  switches: flows:  108141 106720 102983 104805 106986 108295 107905 105633 102841 105521 106269 104140 104099 102796 102622 105446  total = 28.039887 per ms 
01:33:09.503 16  switches: flows:  108013 106966 103696 103201 106898 105933 106043 105295 103137 105995 104819 101364 101529 102024 102814 106310  total = 27.854113 per ms 
01:34:09.603 16  switches: flows:  107594 105101 100891 102444 103540 105382 103924 101714 100325 102733 103508 101241 99841 100587 101941 104196  total = 27.370360 per ms 
01:35:09.704 16  switches: flows:  105602 103567 101656 102950 102665 105041 104270 103730 100947 106058 104190 100836 99899 101228 99963 104175  total = 27.400530 per ms 
01:36:09.805 16  switches: flows:  107896 104111 102024 104603 102094 105193 105920 102320 102197 104286 103525 103180 100685 100872 102801 104090  total = 27.550612 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25618.30/28039.89/26940.48/9022.30 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:36:09.800921" elapsed="0.000782"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-01T01:36:09.802041" elapsed="0.000801"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-01T01:36:09.803685" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-01T01:36:09.803862" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25618.30/28039.89/26940.48/9022.30 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-10-01T01:36:09.803254" elapsed="0.000658"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:36:09.804767" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25618.30/28039.89/26940.48/9022.30 | 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-10-01T01:36:09.804299" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.805946" 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-10-01T01:36:09.805267" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.807194" level="INFO">25618.30/28039.89/26940.48/9022.30</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:36:09.806497" elapsed="0.000843"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:36:09.808330" 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-10-01T01:36:09.807673" elapsed="0.000714"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-01T01:36:09.809457" level="INFO">@{result_value_list} = [ 25618.30 | 28039.89 | 26940.48 | 9022.30 ]</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-10-01T01:36:09.808793" elapsed="0.000720"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.810486" level="INFO">Length is 4.</msg>
<msg time="2026-10-01T01:36:09.810658" 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-10-01T01:36:09.809842" elapsed="0.000864"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.812499" level="INFO">min :: 25618.30</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-10-01T01:36:09.811561" elapsed="0.001049"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-01T01:36:09.811145" elapsed="0.001532"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.814272" level="INFO">max :: 28039.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-01T01:36:09.813249" elapsed="0.001142"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-01T01:36:09.812844" elapsed="0.001615"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.815900" level="INFO">avg :: 26940.48</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-10-01T01:36:09.814981" elapsed="0.001039"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-01T01:36:09.814623" elapsed="0.001463"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.817602" level="INFO">stdev :: 9022.30</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-10-01T01:36:09.816661" elapsed="0.001051"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-01T01:36:09.816304" elapsed="0.001474"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-01T01:36:09.810823" elapsed="0.007013"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.819038" level="INFO">${min} = 25618.30</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:36:09.818165" elapsed="0.000926"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.820430" level="INFO">${max} = 28039.89</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:36:09.819466" elapsed="0.001018"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.821702" level="INFO">${average} = 26940.48</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:36:09.820811" elapsed="0.000945"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.822940" level="INFO">${stdev} = 9022.30</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-01T01:36:09.822078" elapsed="0.000914"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.824142" level="INFO">${date} = 2026-10-01 01:36:09</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-01T01:36:09.823449" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.825404" level="INFO">CBench Result: 2026-10-01 01:36:09,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25618.30,28039.89,26940.48,9022.30</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-10-01T01:36:09.824654" elapsed="0.000860"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-01T01:36:09.828342" 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-10-01T01:36:09.826685" elapsed="0.001804"/>
</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-10-01T01:36:09.828859" elapsed="0.001264"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-01T01:36:09.825768" elapsed="0.004471"/>
</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-10-01T01:26:03.104834" elapsed="606.725494"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.830922" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-01T01:36:09.830532" elapsed="0.000463"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-01T01:36:09.832589" 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-10-01T01:36:09.831971" elapsed="0.000654"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-10-01T01:36:09.832877" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-10-01T01:36:09.832719" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-10-01T01:36:09.832694" elapsed="0.000291"/>
</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-10-01T01:36:09.833196" elapsed="0.000045"/>
</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-10-01T01:36:09.833423" elapsed="0.000026"/>
</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-10-01T01:36:09.833652" elapsed="0.000026"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-01T01:36:09.833915" elapsed="0.000027"/>
</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-10-01T01:36:09.834143" elapsed="0.000038"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="NOT RUN" start="2026-10-01T01:36:09.834396" elapsed="0.000027"/>
</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-10-01T01:36:09.834647" elapsed="0.000026"/>
</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 The given `tags` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-10-01T01:36:09.834935" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-01T01:36:09.834751" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-10-01T01:36:09.834729" elapsed="0.000299"/>
</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-10-01T01:36:09.831506" elapsed="0.003586"/>
</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-10-01T01:26:03.102269" elapsed="606.732880"/>
</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-10-01T01:05:47.195511" elapsed="1822.640343"/>
</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>
