<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-08-01T01:53:00.994691" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/test/csit/suites/openflowplugin/Performance/010_Cbench.robot">
<kw name="Cbench Suite Setup" type="SETUP">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-01T01:53:01.567731" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-08-01T01:53:01.567582" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-08-01T01:53:01.567550" elapsed="0.000290"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T01:53:01.567991" elapsed="0.000588"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-01T01:53:01.569087" level="INFO">Logging into '10.30.170.225:8101' as 'karaf'.</msg>
<msg time="2026-08-01T01:53:02.321394" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-01T01:53:01.568770" elapsed="0.752820"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-01T01:53:02.371221" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-01T01:53:02.321893" elapsed="0.049410"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-01T01:53:02.373114" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-01T01:53:02.373232" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-01T01:53:02.371504" elapsed="0.001759"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-01T01:53:02.373426" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T01:53:02.373818" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T01:53:02.374569" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T01:53:02.374225" elapsed="0.000400"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T01:53:02.374680" elapsed="0.000055"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.225
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-01T01:53:01.567199" elapsed="0.807705"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-08-01T01:53:01.563457" elapsed="0.811513"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T01:53:02.375561" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-01T01:53:02.375180" elapsed="0.000441"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T01:53:02.376067" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-01T01:53:02.375792" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-01T01:53:02.376703" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-01T01:53:02.376293" elapsed="0.000438"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T01:53:02.377271" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-01T01:53:02.376904" elapsed="0.000410"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-01T01:53:02.377867" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-01T01:53:02.377488" elapsed="0.000407"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T01:53:02.378395" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-01T01:53:02.378080" elapsed="0.000357"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-08-01T01:53:02.378745" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-08-01T01:53:02.378526" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T01:53:02.383196" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T01:53:02.382728" elapsed="0.000495"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T01:53:02.384528" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T01:53:02.384617" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-01T01:53:02.383784" elapsed="0.000858"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T01:53:02.384830" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T01:53:02.386282" level="INFO">Logging into '10.30.171.186:22' as 'jenkins'.</msg>
<msg time="2026-08-01T01:53:03.072278" 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 Sat Aug  1 01:53:02 UTC 2026

  System load:  0.13               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.186
  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-797-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-01T01:53:02.385726" elapsed="0.686714"/>
</kw>
<msg time="2026-08-01T01:53:03.072532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T01:53:02.385370" elapsed="0.687254"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-01T01:53:02.383434" elapsed="0.689312"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.080914" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-08-01T01:53:03.072964" elapsed="0.009427"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T01:53:03.082643" elapsed="0.000372"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-08-01T01:53:02.382200" elapsed="0.700949"/>
</kw>
<status status="PASS" start="2026-08-01T01:53:02.378908" elapsed="0.704293"/>
</branch>
<status status="PASS" start="2026-08-01T01:53:02.378500" elapsed="0.704744"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-01T01:53:03.083452" elapsed="0.000671"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-01T01:53:03.090234" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-08-01T01:53:03.090064" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-08-01T01:53:03.090013" elapsed="0.000328"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-01T01:53:03.095415" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-08-01T01:53:03.095258" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-08-01T01:53:03.095230" elapsed="0.000284"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T01:53:03.095706" elapsed="0.000515"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.096629" level="INFO">Logging into '10.30.170.225:8101' as 'karaf'.</msg>
<msg time="2026-08-01T01:53:03.277627" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-01T01:53:03.096370" elapsed="0.181400"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.372866" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-01T01:53:03.278014" elapsed="0.094995"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.397300" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-01T01:53:03.397530" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-01T01:53:03.373289" elapsed="0.024274"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-01T01:53:03.397722" elapsed="0.000299"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T01:53:03.398197" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T01:53:03.398922" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T01:53:03.398580" elapsed="0.000397"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T01:53:03.399055" elapsed="0.000059"/>
</return>
<msg time="2026-08-01T01:53:03.399293" 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.170.225
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-01T01:53:03.094699" elapsed="0.304627"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-01T01:53:03.399479" elapsed="0.000579"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T01:53:03.400113" 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-08-01T01:53:03.089626" elapsed="0.310623"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-01T01:53:03.404229" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-08-01T01:53:03.404052" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-08-01T01:53:03.404001" elapsed="0.000324"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T01:53:03.404498" elapsed="0.000852"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.405890" level="INFO">Logging into '10.30.170.225:8101' as 'karaf'.</msg>
<msg time="2026-08-01T01:53:03.558331" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-08-01T01:53:03.405560" elapsed="0.152896"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.580905" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-08-01T01:53:03.558677" elapsed="0.022291"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.582751" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-01T01:53:03.582853" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-01T01:53:03.581140" elapsed="0.001742"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-08-01T01:53:03.583018" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T01:53:03.583398" elapsed="0.000199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T01:53:03.584056" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T01:53:03.583736" elapsed="0.000372"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-01T01:53:03.584159" elapsed="0.000047"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.225
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-01T01:53:03.403646" elapsed="0.180672"/>
</kw>
<status status="PASS" start="2026-08-01T01:53:01.561487" elapsed="2.022894"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T01:53:03.586564" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T01:53:03.585466" elapsed="0.001170"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T01:53:03.588207" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-01T01:53:03.587836" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-01T01:53:03.588568" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-08-01T01:53:03.588329" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-01T01:53:03.591656" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-01T01:53:03.591401" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-08-01T01:53:03.591379" elapsed="0.000360"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.592088" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-01T01:53:03.591871" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T01:53:03.592801" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.225 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.186" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T01:53:03.592375" elapsed="0.000487"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.593475" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T01:53:03.593002" elapsed="0.000500"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T01:53:03.594413" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T01:53:03.594502" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-01T01:53:03.594091" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T01:53:03.594667" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.595886" level="INFO">Logging into '10.30.171.186:22' as 'jenkins'.</msg>
<msg time="2026-08-01T01:53:03.906678" 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 Sat Aug  1 01:53:02 UTC 2026

  System load:  0.13               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.186
  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: Sat Aug  1 01:53:02 2026 from 10.30.171.252
[?2004h[jenkins@releng-48317-797-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-01T01:53:03.595533" elapsed="0.311323"/>
</kw>
<msg time="2026-08-01T01:53:03.906937" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T01:53:03.595163" elapsed="0.311881"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-01T01:53:03.593704" elapsed="0.313469"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-01T01:53:03.907744" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.225 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-01T02:03:10.069332" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-01T02:03:10.069903" level="INFO">${stdout} = </msg>
<msg time="2026-08-01T02:03:10.070011" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225: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-08-01T01:53:03.907438" elapsed="606.162694"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T02:03:10.070606" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.072547" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:54:09.146 16  switches: flows:  109033 110421 109479 109647 108242 106541 105368 108285 105389 105531 104729 104661 105049 104185 105427 106246  total = 28.470550 per ms 
01:55:09.247 16  switches: flows:  126406 124944 123999 125054 123206 120979 123122 122399 121175 120576 118125 118063 119758 120697 123734 120529  total = 32.491807 per ms 
01:56:09.349 16  switches: flows:  120966 120503 119041 121305 118137 117909 116770 118601 115020 115594 113856 114798 113566 117576 119397 115077  total = 31.249757 per ms 
01:57:09.449 16  switches: flows:  124493 124897 122855 124673 123600 122367 124703 123307 119429 120125 118083 118925 119337 122379 122222 119738  total = 32.464633 per ms 
01:58:09.551 16  switches: flows:  127416 127833 124016 126415 125756 123886 124495 125645 122405 121866 122183 120267 120655 123245 122528 122243  total = 32.959225 per ms 
01:59:09.651 16  switches: flows:  123648 122596 120447 121250 122285 121094 121413 121557 119393 117300 118017 117507 117549 119646 117508 118319  total = 31.938833 per ms 
02:00:09.753 16  switches: flows:  115126 115738 115275 115189 114765 112314 114661 112228 110536 110076 112542 110478 111005 112435 111789 111131  total = 30.037712 per ms 
02:01:09.855 16  switches: flows:  79452 80183 80308 79819 79892 79649 80170 79138 78757 78228 77858 77730 78388 77603 79851 78288  total = 21.053192 per ms 
02:02:09.956 16  switches: flows:  110615 109864 110695 110084 108799 110502 107981 109550 110073 106351 108983 107523 108867 108114 106871 108262  total = 29.003785 per ms 
02:03:10.057 16  switches: flows:  112500 111932 114241 112716 112242 113031 113091 113690 111598 106476 110704 111647 108763 110851 112340 110649  total = 29.724894 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 21053.19/32959.23/30102.65/10612.11 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.071717" elapsed="0.001137"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-01T02:03:10.073383" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-08-01T02:03:10.073077" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-08-01T02:03:10.072989" elapsed="0.000624"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-01T02:03:10.073840" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-08-01T02:03:10.073756" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-08-01T02:03:10.073720" elapsed="0.000262"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-01T02:03:10.074089" 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-08-01T02:03:10.077781" elapsed="0.000353"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T02:03:10.078283" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T02:03:10.078581" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-01T02:03:10.074778" elapsed="0.003955"/>
</kw>
<msg time="2026-08-01T02:03:10.078861" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225: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-08-01T01:53:03.588977" elapsed="606.489911"/>
</kw>
<status status="PASS" start="2026-08-01T01:53:03.588657" elapsed="606.490280"/>
</branch>
<status status="PASS" start="2026-08-01T01:53:03.588306" elapsed="606.490654"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.079413" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:54:09.146 16  switches: flows:  109033 110421 109479 109647 108242 106541 105368 108285 105389 105531 104729 104661 105049 104185 105427 106246  total = 28.470550 per ms 
01:55:09.247 16  switches: flows:  126406 124944 123999 125054 123206 120979 123122 122399 121175 120576 118125 118063 119758 120697 123734 120529  total = 32.491807 per ms 
01:56:09.349 16  switches: flows:  120966 120503 119041 121305 118137 117909 116770 118601 115020 115594 113856 114798 113566 117576 119397 115077  total = 31.249757 per ms 
01:57:09.449 16  switches: flows:  124493 124897 122855 124673 123600 122367 124703 123307 119429 120125 118083 118925 119337 122379 122222 119738  total = 32.464633 per ms 
01:58:09.551 16  switches: flows:  127416 127833 124016 126415 125756 123886 124495 125645 122405 121866 122183 120267 120655 123245 122528 122243  total = 32.959225 per ms 
01:59:09.651 16  switches: flows:  123648 122596 120447 121250 122285 121094 121413 121557 119393 117300 118017 117507 117549 119646 117508 118319  total = 31.938833 per ms 
02:00:09.753 16  switches: flows:  115126 115738 115275 115189 114765 112314 114661 112228 110536 110076 112542 110478 111005 112435 111789 111131  total = 30.037712 per ms 
02:01:09.855 16  switches: flows:  79452 80183 80308 79819 79892 79649 80170 79138 78757 78228 77858 77730 78388 77603 79851 78288  total = 21.053192 per ms 
02:02:09.956 16  switches: flows:  110615 109864 110695 110084 108799 110502 107981 109550 110073 106351 108983 107523 108867 108114 106871 108262  total = 29.003785 per ms 
02:03:10.057 16  switches: flows:  112500 111932 114241 112716 112242 113031 113091 113690 111598 106476 110704 111647 108763 110851 112340 110649  total = 29.724894 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 21053.19/32959.23/30102.65/10612.11 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.079115" elapsed="0.000373"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-01T02:03:10.079637" elapsed="0.000405"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-01T02:03:10.080431" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-01T02:03:10.080524" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 21053.19/32959.23/30102.65/10612.11 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-01T02:03:10.080205" elapsed="0.000344"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T02:03:10.080961" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 21053.19/32959.23/30102.65/10612.11 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-01T02:03:10.080705" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.083390" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.081149" elapsed="0.002298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.085899" level="INFO">21053.19/32959.23/30102.65/10612.11</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.083595" elapsed="0.002384"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T02:03:10.088411" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-01T02:03:10.086175" elapsed="0.002280"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T02:03:10.090958" level="INFO">@{result_value_list} = [ 21053.19 | 32959.23 | 30102.65 | 10612.11 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-01T02:03:10.088684" elapsed="0.002303"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.091494" level="INFO">Length is 4.</msg>
<msg time="2026-08-01T02:03:10.091585" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-01T02:03:10.091165" elapsed="0.000445"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.096456" level="INFO">min :: 21053.19</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.092068" elapsed="0.004448"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-01T02:03:10.091882" elapsed="0.004669"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.101167" level="INFO">max :: 32959.23</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.096774" elapsed="0.004452"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-01T02:03:10.096643" elapsed="0.004618"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.105827" level="INFO">avg :: 30102.65</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.101490" elapsed="0.004395"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-01T02:03:10.101355" elapsed="0.004564"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.110750" level="INFO">stdev :: 10612.11</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.106158" elapsed="0.004650"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-01T02:03:10.106011" elapsed="0.004831"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-01T02:03:10.091679" elapsed="0.019196"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.114841" level="INFO">${min} = 21053.19</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:03:10.111050" elapsed="0.003817"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.118932" level="INFO">${max} = 32959.23</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:03:10.115021" elapsed="0.003938"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.122877" level="INFO">${average} = 30102.65</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:03:10.119132" elapsed="0.003772"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.126829" level="INFO">${stdev} = 10612.11</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:03:10.123072" elapsed="0.003784"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.127387" level="INFO">${date} = 2026-08-01 02:03:10</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-01T02:03:10.127014" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.127999" level="INFO">CBench Result: 2026-08-01 02:03:10,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,21053.19,32959.23,30102.65,10612.11</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.127560" elapsed="0.000511"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T02:03:10.129123" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-01T02:03:10.128696" elapsed="0.000495"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-01T02:03:10.129346" elapsed="0.000460"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-01T02:03:10.128218" elapsed="0.001652"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-08-01T01:53:03.587179" elapsed="606.542751"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.130416" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-01T02:03:10.130098" 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-08-01T02:03:10.130983" elapsed="0.000279"/>
</kw>
<status status="PASS" start="2026-08-01T02:03:10.130683" elapsed="0.000649"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-01T01:53:03.584527" elapsed="606.546843"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.132948" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.132541" elapsed="0.000464"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.134261" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-01T02:03:10.133916" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-01T02:03:10.134636" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-01T02:03:10.134414" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-01T02:03:10.137721" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-08-01T02:03:10.137412" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-08-01T02:03:10.137393" elapsed="0.000420"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-01T02:03:10.138201" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-01T02:03:10.137955" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.139085" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.225 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.186" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:03:10.138524" elapsed="0.000632"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T02:03:10.139748" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T02:03:10.139300" elapsed="0.000479"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T02:03:10.140707" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T02:03:10.140808" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-01T02:03:10.140396" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T02:03:10.140979" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T02:03:10.142227" level="INFO">Logging into '10.30.171.186:22' as 'jenkins'.</msg>
<msg time="2026-08-01T02:03:10.749989" 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 Sat Aug  1 02:03:10 UTC 2026

  System load:  1.01               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.186
  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: Sat Aug  1 01:53:03 2026 from 10.30.171.252
[?2004h[jenkins@releng-48317-797-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-01T02:03:10.141827" elapsed="0.608394"/>
</kw>
<msg time="2026-08-01T02:03:10.750311" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T02:03:10.141476" elapsed="0.608934"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-01T02:03:10.140003" elapsed="0.610532"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-01T02:03:10.751115" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.225 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-01T02:08:18.006776" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-08-01T02:08:18.007191" level="INFO">${stdout} = </msg>
<msg time="2026-08-01T02:08:18.007271" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-01T02:03:10.750777" elapsed="307.256528"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T02:08:18.007611" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:08:18.008775" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:04:15.882 16  switches: flows:  501395 509614 488673 487199 509909 504280 508637 498560 488193 483974 489503 484436 482260 461407 493872 480142  total = 131.200900 per ms 
02:05:15.984 16  switches: flows:  521050 516035 519602 513134 518167 510619 519320 516054 516975 511919 512453 514915 518393 514107 522123 512173  total = 137.386866 per ms 
02:06:16.085 16  switches: flows:  551212 535300 541862 550674 549561 547417 515171 552751 509105 494201 550957 540539 515349 535326 546570 495391  total = 141.950209 per ms 
02:07:16.188 16  switches: flows:  565166 569938 578271 570659 560189 562856 556391 566789 563875 563962 557748 570179 583182 570094 575892 572482  total = 151.202841 per ms 
02:08:16.290 16  switches: flows:  454809 495504 475521 471457 464492 467361 626911 532712 465599 664990 490411 648394 463651 601086 473966 607593  total = 139.837338 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:08:18.008348" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-01T02:08:18.009250" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-08-01T02:08:18.009072" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-08-01T02:08:18.009039" elapsed="0.000326"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-01T02:08:18.009475" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-08-01T02:08:18.009432" elapsed="0.000091"/>
</branch>
<status status="NOT RUN" start="2026-08-01T02:08:18.009414" elapsed="0.000135"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-01T02:08:18.009584" elapsed="0.000017"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T02:08:18.012728" elapsed="0.000406"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T02:08:18.013312" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T02:08:18.013656" elapsed="0.000121"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-01T02:08:18.009965" elapsed="0.003875"/>
</kw>
<msg time="2026-08-01T02:08:18.013986" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-01T02:03:10.135055" elapsed="307.878962"/>
</kw>
<status status="PASS" start="2026-08-01T02:03:10.134719" elapsed="307.879375"/>
</branch>
<status status="PASS" start="2026-08-01T02:03:10.134394" elapsed="307.879728"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:08:18.014615" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:04:15.882 16  switches: flows:  501395 509614 488673 487199 509909 504280 508637 498560 488193 483974 489503 484436 482260 461407 493872 480142  total = 131.200900 per ms 
02:05:15.984 16  switches: flows:  521050 516035 519602 513134 518167 510619 519320 516054 516975 511919 512453 514915 518393 514107 522123 512173  total = 137.386866 per ms 
02:06:16.085 16  switches: flows:  551212 535300 541862 550674 549561 547417 515171 552751 509105 494201 550957 540539 515349 535326 546570 495391  total = 141.950209 per ms 
02:07:16.188 16  switches: flows:  565166 569938 578271 570659 560189 562856 556391 566789 563875 563962 557748 570179 583182 570094 575892 572482  total = 151.202841 per ms 
02:08:16.290 16  switches: flows:  454809 495504 475521 471457 464492 467361 626911 532712 465599 664990 490411 648394 463651 601086 473966 607593  total = 139.837338 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:08:18.014289" elapsed="0.000405"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-08-01T02:08:18.015438" level="FAIL">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:04:15.882 16  switches: flows:  501395 509614 488673 487199 509909 504280 508637 498560 488193 483974 489503 484436 482260 461407 493872 480142  total = 131.200900 per ms 
02:05:15.984 16  switches: flows:  521050 516035 519602 513134 518167 510619 519320 516054 516975 511919 512453 514915 518393 514107 522123 512173  total = 137.386866 per ms 
02:06:16.085 16  switches: flows:  551212 535300 541862 550674 549561 547417 515171 552751 509105 494201 550957 540539 515349 535326 546570 495391  total = 141.950209 per ms 
02:07:16.188 16  switches: flows:  565166 569938 578271 570659 560189 562856 556391 566789 563875 563962 557748 570179 583182 570094 575892 572482  total = 151.202841 per ms 
02:08:16.290 16  switches: flows:  454809 495504 475521 471457 464492 467361 626911 532712 465599 664990 490411 648394 463651 601086 473966 607593  total = 139.837338 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</msg>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-08-01T02:08:18.014874" elapsed="0.000757">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:04:15.882 16  switches: flows:  501395 509614 488673 487199 509909 504280 508637 498560 488193 483974 489503 484436 482260 461407 493872 480142  total = 131.200900 per ms 
02:05:15.984 16  switches: flows:  521050 516035 519602 513134 518167 510619 519320 516054 516975 511919 512453 514915 518393 514107 522123 512173  total = 137.386866 per ms 
02:06:16.085 16  switches: flows:  551212 535300 541862 550674 549561 547417 515171 552751 509105 494201 550957 540539 515349 535326 546570 495391  total = 141.950209 per ms 
02:07:16.188 16  switches: flows:  565166 569938 578271 570659 560189 562856 556391 566789 563875 563962 557748 570179 583182 570094 575892 572482  total = 151.202841 per ms 
02:08:16.290 16  switches: flows:  454809 495504 475521 471457 464492 467361 626911 532712 465599 664990 490411 648394 463651 601086 473966 607593  total = 139.837338 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</status>
</kw>
<kw name="Get Lines Containing String" owner="String">
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.015880" elapsed="0.000025"/>
</kw>
<kw name="Split String" owner="String">
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.016100" elapsed="0.000024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.016293" elapsed="0.000023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.016479" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<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="NOT RUN" start="2026-08-01T02:08:18.016666" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<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="NOT RUN" start="2026-08-01T02:08:18.016866" elapsed="0.000023"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<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="NOT RUN" start="2026-08-01T02:08:18.017081" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.017412" elapsed="0.000023"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-08-01T02:08:18.017259" elapsed="0.000213"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="NOT RUN" start="2026-08-01T02:08:18.017171" elapsed="0.000333"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-08-01T02:08:18.017688" elapsed="0.000023"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-08-01T02:08:18.017885" elapsed="0.000023"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-08-01T02:08:18.018096" elapsed="0.000024"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-08-01T02:08:18.018290" elapsed="0.000023"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.018493" elapsed="0.000023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.018682" elapsed="0.000023"/>
</kw>
<kw name="Log Results And Determine Status">
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="NOT RUN" start="2026-08-01T02:08:18.018853" elapsed="0.000026"/>
</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="FAIL" start="2026-08-01T02:03:10.133342" elapsed="307.885705">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:04:15.882 16  switches: flows:  501395 509614 488673 487199 509909 504280 508637 498560 488193 483974 489503 484436 482260 461407 493872 480142  total = 131.200900 per ms 
02:05:15.984 16  switches: flows:  521050 516035 519602 513134 518167 510619 519320 516054 516975 511919 512453 514915 518393 514107 522123 512173  total = 137.386866 per ms 
02:06:16.085 16  switches: flows:  551212 535300 541862 550674 549561 547417 515171 552751 509105 494201 550957 540539 515349 535326 546570 495391  total = 141.950209 per ms 
02:07:16.188 16  switches: flows:  565166 569938 578271 570659 560189 562856 556391 566789 563875 563962 557748 570179 583182 570094 575892 572482  total = 151.202841 per ms 
02:08:16.290 16  switches: flows:  454809 495504 475521 471457 464492 467361 626911 532712 465599 664990 490411 648394 463651 601086 473966 607593  total = 139.837338 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.019272" elapsed="0.000025"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-08-01T02:08:18.019930" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-08-01T02:08:18.019578" elapsed="0.000762"/>
</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="FAIL" start="2026-08-01T02:03:10.131864" elapsed="307.888519">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:04:15.882 16  switches: flows:  501395 509614 488673 487199 509909 504280 508637 498560 488193 483974 489503 484436 482260 461407 493872 480142  total = 131.200900 per ms 
02:05:15.984 16  switches: flows:  521050 516035 519602 513134 518167 510619 519320 516054 516975 511919 512453 514915 518393 514107 522123 512173  total = 137.386866 per ms 
02:06:16.085 16  switches: flows:  551212 535300 541862 550674 549561 547417 515171 552751 509105 494201 550957 540539 515349 535326 546570 495391  total = 141.950209 per ms 
02:07:16.188 16  switches: flows:  565166 569938 578271 570659 560189 562856 556391 566789 563875 563962 557748 570179 583182 570094 575892 572482  total = 151.202841 per ms 
02:08:16.290 16  switches: flows:  454809 495504 475521 471457 464492 467361 626911 532712 465599 664990 490411 648394 463651 601086 473966 607593  total = 139.837338 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</status>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:08:18.022349" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:08:18.021889" elapsed="0.000527"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-01T02:08:18.024115" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-01T02:08:18.023478" elapsed="0.000687"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.024756" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-08-01T02:08:18.024313" elapsed="0.000512"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-01T02:08:18.028379" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-08-01T02:08:18.028087" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-08-01T02:08:18.028065" elapsed="0.000406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-01T02:08:18.028826" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-08-01T02:08:18.028626" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:08:18.029649" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.225 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.186" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:08:18.029171" elapsed="0.000544"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-01T02:08:18.030352" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T02:08:18.029881" elapsed="0.000501"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T02:08:18.031708" level="INFO">Length is 0.</msg>
<msg time="2026-08-01T02:08:18.031928" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-01T02:08:18.031066" elapsed="0.000917"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T02:08:18.032343" elapsed="0.000773"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-01T02:08:18.035064" level="INFO">Logging into '10.30.171.186:22' as 'jenkins'.</msg>
<msg time="2026-08-01T02:08:18.627209" 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 Sat Aug  1 02:08:18 UTC 2026

  System load:  0.26               Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.186
  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: Sat Aug  1 02:03:10 2026 from 10.30.171.252
[?2004h[jenkins@releng-48317-797-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-08-01T02:08:18.034244" elapsed="0.593175"/>
</kw>
<msg time="2026-08-01T02:08:18.627507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T02:08:18.033455" elapsed="0.594183"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-08-01T02:08:18.030619" elapsed="0.597173"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-01T02:08:18.628350" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.225 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-01T02:18:24.926149" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-01T02:18:24.927178" level="INFO">${stdout} = </msg>
<msg time="2026-08-01T02:18:24.927347" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225: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-08-01T02:08:18.628045" elapsed="606.299377"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T02:18:24.927909" elapsed="0.000860"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.930083" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:09:24.004 16  switches: flows:  118761 121260 122180 119989 117375 121464 120753 120376 117743 118649 116942 116839 116500 115824 127069 116422  total = 31.802433 per ms 
02:10:24.106 16  switches: flows:  123026 124089 126623 124526 124114 126283 121870 125356 123094 121846 120240 120567 121379 121539 124374 119962  total = 32.760090 per ms 
02:11:24.206 16  switches: flows:  122707 126817 125068 125987 125241 125939 122084 125248 122715 125251 118806 121955 119464 120082 123350 120877  total = 32.805068 per ms 
02:12:24.308 16  switches: flows:  121770 122198 122857 120830 121401 123847 119984 122190 120845 122003 117113 118930 117012 118363 120413 118594  total = 32.085560 per ms 
02:13:24.409 16  switches: flows:  123078 124466 125421 125654 122975 125941 124121 125337 123136 124243 120641 123112 119595 120667 123769 120765  total = 32.827200 per ms 
02:14:24.510 16  switches: flows:  113582 111718 111568 115028 113258 114760 112490 113114 111817 112079 108833 111436 107996 110737 110080 109420  total = 29.748910 per ms 
02:15:24.610 16  switches: flows:  111782 110672 109719 111584 109370 111422 110858 111366 107826 110258 109262 108408 106264 107653 107822 109959  total = 29.188348 per ms 
02:16:24.711 16  switches: flows:  110594 107871 109715 111564 110477 111215 107911 107872 107318 108941 107431 105479 106171 106836 108777 107916  total = 28.886586 per ms 
02:17:24.812 16  switches: flows:  107091 105393 107160 105695 103545 107422 106068 100681 103526 104899 102418 102307 102210 101928 104187 101715  total = 27.724438 per ms 
02:18:24.914 16  switches: flows:  122272 122550 123520 122787 120048 125001 122304 119750 117865 120110 117771 119950 118147 118895 119104 119801  total = 32.110813 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27724.44/32827.20/30904.11/10472.88 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.929196" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-01T02:18:24.930968" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-08-01T02:18:24.930667" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-08-01T02:18:24.930615" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-01T02:18:24.931459" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-08-01T02:18:24.931353" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-08-01T02:18:24.931318" elapsed="0.000289"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-01T02:18:24.931676" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-01T02:18:24.937810" elapsed="0.000765"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-08-01T02:18:24.939069" elapsed="0.000277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-01T02:18:24.939480" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-01T02:18:24.932383" elapsed="0.007278"/>
</kw>
<msg time="2026-08-01T02:18:24.939796" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225: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-08-01T02:08:18.025252" elapsed="606.914571"/>
</kw>
<status status="PASS" start="2026-08-01T02:08:18.024854" elapsed="606.915020"/>
</branch>
<status status="PASS" start="2026-08-01T02:08:18.024289" elapsed="606.915608"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.940356" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.225:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.225. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:09:24.004 16  switches: flows:  118761 121260 122180 119989 117375 121464 120753 120376 117743 118649 116942 116839 116500 115824 127069 116422  total = 31.802433 per ms 
02:10:24.106 16  switches: flows:  123026 124089 126623 124526 124114 126283 121870 125356 123094 121846 120240 120567 121379 121539 124374 119962  total = 32.760090 per ms 
02:11:24.206 16  switches: flows:  122707 126817 125068 125987 125241 125939 122084 125248 122715 125251 118806 121955 119464 120082 123350 120877  total = 32.805068 per ms 
02:12:24.308 16  switches: flows:  121770 122198 122857 120830 121401 123847 119984 122190 120845 122003 117113 118930 117012 118363 120413 118594  total = 32.085560 per ms 
02:13:24.409 16  switches: flows:  123078 124466 125421 125654 122975 125941 124121 125337 123136 124243 120641 123112 119595 120667 123769 120765  total = 32.827200 per ms 
02:14:24.510 16  switches: flows:  113582 111718 111568 115028 113258 114760 112490 113114 111817 112079 108833 111436 107996 110737 110080 109420  total = 29.748910 per ms 
02:15:24.610 16  switches: flows:  111782 110672 109719 111584 109370 111422 110858 111366 107826 110258 109262 108408 106264 107653 107822 109959  total = 29.188348 per ms 
02:16:24.711 16  switches: flows:  110594 107871 109715 111564 110477 111215 107911 107872 107318 108941 107431 105479 106171 106836 108777 107916  total = 28.886586 per ms 
02:17:24.812 16  switches: flows:  107091 105393 107160 105695 103545 107422 106068 100681 103526 104899 102418 102307 102210 101928 104187 101715  total = 27.724438 per ms 
02:18:24.914 16  switches: flows:  122272 122550 123520 122787 120048 125001 122304 119750 117865 120110 117771 119950 118147 118895 119104 119801  total = 32.110813 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27724.44/32827.20/30904.11/10472.88 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.940056" elapsed="0.000377"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-01T02:18:24.940583" elapsed="0.000377"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-01T02:18:24.941380" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-01T02:18:24.941471" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 27724.44/32827.20/30904.11/10472.88 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-08-01T02:18:24.941140" elapsed="0.000356"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T02:18:24.941913" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 27724.44/32827.20/30904.11/10472.88 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-01T02:18:24.941655" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.944445" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.942135" elapsed="0.002391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.947230" level="INFO">27724.44/32827.20/30904.11/10472.88</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.944731" elapsed="0.002566"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T02:18:24.950929" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-01T02:18:24.947523" elapsed="0.003448"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-01T02:18:24.954759" level="INFO">@{result_value_list} = [ 27724.44 | 32827.20 | 30904.11 | 10472.88 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-08-01T02:18:24.951290" elapsed="0.003510"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.955465" level="INFO">Length is 4.</msg>
<msg time="2026-08-01T02:18:24.955562" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-08-01T02:18:24.955067" elapsed="0.000519"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.960727" level="INFO">min :: 27724.44</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.956146" elapsed="0.004639"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-01T02:18:24.955987" elapsed="0.004835"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.965565" level="INFO">max :: 32827.20</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.961072" elapsed="0.004557"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-01T02:18:24.960913" elapsed="0.004756"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.970470" level="INFO">avg :: 30904.11</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.965893" elapsed="0.004636"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-01T02:18:24.965760" elapsed="0.004805"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.975503" level="INFO">stdev :: 10472.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-08-01T02:18:24.970825" elapsed="0.004739"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-01T02:18:24.970695" elapsed="0.004905"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-01T02:18:24.955777" elapsed="0.019854"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.979597" level="INFO">${min} = 27724.44</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:18:24.975793" elapsed="0.003832"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.983567" level="INFO">${max} = 32827.20</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:18:24.979796" elapsed="0.003798"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.987559" level="INFO">${average} = 30904.11</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:18:24.983748" elapsed="0.003837"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.991537" level="INFO">${stdev} = 10472.88</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-01T02:18:24.987740" elapsed="0.003824"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.992145" level="INFO">${date} = 2026-08-01 02:18:24</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-01T02:18:24.991735" elapsed="0.000440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.992744" level="INFO">CBench Result: 2026-08-01 02:18:24,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,27724.44,32827.20,30904.11,10472.88</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-01T02:18:24.992327" elapsed="0.000474"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-01T02:18:24.993927" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-01T02:18:24.993442" elapsed="0.000559"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-08-01T02:18:24.994169" elapsed="0.000540"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-01T02:18:24.992944" elapsed="0.001836"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-08-01T02:08:18.022776" elapsed="606.972064"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.995324" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-01T02:18:24.994990" elapsed="0.000391"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-01T02:18:24.996616" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-08-01T02:18:24.996113" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-01T02:18:24.996886" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-08-01T02:18:24.996732" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-08-01T02:18:24.996712" elapsed="0.000264"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-08-01T02:18:24.997140" 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-08-01T02:18:24.997300" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-08-01T02:18:24.997460" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-08-01T02:18:24.997657" 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-08-01T02:18:24.997809" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-08-01T02:18:24.997971" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-08-01T02:18:24.998182" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-08-01T02:18:24.998456" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-08-01T02:18:24.998289" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-08-01T02:18:24.998271" elapsed="0.000281"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-08-01T02:18:24.995751" elapsed="0.002864"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-08-01T02:08:18.021176" elapsed="606.977512"/>
</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="FAIL" start="2026-08-01T01:53:00.996318" elapsed="1524.002943"/>
</suite>
<statistics>
<total>
<stat pass="2" fail="1" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="2" fail="1" skip="0">cbench</stat>
<stat pass="2" fail="0" skip="0">latency</stat>
<stat pass="0" fail="1" skip="0">throughput</stat>
</tag>
<suite>
<stat name="openflowplugin-cbench.txt" id="s1" pass="2" fail="1" skip="0">openflowplugin-cbench.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
