<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-07-18T01:55:24.792353" 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-07-18T01:55:25.362631" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-07-18T01:55:25.362489" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-07-18T01:55:25.362459" elapsed="0.000273"/>
</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-07-18T01:55:25.362890" elapsed="0.000632"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-18T01:55:25.364185" level="INFO">Logging into '10.30.170.199:8101' as 'karaf'.</msg>
<msg time="2026-07-18T01:55:26.156262" 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-07-18T01:55:25.363886" elapsed="0.792575"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-18T01:55:26.206031" 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-07-18T01:55:26.156754" elapsed="0.049343"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-18T01:55:26.207967" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-18T01:55:26.208077" 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-07-18T01:55:26.206261" elapsed="0.001846"/>
</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-07-18T01:55:26.208263" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T01:55:26.208625" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T01:55:26.209385" 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-07-18T01:55:26.209056" elapsed="0.000383"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-18T01:55:26.209492" elapsed="0.000051"/>
</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.199
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-18T01:55:25.362104" elapsed="0.847557"/>
</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-07-18T01:55:25.358489" elapsed="0.851234"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-18T01:55:26.210295" 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-07-18T01:55:26.209923" elapsed="0.000428"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-18T01:55:26.210776" 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-07-18T01:55:26.210505" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-18T01:55:26.211392" 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-07-18T01:55:26.211003" elapsed="0.000417"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-18T01:55:26.211934" 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-07-18T01:55:26.211587" elapsed="0.000390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-18T01:55:26.212495" 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-07-18T01:55:26.212124" elapsed="0.000398"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-18T01:55:26.213010" 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-07-18T01:55:26.212682" elapsed="0.000371"/>
</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-07-18T01:55:26.213349" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-18T01:55:26.213138" elapsed="0.000266"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-18T01:55:26.217771" 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-07-18T01:55:26.217369" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-18T01:55:26.219119" level="INFO">Length is 0.</msg>
<msg time="2026-07-18T01:55:26.219208" 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-07-18T01:55:26.218370" elapsed="0.000863"/>
</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-07-18T01:55:26.219384" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-18T01:55:26.220732" level="INFO">Logging into '10.30.170.216:22' as 'jenkins'.</msg>
<msg time="2026-07-18T01:55:27.052886" 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 Jul 18 01:55:26 UTC 2026

  System load:  0.06               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.216
  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-783-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-07-18T01:55:26.220248" elapsed="0.832810"/>
</kw>
<msg time="2026-07-18T01:55:27.053170" 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-07-18T01:55:26.219901" elapsed="0.833366"/>
</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-07-18T01:55:26.218022" elapsed="0.835377"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.063135" 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-07-18T01:55:27.053615" elapsed="0.011099"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T01:55:27.065115" elapsed="0.000448"/>
</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-07-18T01:55:26.216833" elapsed="0.848834"/>
</kw>
<status status="PASS" start="2026-07-18T01:55:26.213493" elapsed="0.852234"/>
</branch>
<status status="PASS" start="2026-07-18T01:55:26.213112" elapsed="0.852665"/>
</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-07-18T01:55:27.066034" elapsed="0.000727"/>
</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-07-18T01:55:27.073145" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-07-18T01:55:27.073019" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-07-18T01:55:27.072991" elapsed="0.000235"/>
</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-07-18T01:55:27.076816" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-07-18T01:55:27.076701" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-07-18T01:55:27.076682" elapsed="0.000220"/>
</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-07-18T01:55:27.077043" elapsed="0.000456"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.077938" level="INFO">Logging into '10.30.170.199:8101' as 'karaf'.</msg>
<msg time="2026-07-18T01:55:27.290519" 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-07-18T01:55:27.077648" elapsed="0.213034"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.391014" 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-07-18T01:55:27.290992" elapsed="0.100180"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.406753" 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-07-18T01:55:27.407185" 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-07-18T01:55:27.391523" elapsed="0.015741"/>
</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-07-18T01:55:27.407514" elapsed="0.000263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T01:55:27.408007" elapsed="0.001904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T01:55:27.410585" 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-07-18T01:55:27.410122" elapsed="0.000546"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-18T01:55:27.410740" elapsed="0.000067"/>
</return>
<msg time="2026-07-18T01:55:27.411041" 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.199
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-18T01:55:27.076337" elapsed="0.334749"/>
</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-07-18T01:55:27.411293" elapsed="0.000743"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-18T01:55:27.412110" elapsed="0.000044"/>
</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-07-18T01:55:27.072668" elapsed="0.339627"/>
</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-07-18T01:55:27.418251" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-07-18T01:55:27.418068" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-07-18T01:55:27.418035" elapsed="0.000316"/>
</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-07-18T01:55:27.418570" elapsed="0.000636"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.419675" level="INFO">Logging into '10.30.170.199:8101' as 'karaf'.</msg>
<msg time="2026-07-18T01:55:27.585309" 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-07-18T01:55:27.419410" elapsed="0.166110"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.616682" 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-07-18T01:55:27.585944" elapsed="0.031005"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.621203" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-18T01:55:27.621435" 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-07-18T01:55:27.617425" elapsed="0.004075"/>
</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-07-18T01:55:27.621812" elapsed="0.000559"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T01:55:27.622589" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T01:55:27.623550" 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-07-18T01:55:27.623092" elapsed="0.000530"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-18T01:55:27.623699" elapsed="0.000081"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.199
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-18T01:55:27.417584" elapsed="0.206434"/>
</kw>
<status status="PASS" start="2026-07-18T01:55:25.356720" elapsed="2.267393"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T01:55:27.626904" 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-07-18T01:55:27.625387" elapsed="0.001621"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-18T01:55:27.629057" 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-07-18T01:55:27.628533" elapsed="0.000586"/>
</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-07-18T01:55:27.629566" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-07-18T01:55:27.629233" elapsed="0.000414"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-07-18T01:55:27.633822" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-07-18T01:55:27.633472" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-07-18T01:55:27.633445" elapsed="0.000549"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.634444" 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-07-18T01:55:27.634566" 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-07-18T01:55:27.634185" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T01:55:27.635228" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.199 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.216" 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-07-18T01:55:27.634728" elapsed="0.000561"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.635932" 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-07-18T01:55:27.635433" elapsed="0.000525"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-18T01:55:27.636896" level="INFO">Length is 0.</msg>
<msg time="2026-07-18T01:55:27.636989" 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-07-18T01:55:27.636545" elapsed="0.000468"/>
</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-07-18T01:55:27.637158" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.638407" level="INFO">Logging into '10.30.170.216:22' as 'jenkins'.</msg>
<msg time="2026-07-18T01:55:27.986337" 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 Jul 18 01:55:26 UTC 2026

  System load:  0.06               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.216
  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 Jul 18 01:55:26 2026 from 10.30.170.195
[?2004h[jenkins@releng-48317-783-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-07-18T01:55:27.638045" elapsed="0.348447"/>
</kw>
<msg time="2026-07-18T01:55:27.986574" 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-07-18T01:55:27.637657" elapsed="0.349003"/>
</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-07-18T01:55:27.636163" elapsed="0.350623"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-18T01:55:27.987334" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.199 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-18T02:05:34.119622" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-18T02:05:34.120348" level="INFO">${stdout} = </msg>
<msg time="2026-07-18T02:05:34.120478" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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-07-18T01:55:27.987018" elapsed="606.133535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T02:05:34.121776" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.123971" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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.199. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:33.195 16  switches: flows:  109010 111438 115504 112117 112266 112322 112323 108811 107699 109107 113291 105487 106817 107974 105703 107959  total = 29.297133 per ms 
01:57:33.296 16  switches: flows:  131705 130820 129934 130216 129422 127703 131422 128038 127614 126389 127879 122183 121744 122867 124181 126958  total = 33.927921 per ms 
01:58:33.397 16  switches: flows:  127927 126169 126590 126527 126621 124874 127222 125413 122081 123214 123053 120441 119309 120604 120985 122956  total = 33.011298 per ms 
01:59:33.498 16  switches: flows:  132199 131267 131426 132129 130311 130286 131671 130373 126235 128073 127984 124170 123690 125819 124920 128357  total = 34.257852 per ms 
02:00:33.598 16  switches: flows:  122329 122190 117558 122550 120642 121358 121955 119921 117764 116293 117968 115307 113826 116816 116884 116862  total = 31.617548 per ms 
02:01:33.699 16  switches: flows:  112060 112608 112478 110204 111827 109296 111040 109992 107565 106483 107621 105674 103768 108120 106038 106805  total = 28.977915 per ms 
02:02:33.799 16  switches: flows:  129338 131495 129154 127445 127068 126753 128566 127377 124545 122098 125381 121277 117251 122652 124186 124365  total = 33.426714 per ms 
02:03:33.900 16  switches: flows:  126205 130057 127561 127443 128674 128312 128903 126975 123386 122390 125116 121371 118216 122133 121810 122486  total = 33.294633 per ms 
02:04:34.000 16  switches: flows:  126088 129145 127113 128134 127633 127851 126873 127150 125395 121565 125473 119636 119213 123699 119326 120138  total = 33.185153 per ms 
02:05:34.100 16  switches: flows:  126872 129584 128379 128656 127267 127321 127995 127119 125797 121366 125343 120985 120908 123706 122381 122133  total = 33.374464 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28977.92/34257.85/32785.94/11032.68 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:05:34.123144" elapsed="0.001173"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-18T02:05:34.124831" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-07-18T02:05:34.124516" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-07-18T02:05:34.124456" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-18T02:05:34.125335" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-07-18T02:05:34.125241" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-07-18T02:05:34.125205" elapsed="0.000310"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-18T02:05:34.125601" 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-07-18T02:05:34.131609" elapsed="0.000863"/>
</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-07-18T02:05:34.132830" elapsed="0.000429"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T02:05:34.133563" elapsed="0.000300"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-18T02:05:34.126377" elapsed="0.007642"/>
</kw>
<msg time="2026-07-18T02:05:34.134307" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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-07-18T01:55:27.630175" elapsed="606.504194"/>
</kw>
<status status="PASS" start="2026-07-18T01:55:27.629688" elapsed="606.504789"/>
</branch>
<status status="PASS" start="2026-07-18T01:55:27.629199" elapsed="606.505330"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.135118" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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.199. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:56:33.195 16  switches: flows:  109010 111438 115504 112117 112266 112322 112323 108811 107699 109107 113291 105487 106817 107974 105703 107959  total = 29.297133 per ms 
01:57:33.296 16  switches: flows:  131705 130820 129934 130216 129422 127703 131422 128038 127614 126389 127879 122183 121744 122867 124181 126958  total = 33.927921 per ms 
01:58:33.397 16  switches: flows:  127927 126169 126590 126527 126621 124874 127222 125413 122081 123214 123053 120441 119309 120604 120985 122956  total = 33.011298 per ms 
01:59:33.498 16  switches: flows:  132199 131267 131426 132129 130311 130286 131671 130373 126235 128073 127984 124170 123690 125819 124920 128357  total = 34.257852 per ms 
02:00:33.598 16  switches: flows:  122329 122190 117558 122550 120642 121358 121955 119921 117764 116293 117968 115307 113826 116816 116884 116862  total = 31.617548 per ms 
02:01:33.699 16  switches: flows:  112060 112608 112478 110204 111827 109296 111040 109992 107565 106483 107621 105674 103768 108120 106038 106805  total = 28.977915 per ms 
02:02:33.799 16  switches: flows:  129338 131495 129154 127445 127068 126753 128566 127377 124545 122098 125381 121277 117251 122652 124186 124365  total = 33.426714 per ms 
02:03:33.900 16  switches: flows:  126205 130057 127561 127443 128674 128312 128903 126975 123386 122390 125116 121371 118216 122133 121810 122486  total = 33.294633 per ms 
02:04:34.000 16  switches: flows:  126088 129145 127113 128134 127633 127851 126873 127150 125395 121565 125473 119636 119213 123699 119326 120138  total = 33.185153 per ms 
02:05:34.100 16  switches: flows:  126872 129584 128379 128656 127267 127321 127995 127119 125797 121366 125343 120985 120908 123706 122381 122133  total = 33.374464 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28977.92/34257.85/32785.94/11032.68 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:05:34.134802" elapsed="0.000394"/>
</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-07-18T02:05:34.135355" elapsed="0.000401"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-18T02:05:34.136171" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-18T02:05:34.136261" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28977.92/34257.85/32785.94/11032.68 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-07-18T02:05:34.135938" elapsed="0.000348"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:05:34.136729" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28977.92/34257.85/32785.94/11032.68 | 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-07-18T02:05:34.136443" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.139210" 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-07-18T02:05:34.136928" elapsed="0.002347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.141740" level="INFO">28977.92/34257.85/32785.94/11032.68</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:05:34.139423" elapsed="0.002383"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:05:34.144195" 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-07-18T02:05:34.141975" elapsed="0.002248"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:05:34.146747" level="INFO">@{result_value_list} = [ 28977.92 | 34257.85 | 32785.94 | 11032.68 ]</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-07-18T02:05:34.144413" elapsed="0.002364"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.147286" level="INFO">Length is 4.</msg>
<msg time="2026-07-18T02:05:34.147384" 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-07-18T02:05:34.146948" elapsed="0.000460"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.152261" level="INFO">min :: 28977.92</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-07-18T02:05:34.147841" elapsed="0.004479"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-18T02:05:34.147707" elapsed="0.004647"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.157018" level="INFO">max :: 34257.85</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:05:34.152592" elapsed="0.004483"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-18T02:05:34.152451" elapsed="0.004658"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.161771" level="INFO">avg :: 32785.94</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:05:34.157326" elapsed="0.004502"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-18T02:05:34.157198" elapsed="0.004663"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.167065" level="INFO">stdev :: 11032.68</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:05:34.162111" elapsed="0.005012"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-18T02:05:34.161982" elapsed="0.005175"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-18T02:05:34.147496" elapsed="0.019698"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.171195" level="INFO">${min} = 28977.92</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-07-18T02:05:34.167365" elapsed="0.003865"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.175388" level="INFO">${max} = 34257.85</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-07-18T02:05:34.171387" elapsed="0.004028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.179471" level="INFO">${average} = 32785.94</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-07-18T02:05:34.175575" elapsed="0.003925"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.183562" level="INFO">${stdev} = 11032.68</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-07-18T02:05:34.179655" elapsed="0.003934"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.184156" level="INFO">${date} = 2026-07-18 02:05:34</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-18T02:05:34.183754" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.184779" level="INFO">CBench Result: 2026-07-18 02:05:34,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28977.92,34257.85,32785.94,11032.68</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-07-18T02:05:34.184342" elapsed="0.000493"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-18T02:05:34.185956" 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-07-18T02:05:34.185496" elapsed="0.000528"/>
</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-07-18T02:05:34.186176" elapsed="0.000463"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-18T02:05:34.185002" elapsed="0.001701"/>
</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-07-18T01:55:27.627614" elapsed="606.559158"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.187298" 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-07-18T02:05:34.186949" elapsed="0.000410"/>
</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-07-18T02:05:34.187922" elapsed="0.000292"/>
</kw>
<status status="PASS" start="2026-07-18T02:05:34.187592" elapsed="0.000696"/>
</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-07-18T01:55:27.624325" elapsed="606.564001"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.189888" 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-07-18T02:05:34.189432" elapsed="0.000516"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.191204" 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-07-18T02:05:34.190853" elapsed="0.000394"/>
</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-07-18T02:05:34.191588" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-18T02:05:34.191357" elapsed="0.000289"/>
</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-07-18T02:05:34.195127" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-07-18T02:05:34.194783" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-07-18T02:05:34.194760" elapsed="0.000453"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-18T02:05:34.195555" 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-07-18T02:05:34.195679" 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-07-18T02:05:34.195351" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.196320" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.199 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.216" 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-07-18T02:05:34.195841" elapsed="0.000538"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-18T02:05:34.196964" 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-07-18T02:05:34.196520" elapsed="0.000471"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-18T02:05:34.197990" level="INFO">Length is 0.</msg>
<msg time="2026-07-18T02:05:34.198081" 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-07-18T02:05:34.197611" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-18T02:05:34.198255" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-18T02:05:34.199538" level="INFO">Logging into '10.30.170.216:22' as 'jenkins'.</msg>
<msg time="2026-07-18T02:05:34.812064" 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 Jul 18 02:05:34 UTC 2026

  System load:  1.0                Processes:             105
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.216
  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 Jul 18 01:55:27 2026 from 10.30.170.195
[?2004h[jenkins@releng-48317-783-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-07-18T02:05:34.199163" elapsed="0.613048"/>
</kw>
<msg time="2026-07-18T02:05:34.812285" 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-07-18T02:05:34.198771" elapsed="0.613593"/>
</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-07-18T02:05:34.197202" elapsed="0.615264"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-18T02:05:34.812953" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.199 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-18T02:15:43.334057" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-18T02:15:43.335389" level="INFO">${stdout} = </msg>
<msg time="2026-07-18T02:15:43.335504" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.199: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-07-18T02:05:34.812662" elapsed="608.522926"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T02:15:43.336131" elapsed="0.000731"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.338098" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.199: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.199. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:39.923 16  switches: flows:  537012 544442 546874 541350 545933 538105 538151 546560 533624 524194 525267 532591 539177 529544 529634 534241  total = 143.111650 per ms 
02:07:40.024 16  switches: flows:  538237 523665 534483 538069 547207 523788 535668 526342 547293 534885 531680 526353 531322 531025 531869 539515  total = 142.117497 per ms 
02:08:40.127 16  switches: flows:  567992 573400 567823 574768 564639 557594 557867 570665 562651 567892 563512 557591 563571 566996 569521 568579  total = 150.664477 per ms 
02:09:40.230 16  switches: flows:  551929 550438 552622 550144 558981 549496 551438 493716 550699 558375 558271 560403 549800 546637 552345 556859  total = 146.289052 per ms 
02:10:40.334 16  switches: flows:  560920 563246 567219 562807 571683 568698 583395 564894 571288 568115 558647 561760 567300 557541 545745 568252  total = 150.433604 per ms 
02:11:40.436 16  switches: flows:  655909 658765 661028 654787 665449 654394 664564 655470 647551 663379 660562 656960 656237 651417 658713 655925  total = 175.055660 per ms 
02:12:43.010 16  switches: flows:  588910 584989 593035 600184 588208 579481 584155 577687 588689 590487 595429 599778 590858 585406 590643 579346  total = 150.500003 per ms 
02:13:43.111 16  switches: flows:  608136 602746 610273 613557 607599 610841 503481 610735 607869 610264 485148 614390 611659 604619 615355 616335  total = 158.615693 per ms 
02:14:43.213 16  switches: flows:  565434 558245 558725 555920 553261 561182 549966 558386 556658 554353 551737 553528 556086 546580 547064 543970  total = 147.602067 per ms 
02:15:43.314 16  switches: flows:  510452 509902 523856 516817 520055 511535 512157 504379 513395 510163 507854 510952 513816 512145 511160 522702  total = 136.626833 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 136626.83/175055.66/150878.32/51338.44 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:15:43.337269" elapsed="0.001179"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-18T02:15:43.339079" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-07-18T02:15:43.338685" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-07-18T02:15:43.338592" elapsed="0.000713"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-18T02:15:43.339517" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-07-18T02:15:43.339436" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-07-18T02:15:43.339401" elapsed="0.000252"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-18T02:15:43.339719" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-18T02:15:43.344540" elapsed="0.000382"/>
</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-07-18T02:15:43.345077" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T02:15:43.345382" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-18T02:15:43.340519" elapsed="0.005024"/>
</kw>
<msg time="2026-07-18T02:15:43.345673" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.199: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-07-18T02:05:34.192012" elapsed="609.153688"/>
</kw>
<status status="PASS" start="2026-07-18T02:05:34.191671" elapsed="609.154083"/>
</branch>
<status status="PASS" start="2026-07-18T02:05:34.191337" elapsed="609.154447"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.346253" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.199: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.199. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:06:39.923 16  switches: flows:  537012 544442 546874 541350 545933 538105 538151 546560 533624 524194 525267 532591 539177 529544 529634 534241  total = 143.111650 per ms 
02:07:40.024 16  switches: flows:  538237 523665 534483 538069 547207 523788 535668 526342 547293 534885 531680 526353 531322 531025 531869 539515  total = 142.117497 per ms 
02:08:40.127 16  switches: flows:  567992 573400 567823 574768 564639 557594 557867 570665 562651 567892 563512 557591 563571 566996 569521 568579  total = 150.664477 per ms 
02:09:40.230 16  switches: flows:  551929 550438 552622 550144 558981 549496 551438 493716 550699 558375 558271 560403 549800 546637 552345 556859  total = 146.289052 per ms 
02:10:40.334 16  switches: flows:  560920 563246 567219 562807 571683 568698 583395 564894 571288 568115 558647 561760 567300 557541 545745 568252  total = 150.433604 per ms 
02:11:40.436 16  switches: flows:  655909 658765 661028 654787 665449 654394 664564 655470 647551 663379 660562 656960 656237 651417 658713 655925  total = 175.055660 per ms 
02:12:43.010 16  switches: flows:  588910 584989 593035 600184 588208 579481 584155 577687 588689 590487 595429 599778 590858 585406 590643 579346  total = 150.500003 per ms 
02:13:43.111 16  switches: flows:  608136 602746 610273 613557 607599 610841 503481 610735 607869 610264 485148 614390 611659 604619 615355 616335  total = 158.615693 per ms 
02:14:43.213 16  switches: flows:  565434 558245 558725 555920 553261 561182 549966 558386 556658 554353 551737 553528 556086 546580 547064 543970  total = 147.602067 per ms 
02:15:43.314 16  switches: flows:  510452 509902 523856 516817 520055 511535 512157 504379 513395 510163 507854 510952 513816 512145 511160 522702  total = 136.626833 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 136626.83/175055.66/150878.32/51338.44 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:15:43.345956" elapsed="0.000372"/>
</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-07-18T02:15:43.346477" elapsed="0.000453"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-18T02:15:43.347324" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-18T02:15:43.347415" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 136626.83/175055.66/150878.32/51338.44 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-07-18T02:15:43.347095" elapsed="0.000345"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:15:43.347854" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 136626.83/175055.66/150878.32/51338.44 | 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-07-18T02:15:43.347598" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.350299" 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-07-18T02:15:43.348047" elapsed="0.002309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.352775" level="INFO">136626.83/175055.66/150878.32/51338.44</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:15:43.350505" elapsed="0.002327"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:15:43.355229" 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-07-18T02:15:43.352998" elapsed="0.002258"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:15:43.357667" level="INFO">@{result_value_list} = [ 136626.83 | 175055.66 | 150878.32 | 51338.44 ]</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-07-18T02:15:43.355447" elapsed="0.002247"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.358173" level="INFO">Length is 4.</msg>
<msg time="2026-07-18T02:15:43.358260" 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-07-18T02:15:43.357849" elapsed="0.000435"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.363215" level="INFO">min :: 136626.83</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-07-18T02:15:43.358670" elapsed="0.004603"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-18T02:15:43.358540" elapsed="0.004768"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.368363" level="INFO">max :: 175055.66</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-07-18T02:15:43.363527" elapsed="0.004893"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-18T02:15:43.363398" elapsed="0.005058"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.373214" level="INFO">avg :: 150878.32</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-07-18T02:15:43.368674" elapsed="0.004599"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-18T02:15:43.368544" elapsed="0.004765"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.378076" level="INFO">stdev :: 51338.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-07-18T02:15:43.373564" elapsed="0.004570"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-18T02:15:43.373397" elapsed="0.004773"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-18T02:15:43.358349" elapsed="0.019853"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.383133" level="INFO">${min} = 136626.83</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-07-18T02:15:43.378367" elapsed="0.004807"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.387373" level="INFO">${max} = 175055.66</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-07-18T02:15:43.383441" elapsed="0.003959"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.391751" level="INFO">${average} = 150878.32</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-07-18T02:15:43.387560" elapsed="0.004219"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.395989" level="INFO">${stdev} = 51338.44</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-07-18T02:15:43.391954" elapsed="0.004071"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.396587" level="INFO">${date} = 2026-07-18 02:15:43</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-18T02:15:43.396196" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.397236" level="INFO">CBench Result: 2026-07-18 02:15:43,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,136626.83,175055.66,150878.32,51338.44</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-07-18T02:15:43.396763" elapsed="0.000533"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-18T02:15:43.398405" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-07-18T02:15:43.397970" elapsed="0.000504"/>
</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-07-18T02:15:43.398633" elapsed="0.000516"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-18T02:15:43.397462" elapsed="0.001755"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-07-18T02:05:34.190267" elapsed="609.209018"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.399810" 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-07-18T02:15:43.399478" elapsed="0.000389"/>
</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-07-18T02:15:43.400433" elapsed="0.000270"/>
</kw>
<status status="PASS" start="2026-07-18T02:15:43.400104" elapsed="0.000671"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-07-18T02:05:34.188803" elapsed="609.212011"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.402318" 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-07-18T02:15:43.401675" elapsed="0.000704"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.403655" 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-07-18T02:15:43.403292" elapsed="0.000407"/>
</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-07-18T02:15:43.404070" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-07-18T02:15:43.403828" elapsed="0.000302"/>
</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-07-18T02:15:43.407354" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-18T02:15:43.407097" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-07-18T02:15:43.407077" elapsed="0.000359"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-18T02:15:43.407802" 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-07-18T02:15:43.407937" 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-07-18T02:15:43.407607" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.408524" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.199 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.216" 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-07-18T02:15:43.408101" elapsed="0.000482"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-18T02:15:43.409138" 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-07-18T02:15:43.408723" elapsed="0.000441"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-18T02:15:43.410075" level="INFO">Length is 0.</msg>
<msg time="2026-07-18T02:15:43.410163" 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-07-18T02:15:43.409743" elapsed="0.000443"/>
</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-07-18T02:15:43.410329" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-18T02:15:43.411514" level="INFO">Logging into '10.30.170.216:22' as 'jenkins'.</msg>
<msg time="2026-07-18T02:15:44.016758" 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 Jul 18 02:15:43 UTC 2026

  System load:  0.27               Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.216
  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 Jul 18 02:05:34 2026 from 10.30.170.195
[?2004h[jenkins@releng-48317-783-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-07-18T02:15:43.411162" elapsed="0.605818"/>
</kw>
<msg time="2026-07-18T02:15:44.017070" 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-07-18T02:15:43.410800" elapsed="0.606360"/>
</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-07-18T02:15:43.409367" elapsed="0.607915"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-18T02:15:44.017855" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.199 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-18T02:25:50.058592" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-18T02:25:50.059105" level="INFO">${stdout} = </msg>
<msg time="2026-07-18T02:25:50.059208" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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-07-18T02:15:44.017527" elapsed="606.041737"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T02:25:50.059716" elapsed="0.000698"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.061527" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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.199. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:16:49.139 16  switches: flows:  101659 100021 100428 101541 99895 99400 99263 99721 98731 97960 95630 95736 98182 101295 97898 98162  total = 26.425367 per ms 
02:17:49.240 16  switches: flows:  112072 110168 111426 112095 111926 108792 110966 111894 108894 110849 107921 106170 109029 108544 108167 109035  total = 29.250282 per ms 
02:18:49.340 16  switches: flows:  126495 124180 121920 125117 125915 123064 125023 121893 122831 121472 121672 118105 122800 123556 120838 123179  total = 32.746210 per ms 
02:19:49.441 16  switches: flows:  106889 105654 107614 106874 105455 107405 105718 104855 106892 102879 104870 100248 105986 105450 105813 105237  total = 28.083747 per ms 
02:20:49.541 16  switches: flows:  121207 122561 125474 124748 123372 122720 120399 121672 122550 120377 120595 116185 124096 123748 122284 122919  total = 32.527432 per ms 
02:21:49.641 16  switches: flows:  127734 127462 131471 131148 128135 128393 127644 126714 128671 124847 125219 123347 129709 128723 129387 128177  total = 34.056189 per ms 
02:22:49.741 16  switches: flows:  128289 128021 130883 132123 128774 129061 126995 127807 129202 125804 125877 123624 129056 127294 128655 128498  total = 34.109113 per ms 
02:23:49.842 16  switches: flows:  128928 128569 132145 132167 130455 129317 126883 128699 130004 126588 125443 123890 130263 128226 129809 129267  total = 34.286960 per ms 
02:24:49.942 16  switches: flows:  126609 127546 127034 128156 126763 126786 125905 125172 124848 125638 124111 121377 126465 123997 126818 125230  total = 33.484856 per ms 
02:25:50.042 16  switches: flows:  128966 129755 127749 128907 129834 129654 127692 128640 123759 127225 127678 124706 125381 125235 127527 129328  total = 33.977220 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28083.75/34286.96/32502.45/11044.81 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:25:50.060776" elapsed="0.001039"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-18T02:25:50.062325" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-07-18T02:25:50.062028" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-07-18T02:25:50.061975" elapsed="0.000608"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-18T02:25:50.062793" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-07-18T02:25:50.062711" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-07-18T02:25:50.062676" elapsed="0.000285"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-18T02:25:50.063030" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-07-18T02:25:50.068498" elapsed="0.000521"/>
</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-07-18T02:25:50.069241" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-18T02:25:50.069671" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-18T02:25:50.063702" elapsed="0.006213"/>
</kw>
<msg time="2026-07-18T02:25:50.070105" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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-07-18T02:15:43.404475" elapsed="606.665670"/>
</kw>
<status status="PASS" start="2026-07-18T02:15:43.404157" elapsed="606.666062"/>
</branch>
<status status="PASS" start="2026-07-18T02:15:43.403804" elapsed="606.666450"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.070932" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.199: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.199. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:16:49.139 16  switches: flows:  101659 100021 100428 101541 99895 99400 99263 99721 98731 97960 95630 95736 98182 101295 97898 98162  total = 26.425367 per ms 
02:17:49.240 16  switches: flows:  112072 110168 111426 112095 111926 108792 110966 111894 108894 110849 107921 106170 109029 108544 108167 109035  total = 29.250282 per ms 
02:18:49.340 16  switches: flows:  126495 124180 121920 125117 125915 123064 125023 121893 122831 121472 121672 118105 122800 123556 120838 123179  total = 32.746210 per ms 
02:19:49.441 16  switches: flows:  106889 105654 107614 106874 105455 107405 105718 104855 106892 102879 104870 100248 105986 105450 105813 105237  total = 28.083747 per ms 
02:20:49.541 16  switches: flows:  121207 122561 125474 124748 123372 122720 120399 121672 122550 120377 120595 116185 124096 123748 122284 122919  total = 32.527432 per ms 
02:21:49.641 16  switches: flows:  127734 127462 131471 131148 128135 128393 127644 126714 128671 124847 125219 123347 129709 128723 129387 128177  total = 34.056189 per ms 
02:22:49.741 16  switches: flows:  128289 128021 130883 132123 128774 129061 126995 127807 129202 125804 125877 123624 129056 127294 128655 128498  total = 34.109113 per ms 
02:23:49.842 16  switches: flows:  128928 128569 132145 132167 130455 129317 126883 128699 130004 126588 125443 123890 130263 128226 129809 129267  total = 34.286960 per ms 
02:24:49.942 16  switches: flows:  126609 127546 127034 128156 126763 126786 125905 125172 124848 125638 124111 121377 126465 123997 126818 125230  total = 33.484856 per ms 
02:25:50.042 16  switches: flows:  128966 129755 127749 128907 129834 129654 127692 128640 123759 127225 127678 124706 125381 125235 127527 129328  total = 33.977220 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28083.75/34286.96/32502.45/11044.81 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:25:50.070463" elapsed="0.000577"/>
</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-07-18T02:25:50.071262" elapsed="0.000546"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-18T02:25:50.072399" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-18T02:25:50.072531" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28083.75/34286.96/32502.45/11044.81 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-07-18T02:25:50.072067" elapsed="0.000500"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:25:50.073187" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28083.75/34286.96/32502.45/11044.81 | 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-07-18T02:25:50.072795" elapsed="0.000431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.076822" 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-07-18T02:25:50.073440" elapsed="0.003486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.080208" level="INFO">28083.75/34286.96/32502.45/11044.81</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:25:50.077145" elapsed="0.003121"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:25:50.082642" 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-07-18T02:25:50.080417" elapsed="0.002252"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-18T02:25:50.085106" level="INFO">@{result_value_list} = [ 28083.75 | 34286.96 | 32502.45 | 11044.81 ]</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-07-18T02:25:50.082886" elapsed="0.002248"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.085604" level="INFO">Length is 4.</msg>
<msg time="2026-07-18T02:25:50.085693" 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-07-18T02:25:50.085291" elapsed="0.000425"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.090458" level="INFO">min :: 28083.75</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-18T02:25:50.086124" elapsed="0.004410"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-18T02:25:50.085994" elapsed="0.004575"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.095123" level="INFO">max :: 34286.96</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-07-18T02:25:50.090782" elapsed="0.004397"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-18T02:25:50.090656" elapsed="0.004557"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.099829" level="INFO">avg :: 32502.45</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-07-18T02:25:50.095422" elapsed="0.004479"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-18T02:25:50.095295" elapsed="0.004642"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.104586" level="INFO">stdev :: 11044.81</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-07-18T02:25:50.100147" elapsed="0.004494"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-18T02:25:50.100019" elapsed="0.004656"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-18T02:25:50.085785" elapsed="0.018921"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.108848" level="INFO">${min} = 28083.75</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-07-18T02:25:50.104862" elapsed="0.004037"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.112816" level="INFO">${max} = 34286.96</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-07-18T02:25:50.109056" elapsed="0.003787"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.116789" level="INFO">${average} = 32502.45</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-07-18T02:25:50.113014" elapsed="0.003801"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.120757" level="INFO">${stdev} = 11044.81</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-07-18T02:25:50.116983" elapsed="0.003800"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.121322" level="INFO">${date} = 2026-07-18 02:25:50</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-18T02:25:50.120961" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.121916" level="INFO">CBench Result: 2026-07-18 02:25:50,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28083.75,34286.96,32502.45,11044.81</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-07-18T02:25:50.121494" elapsed="0.000477"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-18T02:25:50.123102" 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-07-18T02:25:50.122624" elapsed="0.000546"/>
</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-07-18T02:25:50.123321" elapsed="0.000462"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-18T02:25:50.122123" elapsed="0.001725"/>
</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-07-18T02:15:43.402697" elapsed="606.721229"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.124384" 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-07-18T02:25:50.124074" elapsed="0.000367"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-18T02:25:50.125642" 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-07-18T02:25:50.125168" elapsed="0.000501"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-07-18T02:25:50.125912" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-07-18T02:25:50.125747" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-07-18T02:25:50.125727" elapsed="0.000275"/>
</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-07-18T02:25:50.126148" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-07-18T02:25:50.126307" elapsed="0.000021"/>
</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-07-18T02:25:50.126469" elapsed="0.000038"/>
</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-07-18T02:25:50.126694" elapsed="0.000022"/>
</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-07-18T02:25:50.126848" elapsed="0.000034"/>
</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-07-18T02:25:50.127013" 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-07-18T02:25:50.127165" elapsed="0.000020"/>
</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-07-18T02:25:50.127401" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-18T02:25:50.127254" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-07-18T02:25:50.127237" elapsed="0.000240"/>
</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-07-18T02:25:50.124812" elapsed="0.002721"/>
</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-07-18T02:15:43.401124" elapsed="606.726465"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-07-18T01:55:24.793924" elapsed="1825.334264"/>
</suite>
<statistics>
<total>
<stat pass="3" fail="0" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="3" fail="0" skip="0">cbench</stat>
<stat pass="2" fail="0" skip="0">latency</stat>
<stat pass="1" fail="0" skip="0">throughput</stat>
</tag>
<suite>
<stat name="openflowplugin-cbench.txt" id="s1" pass="3" fail="0" skip="0">openflowplugin-cbench.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
