<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-05-24T01:45:16.302113" 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-05-24T01:45:16.913946" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-05-24T01:45:16.913787" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-05-24T01:45:16.913755" elapsed="0.000301"/>
</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-05-24T01:45:16.914222" elapsed="0.000536"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-24T01:45:16.915258" level="INFO">Logging into '10.30.171.114:8101' as 'karaf'.</msg>
<msg time="2026-05-24T01:45:17.577741" 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-05-24T01:45:16.914939" elapsed="0.662990"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-24T01:45:17.626688" 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-05-24T01:45:17.578250" elapsed="0.048577"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-24T01:45:17.629415" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-24T01:45:17.629570" 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-05-24T01:45:17.627184" elapsed="0.002428"/>
</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-05-24T01:45:17.629835" elapsed="0.000363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T01:45:17.630415" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:45:17.631482" 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-05-24T01:45:17.630919" elapsed="0.000637"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-24T01:45:17.631610" elapsed="0.000058"/>
</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.114
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-24T01:45:16.913352" elapsed="0.718443"/>
</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-05-24T01:45:16.909702" elapsed="0.722158"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-24T01:45:17.632457" 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-05-24T01:45:17.632048" elapsed="0.000468"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-24T01:45:17.632919" 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-05-24T01:45:17.632669" elapsed="0.000308"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-24T01:45:17.633571" 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-05-24T01:45:17.633131" elapsed="0.000469"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-24T01:45:17.634111" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-24T01:45:17.633770" elapsed="0.000405"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-24T01:45:17.634715" 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-05-24T01:45:17.634333" elapsed="0.000409"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-24T01:45:17.635280" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-24T01:45:17.634902" elapsed="0.000422"/>
</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-05-24T01:45:17.635632" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-24T01:45:17.635416" elapsed="0.000272"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-24T01:45:17.640075" 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-05-24T01:45:17.639664" elapsed="0.000438"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-24T01:45:17.641133" level="INFO">Length is 0.</msg>
<msg time="2026-05-24T01:45:17.641249" 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-05-24T01:45:17.640692" elapsed="0.000581"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-24T01:45:17.641429" elapsed="0.000615"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-24T01:45:17.643176" level="INFO">Logging into '10.30.170.68:22' as 'jenkins'.</msg>
<msg time="2026-05-24T01:45:18.368737" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun May 24 01:45:17 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-48317-728-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-05-24T01:45:17.642617" elapsed="0.726302"/>
</kw>
<msg time="2026-05-24T01:45:18.369022" 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-05-24T01:45:17.642248" elapsed="0.726875"/>
</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-05-24T01:45:17.640331" elapsed="0.728949"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.376733" 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-05-24T01:45:18.369513" elapsed="0.009831"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T01:45:18.379728" elapsed="0.000699"/>
</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-05-24T01:45:17.639111" elapsed="0.741455"/>
</kw>
<status status="PASS" start="2026-05-24T01:45:17.635759" elapsed="0.744888"/>
</branch>
<status status="PASS" start="2026-05-24T01:45:17.635389" elapsed="0.745324"/>
</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-05-24T01:45:18.381044" elapsed="0.001087"/>
</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-05-24T01:45:18.390255" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-05-24T01:45:18.390112" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-05-24T01:45:18.390086" elapsed="0.000247"/>
</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-05-24T01:45:18.393909" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-05-24T01:45:18.393793" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-05-24T01:45:18.393773" elapsed="0.000206"/>
</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-05-24T01:45:18.394111" elapsed="0.000470"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.394993" level="INFO">Logging into '10.30.171.114:8101' as 'karaf'.</msg>
<msg time="2026-05-24T01:45:18.623139" 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-05-24T01:45:18.394730" elapsed="0.228566"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.717782" 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-05-24T01:45:18.623541" elapsed="0.094309"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.729882" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-24T01:45:18.730069" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-05-24T01:45:18.718002" elapsed="0.012099"/>
</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-05-24T01:45:18.730272" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T01:45:18.730656" elapsed="0.000207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:45:18.731335" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T01:45:18.731001" elapsed="0.000389"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-24T01:45:18.731440" elapsed="0.000052"/>
</return>
<msg time="2026-05-24T01:45:18.731637" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.114
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-24T01:45:18.393416" elapsed="0.338253"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-24T01:45:18.731813" elapsed="0.000553"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-24T01:45:18.732418" elapsed="0.000032"/>
</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-05-24T01:45:18.389795" elapsed="0.342760"/>
</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-05-24T01:45:18.736246" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-05-24T01:45:18.736094" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-05-24T01:45:18.736071" elapsed="0.000246"/>
</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-05-24T01:45:18.736444" elapsed="0.000442"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.737309" level="INFO">Logging into '10.30.171.114:8101' as 'karaf'.</msg>
<msg time="2026-05-24T01:45:18.904947" 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-05-24T01:45:18.737030" elapsed="0.168037"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.929380" 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-05-24T01:45:18.905316" elapsed="0.024136"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.931283" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-24T01:45:18.931388" 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-05-24T01:45:18.929637" elapsed="0.001781"/>
</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-05-24T01:45:18.931590" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T01:45:18.931912" elapsed="0.000180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:45:18.932559" 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-05-24T01:45:18.932251" elapsed="0.000359"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-24T01:45:18.932663" elapsed="0.000050"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.114
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-24T01:45:18.735767" elapsed="0.197063"/>
</kw>
<status status="PASS" start="2026-05-24T01:45:16.907815" elapsed="2.025078"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:45:18.935767" 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-05-24T01:45:18.933902" elapsed="0.001962"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-24T01:45:18.937799" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-24T01:45:18.937356" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-24T01:45:18.938280" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-05-24T01:45:18.937954" elapsed="0.000393"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-24T01:45:18.941364" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-24T01:45:18.941082" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-05-24T01:45:18.941061" elapsed="0.000385"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.941834" 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-05-24T01:45:18.941974" 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-05-24T01:45:18.941593" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:45:18.942592" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.114 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.68" 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-05-24T01:45:18.942160" elapsed="0.000494"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.943288" 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-05-24T01:45:18.942796" elapsed="0.000519"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-24T01:45:18.944327" level="INFO">Length is 0.</msg>
<msg time="2026-05-24T01:45:18.944420" 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-05-24T01:45:18.943951" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-24T01:45:18.944613" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-24T01:45:18.946113" level="INFO">Logging into '10.30.170.68:22' as 'jenkins'.</msg>
<msg time="2026-05-24T01:45:19.290053" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun May 24 01:45:17 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun May 24 01:45:18 2026 from 10.30.170.247
[?2004h[jenkins@releng-48317-728-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-05-24T01:45:18.945671" elapsed="0.344528"/>
</kw>
<msg time="2026-05-24T01:45:19.290266" 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-05-24T01:45:18.945224" elapsed="0.345111"/>
</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-05-24T01:45:18.943547" elapsed="0.346887"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-24T01:45:19.291051" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.114 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-24T01:55:25.398448" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-24T01:55:25.399006" level="INFO">${stdout} = </msg>
<msg time="2026-05-24T01:55:25.399135" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-05-24T01:45:19.290606" elapsed="606.108645"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T01:55:25.399728" elapsed="0.000822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.401688" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114: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.114. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:46:24.488 16  switches: flows:  133038 130424 133076 130672 129838 129748 130540 132710 127068 128341 128151 126859 125012 127240 129861 127705  total = 34.504717 per ms 
01:47:24.589 16  switches: flows:  142697 140288 142938 143453 141258 138815 139665 139009 137592 136745 136522 136567 135315 137578 138080 133367  total = 36.936443 per ms 
01:48:24.689 16  switches: flows:  142304 139736 142704 142226 141931 138778 139352 139705 135520 136461 138043 135976 135419 136582 137688 133955  total = 36.878088 per ms 
01:49:24.789 16  switches: flows:  144395 142098 140768 141262 142721 137872 140120 141697 137709 137657 137752 134835 136404 137899 137820 134513  total = 37.030222 per ms 
01:50:24.890 16  switches: flows:  143713 141146 141403 144716 144039 139748 140989 142245 137082 139738 140700 136358 137993 138002 139185 135470  total = 37.313005 per ms 
01:51:24.991 16  switches: flows:  148993 144807 147373 149223 146331 143630 144854 144762 142138 144465 139832 139807 142209 140682 140807 138923  total = 38.249757 per ms 
01:52:25.091 16  switches: flows:  150999 148548 148640 148225 149257 147069 147360 147652 141434 147055 143086 142217 141249 144991 145343 141138  total = 38.839510 per ms 
01:53:25.191 16  switches: flows:  151616 151071 146898 147926 149474 145304 146540 147598 141352 142546 143217 142944 139896 143191 141443 140897  total = 38.634049 per ms 
01:54:25.291 16  switches: flows:  150573 147855 147010 148281 146536 147564 147239 148321 142856 139217 145414 141074 138274 144744 139631 141373  total = 38.535035 per ms 
01:55:25.392 16  switches: flows:  147127 147820 142547 143464 145086 140629 144331 144579 138387 138586 141172 137225 137286 139193 136979 136336  total = 37.616261 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 36878.09/38839.51/37781.37/12615.72 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T01:55:25.400910" elapsed="0.001073"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-24T01:55:25.402525" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-05-24T01:55:25.402216" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-05-24T01:55:25.402127" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-24T01:55:25.402968" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-05-24T01:55:25.402884" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-05-24T01:55:25.402848" elapsed="0.000258"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-24T01:55:25.403213" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-24T01:55:25.408816" elapsed="0.000894"/>
</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-05-24T01:55:25.410093" elapsed="0.000496"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T01:55:25.410959" elapsed="0.000324"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-24T01:55:25.403897" elapsed="0.007557"/>
</kw>
<msg time="2026-05-24T01:55:25.411770" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-05-24T01:45:18.938702" elapsed="606.473129"/>
</kw>
<status status="PASS" start="2026-05-24T01:45:18.938377" elapsed="606.473593"/>
</branch>
<status status="PASS" start="2026-05-24T01:45:18.937923" elapsed="606.474133"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.413196" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114: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.114. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:46:24.488 16  switches: flows:  133038 130424 133076 130672 129838 129748 130540 132710 127068 128341 128151 126859 125012 127240 129861 127705  total = 34.504717 per ms 
01:47:24.589 16  switches: flows:  142697 140288 142938 143453 141258 138815 139665 139009 137592 136745 136522 136567 135315 137578 138080 133367  total = 36.936443 per ms 
01:48:24.689 16  switches: flows:  142304 139736 142704 142226 141931 138778 139352 139705 135520 136461 138043 135976 135419 136582 137688 133955  total = 36.878088 per ms 
01:49:24.789 16  switches: flows:  144395 142098 140768 141262 142721 137872 140120 141697 137709 137657 137752 134835 136404 137899 137820 134513  total = 37.030222 per ms 
01:50:24.890 16  switches: flows:  143713 141146 141403 144716 144039 139748 140989 142245 137082 139738 140700 136358 137993 138002 139185 135470  total = 37.313005 per ms 
01:51:24.991 16  switches: flows:  148993 144807 147373 149223 146331 143630 144854 144762 142138 144465 139832 139807 142209 140682 140807 138923  total = 38.249757 per ms 
01:52:25.091 16  switches: flows:  150999 148548 148640 148225 149257 147069 147360 147652 141434 147055 143086 142217 141249 144991 145343 141138  total = 38.839510 per ms 
01:53:25.191 16  switches: flows:  151616 151071 146898 147926 149474 145304 146540 147598 141352 142546 143217 142944 139896 143191 141443 140897  total = 38.634049 per ms 
01:54:25.291 16  switches: flows:  150573 147855 147010 148281 146536 147564 147239 148321 142856 139217 145414 141074 138274 144744 139631 141373  total = 38.535035 per ms 
01:55:25.392 16  switches: flows:  147127 147820 142547 143464 145086 140629 144331 144579 138387 138586 141172 137225 137286 139193 136979 136336  total = 37.616261 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 36878.09/38839.51/37781.37/12615.72 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T01:55:25.412489" elapsed="0.000784"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-24T01:55:25.413424" elapsed="0.000379"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-24T01:55:25.414238" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-24T01:55:25.414332" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 36878.09/38839.51/37781.37/12615.72 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-05-24T01:55:25.413962" elapsed="0.000394"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T01:55:25.414772" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 36878.09/38839.51/37781.37/12615.72 | 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-05-24T01:55:25.414512" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.417188" 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-05-24T01:55:25.414943" elapsed="0.002302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.419635" level="INFO">36878.09/38839.51/37781.37/12615.72</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T01:55:25.417392" elapsed="0.002319"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T01:55:25.422091" 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-05-24T01:55:25.419873" elapsed="0.002252"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T01:55:25.424574" level="INFO">@{result_value_list} = [ 36878.09 | 38839.51 | 37781.37 | 12615.72 ]</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-05-24T01:55:25.422340" elapsed="0.002262"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.425071" level="INFO">Length is 4.</msg>
<msg time="2026-05-24T01:55:25.425182" 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-05-24T01:55:25.424758" elapsed="0.000452"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.429885" level="INFO">min :: 36878.09</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-05-24T01:55:25.425615" elapsed="0.004326"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-24T01:55:25.425482" elapsed="0.004494"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.434511" level="INFO">max :: 38839.51</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-05-24T01:55:25.430214" elapsed="0.004354"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-24T01:55:25.430070" elapsed="0.004533"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.439289" level="INFO">avg :: 37781.37</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T01:55:25.434821" elapsed="0.004527"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-24T01:55:25.434693" elapsed="0.004697"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.443952" level="INFO">stdev :: 12615.72</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-05-24T01:55:25.439616" elapsed="0.004393"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-24T01:55:25.439487" elapsed="0.004557"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-24T01:55:25.425282" elapsed="0.018794"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.448224" level="INFO">${min} = 36878.09</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T01:55:25.444281" elapsed="0.003974"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.452342" level="INFO">${max} = 38839.51</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T01:55:25.448587" elapsed="0.003782"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.456610" level="INFO">${average} = 37781.37</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T01:55:25.452523" elapsed="0.004114"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.460637" level="INFO">${stdev} = 12615.72</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T01:55:25.456798" elapsed="0.003866"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.461228" level="INFO">${date} = 2026-05-24 01:55:25</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-24T01:55:25.460840" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.461818" level="INFO">CBench Result: 2026-05-24 01:55:25,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,36878.09,38839.51,37781.37,12615.72</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-05-24T01:55:25.461400" elapsed="0.000475"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-24T01:55:25.462979" 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-05-24T01:55:25.462532" elapsed="0.000515"/>
</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-05-24T01:55:25.463215" elapsed="0.000468"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-24T01:55:25.462032" elapsed="0.001718"/>
</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-05-24T01:45:18.936475" elapsed="606.527346"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.464344" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-24T01:55:25.463973" elapsed="0.000428"/>
</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-05-24T01:55:25.464930" elapsed="0.000288"/>
</kw>
<status status="PASS" start="2026-05-24T01:55:25.464620" elapsed="0.000671"/>
</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-05-24T01:45:18.933044" elapsed="606.532285"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.466923" 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-05-24T01:55:25.466505" elapsed="0.000477"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.468305" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-24T01:55:25.467927" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-24T01:55:25.468693" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-24T01:55:25.468468" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-24T01:55:25.471934" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-05-24T01:55:25.471669" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-05-24T01:55:25.471649" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-24T01:55:25.472440" 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-05-24T01:55:25.472563" 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-05-24T01:55:25.472213" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.473171" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.114 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.68" 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-05-24T01:55:25.472725" elapsed="0.000506"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-24T01:55:25.473766" 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-05-24T01:55:25.473370" elapsed="0.000422"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-24T01:55:25.474721" level="INFO">Length is 0.</msg>
<msg time="2026-05-24T01:55:25.474810" 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-05-24T01:55:25.474401" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-24T01:55:25.474981" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-24T01:55:25.476223" level="INFO">Logging into '10.30.170.68:22' as 'jenkins'.</msg>
<msg time="2026-05-24T01:55:26.055392" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun May 24 01:55:25 UTC 2026

  System load:  1.07               Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.68
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun May 24 01:45:19 2026 from 10.30.170.247
[?2004h[jenkins@releng-48317-728-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-05-24T01:55:25.475826" elapsed="0.579771"/>
</kw>
<msg time="2026-05-24T01:55:26.055692" 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-05-24T01:55:25.475483" elapsed="0.580302"/>
</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-05-24T01:55:25.474006" elapsed="0.581899"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-24T01:55:26.056496" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.114 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-24T02:05:32.118068" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-24T02:05:32.118674" level="INFO">${stdout} = </msg>
<msg time="2026-05-24T02:05:32.118788" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.114: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-05-24T01:55:26.056134" elapsed="606.062747"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T02:05:32.119428" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.121558" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.114: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.114. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:31.189 16  switches: flows:  592735 595822 598597 597266 594927 596830 592318 599572 586179 585152 588269 584896 585044 588046 591930 584134  total = 157.695283 per ms 
01:57:31.291 16  switches: flows:  595554 600680 607253 601079 605673 609460 605551 600939 598272 605197 604030 597042 598617 595768 608120 605098  total = 160.369129 per ms 
01:58:31.392 16  switches: flows:  576897 575646 585656 574602 579385 571449 580523 579285 580030 570733 584420 575217 572331 569046 578090 573190  total = 153.516813 per ms 
01:59:31.493 16  switches: flows:  598630 589270 598705 595303 593873 603153 585314 603828 594510 588805 598752 600315 586209 596319 581690 594194  total = 158.215681 per ms 
02:00:31.593 16  switches: flows:  556176 560411 564372 555181 572038 567414 563673 559531 562958 564194 568950 559244 560822 560254 564358 566689  total = 149.852659 per ms 
02:01:31.694 16  switches: flows:  613802 606616 618100 612516 616987 623440 620284 605524 615059 614014 621037 605442 612101 619139 613884 616251  total = 163.630171 per ms 
02:02:31.796 16  switches: flows:  511092 513228 511349 512638 517120 510990 514108 509379 515422 512098 515536 511174 517738 511634 515357 503292  total = 136.471966 per ms 
02:03:31.897 16  switches: flows:  550290 552101 549131 552832 541811 547322 551475 544199 552421 556427 548720 546657 547155 545721 549202 543735  total = 146.074542 per ms 
02:04:32.019 16  switches: flows:  488953 488163 488304 480028 491664 490926 485629 487534 490799 490633 489572 490071 486780 487471 486511 493622  total = 130.013019 per ms 
02:05:32.120 16  switches: flows:  487028 491629 493558 494356 492802 496994 493908 488977 496568 493592 490487 503559 495128 493893 495952 494088  total = 131.488383 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 130013.02/163630.17/147736.93/50655.56 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:05:32.120740" elapsed="0.001167"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-24T02:05:32.122455" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-05-24T02:05:32.122103" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-05-24T02:05:32.122050" elapsed="0.000658"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-24T02:05:32.123000" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-05-24T02:05:32.122887" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-05-24T02:05:32.122842" elapsed="0.000355"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-24T02:05:32.123276" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-24T02:05:32.128212" elapsed="0.000346"/>
</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-05-24T02:05:32.128704" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T02:05:32.129006" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-24T02:05:32.123983" elapsed="0.005194"/>
</kw>
<msg time="2026-05-24T02:05:32.129306" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.114: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-05-24T01:55:25.469103" elapsed="606.660229"/>
</kw>
<status status="PASS" start="2026-05-24T01:55:25.468778" elapsed="606.660608"/>
</branch>
<status status="PASS" start="2026-05-24T01:55:25.468445" elapsed="606.660965"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.129835" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.114: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.114. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:31.189 16  switches: flows:  592735 595822 598597 597266 594927 596830 592318 599572 586179 585152 588269 584896 585044 588046 591930 584134  total = 157.695283 per ms 
01:57:31.291 16  switches: flows:  595554 600680 607253 601079 605673 609460 605551 600939 598272 605197 604030 597042 598617 595768 608120 605098  total = 160.369129 per ms 
01:58:31.392 16  switches: flows:  576897 575646 585656 574602 579385 571449 580523 579285 580030 570733 584420 575217 572331 569046 578090 573190  total = 153.516813 per ms 
01:59:31.493 16  switches: flows:  598630 589270 598705 595303 593873 603153 585314 603828 594510 588805 598752 600315 586209 596319 581690 594194  total = 158.215681 per ms 
02:00:31.593 16  switches: flows:  556176 560411 564372 555181 572038 567414 563673 559531 562958 564194 568950 559244 560822 560254 564358 566689  total = 149.852659 per ms 
02:01:31.694 16  switches: flows:  613802 606616 618100 612516 616987 623440 620284 605524 615059 614014 621037 605442 612101 619139 613884 616251  total = 163.630171 per ms 
02:02:31.796 16  switches: flows:  511092 513228 511349 512638 517120 510990 514108 509379 515422 512098 515536 511174 517738 511634 515357 503292  total = 136.471966 per ms 
02:03:31.897 16  switches: flows:  550290 552101 549131 552832 541811 547322 551475 544199 552421 556427 548720 546657 547155 545721 549202 543735  total = 146.074542 per ms 
02:04:32.019 16  switches: flows:  488953 488163 488304 480028 491664 490926 485629 487534 490799 490633 489572 490071 486780 487471 486511 493622  total = 130.013019 per ms 
02:05:32.120 16  switches: flows:  487028 491629 493558 494356 492802 496994 493908 488977 496568 493592 490487 503559 495128 493893 495952 494088  total = 131.488383 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 130013.02/163630.17/147736.93/50655.56 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:05:32.129549" elapsed="0.000359"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-24T02:05:32.130055" elapsed="0.000394"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-24T02:05:32.130842" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-24T02:05:32.130945" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 130013.02/163630.17/147736.93/50655.56 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-05-24T02:05:32.130609" elapsed="0.000362"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T02:05:32.131391" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 130013.02/163630.17/147736.93/50655.56 | 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-05-24T02:05:32.131123" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.133769" 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-05-24T02:05:32.131561" elapsed="0.002263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.136165" level="INFO">130013.02/163630.17/147736.93/50655.56</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:05:32.133966" elapsed="0.002258"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T02:05:32.138550" 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-05-24T02:05:32.136370" elapsed="0.002207"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T02:05:32.140966" level="INFO">@{result_value_list} = [ 130013.02 | 163630.17 | 147736.93 | 50655.56 ]</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-05-24T02:05:32.138762" elapsed="0.002231"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.141468" level="INFO">Length is 4.</msg>
<msg time="2026-05-24T02:05:32.141556" 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-05-24T02:05:32.141158" elapsed="0.000421"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.146224" level="INFO">min :: 130013.02</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:05:32.141965" elapsed="0.004315"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-24T02:05:32.141838" elapsed="0.004476"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.150958" level="INFO">max :: 163630.17</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-05-24T02:05:32.146529" elapsed="0.004486"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-24T02:05:32.146404" elapsed="0.004646"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.155509" level="INFO">avg :: 147736.93</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:05:32.151280" elapsed="0.004285"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-24T02:05:32.151152" elapsed="0.004447"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.160110" level="INFO">stdev :: 50655.56</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:05:32.155813" elapsed="0.004424"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-24T02:05:32.155686" elapsed="0.004588"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-24T02:05:32.141648" elapsed="0.018657"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.164153" level="INFO">${min} = 130013.02</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:05:32.160461" elapsed="0.003721"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.168175" level="INFO">${max} = 163630.17</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:05:32.164335" elapsed="0.003868"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.172017" level="INFO">${average} = 147736.93</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:05:32.168354" elapsed="0.003690"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.176023" level="INFO">${stdev} = 50655.56</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:05:32.172224" elapsed="0.003826"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.176574" level="INFO">${date} = 2026-05-24 02:05:32</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-24T02:05:32.176221" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.177165" level="INFO">CBench Result: 2026-05-24 02:05:32,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,130013.02,163630.17,147736.93,50655.56</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-05-24T02:05:32.176744" elapsed="0.000479"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-24T02:05:32.178281" 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-05-24T02:05:32.177847" elapsed="0.000501"/>
</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-05-24T02:05:32.178497" elapsed="0.000486"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-24T02:05:32.177375" elapsed="0.001674"/>
</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-05-24T01:55:25.467326" elapsed="606.711782"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.179588" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-24T02:05:32.179273" elapsed="0.000373"/>
</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-05-24T02:05:32.180166" elapsed="0.000269"/>
</kw>
<status status="PASS" start="2026-05-24T02:05:32.179850" elapsed="0.000655"/>
</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-05-24T01:55:25.465636" elapsed="606.714907"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.181869" 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-05-24T02:05:32.181487" elapsed="0.000438"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.183158" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-24T02:05:32.182798" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-24T02:05:32.183538" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-24T02:05:32.183320" elapsed="0.000277"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-24T02:05:32.186448" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-24T02:05:32.186195" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-05-24T02:05:32.186175" elapsed="0.000353"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-24T02:05:32.186878" 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-05-24T02:05:32.187026" 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-05-24T02:05:32.186659" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.187622" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.114 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.68" 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-05-24T02:05:32.187202" elapsed="0.000479"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-24T02:05:32.188226" 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-05-24T02:05:32.187819" elapsed="0.000435"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-24T02:05:32.189308" level="INFO">Length is 0.</msg>
<msg time="2026-05-24T02:05:32.189407" 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-05-24T02:05:32.188828" elapsed="0.000605"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-24T02:05:32.189575" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-24T02:05:32.190764" level="INFO">Logging into '10.30.170.68:22' as 'jenkins'.</msg>
<msg time="2026-05-24T02:05:32.773043" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Sun May 24 02:05:32 UTC 2026

  System load:  0.28               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.68
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Sun May 24 01:55:26 2026 from 10.30.170.247
[?2004h[jenkins@releng-48317-728-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-05-24T02:05:32.190411" elapsed="0.582837"/>
</kw>
<msg time="2026-05-24T02:05:32.773330" 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-05-24T02:05:32.190050" elapsed="0.583354"/>
</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-05-24T02:05:32.188455" elapsed="0.585058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-24T02:05:32.774009" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.114 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-24T02:15:38.809846" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-24T02:15:38.810462" level="INFO">${stdout} = </msg>
<msg time="2026-05-24T02:15:38.810570" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-05-24T02:05:32.773720" elapsed="606.036907"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T02:15:38.811088" elapsed="0.000778"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.812992" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114: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.114. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:37.924 16  switches: flows:  131842 141628 127105 129196 123540 123469 127778 124896 123854 125041 124931 119094 130857 122196 119688 119940  total = 33.584250 per ms 
02:07:38.024 16  switches: flows:  130934 132323 126104 128190 125287 126053 126756 126725 121706 122634 124502 119438 125105 122940 118897 121084  total = 33.255787 per ms 
02:08:38.124 16  switches: flows:  130922 130754 127570 128695 123457 128922 128970 123910 122114 120053 125962 119169 122353 120409 120875 121361  total = 33.202877 per ms 
02:09:38.224 16  switches: flows:  129849 131591 128271 129790 127972 127843 130186 124284 120658 121228 125996 121486 125069 121958 121797 122064  total = 33.444896 per ms 
02:10:38.325 16  switches: flows:  135812 134694 134190 135434 132494 131584 132210 131448 126922 124712 131276 128306 129295 125638 123647 128858  total = 34.717380 per ms 
02:11:38.425 16  switches: flows:  136081 137542 132747 133523 132510 133992 133574 131251 127618 127439 130293 126193 129655 126292 127843 128680  total = 34.862337 per ms 
02:12:38.525 16  switches: flows:  135503 136861 131843 134284 134993 133244 133677 131664 126478 128843 128527 126655 132126 126687 128929 129096  total = 34.931879 per ms 
02:13:38.625 16  switches: flows:  139217 136460 136038 131889 134363 134525 132832 131788 127380 128815 129829 125236 132045 126812 125945 130642  total = 35.005153 per ms 
02:14:38.726 16  switches: flows:  139802 136939 134114 135762 136097 135293 135766 131891 129769 131130 131361 129578 132981 127685 129383 129292  total = 35.388299 per ms 
02:15:38.826 16  switches: flows:  134562 131615 128320 129620 129109 129398 131225 125525 124729 124346 124673 122256 126289 122364 124190 122866  total = 33.795022 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 33202.88/35388.30/34289.29/11458.17 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:15:38.812252" elapsed="0.001078"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-24T02:15:38.813808" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-05-24T02:15:38.813509" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-05-24T02:15:38.813459" elapsed="0.000577"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-24T02:15:38.814281" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-05-24T02:15:38.814195" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-05-24T02:15:38.814128" elapsed="0.000313"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-24T02:15:38.814512" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-24T02:15:38.819623" elapsed="0.000333"/>
</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-05-24T02:15:38.820107" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-24T02:15:38.820416" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-24T02:15:38.815224" elapsed="0.005343"/>
</kw>
<msg time="2026-05-24T02:15:38.820694" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-05-24T02:05:32.183934" elapsed="606.636786"/>
</kw>
<status status="PASS" start="2026-05-24T02:05:32.183622" elapsed="606.637147"/>
</branch>
<status status="PASS" start="2026-05-24T02:05:32.183298" elapsed="606.637494"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.821239" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.114: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.114. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:37.924 16  switches: flows:  131842 141628 127105 129196 123540 123469 127778 124896 123854 125041 124931 119094 130857 122196 119688 119940  total = 33.584250 per ms 
02:07:38.024 16  switches: flows:  130934 132323 126104 128190 125287 126053 126756 126725 121706 122634 124502 119438 125105 122940 118897 121084  total = 33.255787 per ms 
02:08:38.124 16  switches: flows:  130922 130754 127570 128695 123457 128922 128970 123910 122114 120053 125962 119169 122353 120409 120875 121361  total = 33.202877 per ms 
02:09:38.224 16  switches: flows:  129849 131591 128271 129790 127972 127843 130186 124284 120658 121228 125996 121486 125069 121958 121797 122064  total = 33.444896 per ms 
02:10:38.325 16  switches: flows:  135812 134694 134190 135434 132494 131584 132210 131448 126922 124712 131276 128306 129295 125638 123647 128858  total = 34.717380 per ms 
02:11:38.425 16  switches: flows:  136081 137542 132747 133523 132510 133992 133574 131251 127618 127439 130293 126193 129655 126292 127843 128680  total = 34.862337 per ms 
02:12:38.525 16  switches: flows:  135503 136861 131843 134284 134993 133244 133677 131664 126478 128843 128527 126655 132126 126687 128929 129096  total = 34.931879 per ms 
02:13:38.625 16  switches: flows:  139217 136460 136038 131889 134363 134525 132832 131788 127380 128815 129829 125236 132045 126812 125945 130642  total = 35.005153 per ms 
02:14:38.726 16  switches: flows:  139802 136939 134114 135762 136097 135293 135766 131891 129769 131130 131361 129578 132981 127685 129383 129292  total = 35.388299 per ms 
02:15:38.826 16  switches: flows:  134562 131615 128320 129620 129109 129398 131225 125525 124729 124346 124673 122256 126289 122364 124190 122866  total = 33.795022 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 33202.88/35388.30/34289.29/11458.17 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:15:38.820928" elapsed="0.000384"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-24T02:15:38.821456" elapsed="0.000358"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-24T02:15:38.822208" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-24T02:15:38.822310" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 33202.88/35388.30/34289.29/11458.17 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-05-24T02:15:38.821970" elapsed="0.000365"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T02:15:38.822740" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 33202.88/35388.30/34289.29/11458.17 | 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-05-24T02:15:38.822489" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.825095" 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-05-24T02:15:38.822908" elapsed="0.002258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.827638" level="INFO">33202.88/35388.30/34289.29/11458.17</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-24T02:15:38.825309" elapsed="0.002385"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T02:15:38.829999" 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-05-24T02:15:38.827840" elapsed="0.002185"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-24T02:15:38.832409" level="INFO">@{result_value_list} = [ 33202.88 | 35388.30 | 34289.29 | 11458.17 ]</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-05-24T02:15:38.830227" elapsed="0.002209"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.832890" level="INFO">Length is 4.</msg>
<msg time="2026-05-24T02:15:38.832977" 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-05-24T02:15:38.832587" elapsed="0.000413"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.837611" level="INFO">min :: 33202.88</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-05-24T02:15:38.833393" elapsed="0.004273"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-24T02:15:38.833267" elapsed="0.004433"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.842110" level="INFO">max :: 35388.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-05-24T02:15:38.837909" elapsed="0.004269"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-24T02:15:38.837786" elapsed="0.004427"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.846689" level="INFO">avg :: 34289.29</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-05-24T02:15:38.842442" elapsed="0.004303"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-24T02:15:38.842318" elapsed="0.004460"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.851261" level="INFO">stdev :: 11458.17</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-05-24T02:15:38.846984" elapsed="0.004332"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-24T02:15:38.846861" elapsed="0.004489"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-24T02:15:38.833066" elapsed="0.018313"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.855193" level="INFO">${min} = 33202.88</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:15:38.851531" elapsed="0.003690"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.859262" level="INFO">${max} = 35388.30</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:15:38.855372" elapsed="0.003918"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.863069" level="INFO">${average} = 34289.29</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:15:38.859443" elapsed="0.003653"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.866894" level="INFO">${stdev} = 11458.17</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-24T02:15:38.863260" elapsed="0.003661"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.867443" level="INFO">${date} = 2026-05-24 02:15:38</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-24T02:15:38.867078" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.868024" level="INFO">CBench Result: 2026-05-24 02:15:38,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,33202.88,35388.30,34289.29,11458.17</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-05-24T02:15:38.867618" elapsed="0.000462"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-24T02:15:38.869182" 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-05-24T02:15:38.868702" elapsed="0.000548"/>
</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-05-24T02:15:38.869399" elapsed="0.000459"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-24T02:15:38.868236" elapsed="0.001686"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-05-24T02:05:32.182250" elapsed="606.687731"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.870469" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-24T02:15:38.870127" elapsed="0.000399"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-24T02:15:38.871707" 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-05-24T02:15:38.871236" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-05-24T02:15:38.871954" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-05-24T02:15:38.871810" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-05-24T02:15:38.871790" elapsed="0.000252"/>
</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-05-24T02:15:38.872203" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-05-24T02:15:38.872359" elapsed="0.000019"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-05-24T02:15:38.872514" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-24T02:15:38.872704" elapsed="0.000021"/>
</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-05-24T02:15:38.872852" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-05-24T02:15:38.872996" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-24T02:15:38.873137" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-05-24T02:15:38.873370" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-24T02:15:38.873235" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-05-24T02:15:38.873218" elapsed="0.000227"/>
</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-05-24T02:15:38.870889" elapsed="0.002606"/>
</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-05-24T02:05:32.180942" elapsed="606.692598"/>
</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-05-24T01:45:16.303682" elapsed="1822.570403"/>
</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>
