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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-10-17T01:09:52.903072" elapsed="0.688898"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-17T01:09:53.641848" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-17T01:09:53.592290" elapsed="0.049627"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-17T01:09:53.643883" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-17T01:09:53.644024" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-10-17T01:09:53.642092" elapsed="0.001967"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-17T01:09:53.644227" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:09:53.644602" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:09:53.645389" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:09:53.645028" elapsed="0.000427"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-17T01:09:53.645506" elapsed="0.000058"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.208
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-17T01:09:52.901715" elapsed="0.743961"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-10-17T01:09:52.900061" elapsed="0.745694"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-17T01:09:53.646366" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-17T01:09:53.645989" elapsed="0.000432"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-17T01:09:53.646821" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-17T01:09:53.646572" elapsed="0.000321"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-17T01:09:53.647541" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-17T01:09:53.647081" elapsed="0.000487"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-17T01:09:53.648142" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-17T01:09:53.647796" elapsed="0.000387"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-17T01:09:53.648700" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-17T01:09:53.648367" elapsed="0.000359"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-17T01:09:53.649313" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-17T01:09:53.648976" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="NOT RUN" start="2026-10-17T01:09:53.649663" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:09:53.649464" elapsed="0.000249"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-17T01:09:53.652247" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:09:53.651788" elapsed="0.000493"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-17T01:09:53.653666" level="INFO">Length is 0.</msg>
<msg time="2026-10-17T01:09:53.653765" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-17T01:09:53.652935" elapsed="0.000854"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:09:53.653960" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-17T01:09:53.655487" level="INFO">Logging into '10.30.171.243:22' as 'jenkins'.</msg>
<msg time="2026-10-17T01:09:54.190403" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sat Oct 17 01:09:23 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


[?2004h[jenkins@releng-48317-869-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-17T01:09:53.654939" elapsed="0.535629"/>
</kw>
<msg time="2026-10-17T01:09:54.190658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:09:53.654547" elapsed="0.536224"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-17T01:09:53.652543" elapsed="0.538352"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.201456" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-10-17T01:09:54.191130" elapsed="0.012389"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:09:54.203772" elapsed="0.000430"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-10-17T01:09:53.651163" elapsed="0.553121"/>
</kw>
<status status="PASS" start="2026-10-17T01:09:53.649816" elapsed="0.554535"/>
</branch>
<status status="PASS" start="2026-10-17T01:09:53.649436" elapsed="0.554963"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-10-17T01:09:54.204635" elapsed="0.000752"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-17T01:09:54.208179" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-10-17T01:09:54.208027" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-10-17T01:09:54.207984" elapsed="0.000299"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-17T01:09:54.210543" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-10-17T01:09:54.210413" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-10-17T01:09:54.210387" elapsed="0.000248"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:09:54.210918" elapsed="0.000544"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.212056" level="INFO">Logging into '10.30.171.208:8101' as 'karaf'.</msg>
<msg time="2026-10-17T01:09:54.440395" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-10-17T01:09:54.211705" elapsed="0.228786"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.541272" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-17T01:09:54.440668" elapsed="0.100684"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.553434" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-17T01:09:54.553613" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-10-17T01:09:54.541510" elapsed="0.012132"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-17T01:09:54.553811" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:09:54.554202" elapsed="0.000180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:09:54.554844" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:09:54.554559" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-17T01:09:54.554964" elapsed="0.000042"/>
</return>
<msg time="2026-10-17T01:09:54.555127" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.208
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-17T01:09:54.209991" elapsed="0.345166"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-17T01:09:54.555311" elapsed="0.000534"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-17T01:09:54.555893" elapsed="0.000032"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-10-17T01:09:54.207594" elapsed="0.348410"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-17T01:09:54.557653" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-17T01:09:54.557555" elapsed="0.000143"/>
</branch>
<status status="PASS" start="2026-10-17T01:09:54.557533" elapsed="0.000187"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:09:54.557892" elapsed="0.000342"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.558625" level="INFO">Logging into '10.30.171.208:8101' as 'karaf'.</msg>
<msg time="2026-10-17T01:09:54.759981" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-10-17T01:09:54.558426" elapsed="0.201658"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.787506" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-17T01:09:54.760265" elapsed="0.027302"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.789996" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-17T01:09:54.790097" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-10-17T01:09:54.787724" elapsed="0.002401"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-17T01:09:54.790267" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:09:54.790601" elapsed="0.000185"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:09:54.791251" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:09:54.790993" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-17T01:09:54.791363" elapsed="0.000043"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.208
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-17T01:09:54.557270" elapsed="0.234223"/>
</kw>
<status status="PASS" start="2026-10-17T01:09:52.897963" elapsed="1.893586"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:09:54.793544" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:09:54.792847" elapsed="0.000757"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-17T01:09:54.795294" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-17T01:09:54.794971" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-17T01:09:54.795664" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:09:54.795435" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-17T01:09:54.796875" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:09:54.796643" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-10-17T01:09:54.796624" elapsed="0.000327"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.797319" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-17T01:09:54.797130" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:09:54.798060" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.208 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.243" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:09:54.797653" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.798722" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:09:54.798293" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-17T01:09:54.799660" level="INFO">Length is 0.</msg>
<msg time="2026-10-17T01:09:54.799759" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-17T01:09:54.799356" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:09:54.799965" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-17T01:09:54.801156" level="INFO">Logging into '10.30.171.243:22' as 'jenkins'.</msg>
<msg time="2026-10-17T01:09:55.221280" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sat Oct 17 01:09:23 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Sat Oct 17 01:09:54 2026 from 10.30.170.119
[?2004h[jenkins@releng-48317-869-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-17T01:09:54.800851" elapsed="0.420579"/>
</kw>
<msg time="2026-10-17T01:09:55.221495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:09:54.800442" elapsed="0.421126"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-17T01:09:54.798996" elapsed="0.422675"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-17T01:09:55.222138" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.208 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-17T01:20:01.359441" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-17T01:20:01.359972" level="INFO">${stdout} = </msg>
<msg time="2026-10-17T01:20:01.360070" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208: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-10-17T01:09:55.221908" elapsed="606.138218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:20:01.360598" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.362430" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.208. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:11:00.461 16  switches: flows:  105817 103036 102447 102241 101807 101806 101764 100276 96986 95490 95502 97594 96111 98146 95337 95920  total = 26.504667 per ms 
01:12:00.561 16  switches: flows:  119549 117929 117864 115930 115639 114069 114603 112177 107772 108190 108068 108785 107354 109310 108478 107851  total = 29.842968 per ms 
01:13:00.661 16  switches: flows:  119543 116420 117073 114370 115771 112832 114419 112684 108837 106721 108153 108771 107382 108377 108369 106469  total = 29.720263 per ms 
01:14:00.761 16  switches: flows:  116595 117024 115693 113242 114701 113545 112072 112072 106805 107189 107116 108450 108378 108116 106417 105693  total = 29.502582 per ms 
01:15:00.861 16  switches: flows:  117794 117481 116552 114591 114169 113232 111315 111468 107687 107909 107548 108128 106410 108594 105592 105550  total = 29.517746 per ms 
01:16:00.961 16  switches: flows:  117800 117941 117811 117100 115750 112577 112325 112024 109077 108380 107814 109804 108483 108616 107699 106717  total = 29.782278 per ms 
01:17:01.062 16  switches: flows:  116197 115973 115590 112839 112211 111473 110091 109645 105600 106793 105936 107460 107616 106765 105837 105129  total = 29.203853 per ms 
01:18:01.162 16  switches: flows:  118959 116830 118982 115592 113817 115118 114250 110569 108026 108159 108880 110617 107663 109786 108870 107936  total = 29.851052 per ms 
01:19:01.262 16  switches: flows:  119425 115477 117060 111839 113387 113020 112502 111028 107353 107197 106701 106983 108966 108427 108128 108084  total = 29.543658 per ms 
01:20:01.362 16  switches: flows:  112066 109194 112285 108486 106267 108202 106472 105085 102068 103771 102288 103417 102618 104670 104704 102563  total = 28.188898 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28188.90/29851.05/29461.48/9832.73 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.361725" elapsed="0.000949"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-17T01:20:01.363142" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-10-17T01:20:01.362895" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-17T01:20:01.362814" elapsed="0.000571"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-17T01:20:01.363580" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-10-17T01:20:01.363507" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-10-17T01:20:01.363474" elapsed="0.000234"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-17T01:20:01.363775" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:20:01.365427" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:20:01.366504" elapsed="0.000327"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:20:01.367131" elapsed="0.000198"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-17T01:20:01.364492" elapsed="0.002974"/>
</kw>
<msg time="2026-10-17T01:20:01.367696" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208: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-10-17T01:09:54.796122" elapsed="606.571628"/>
</kw>
<status status="PASS" start="2026-10-17T01:09:54.795762" elapsed="606.572084"/>
</branch>
<status status="PASS" start="2026-10-17T01:09:54.795412" elapsed="606.572506"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.368952" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.208. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:11:00.461 16  switches: flows:  105817 103036 102447 102241 101807 101806 101764 100276 96986 95490 95502 97594 96111 98146 95337 95920  total = 26.504667 per ms 
01:12:00.561 16  switches: flows:  119549 117929 117864 115930 115639 114069 114603 112177 107772 108190 108068 108785 107354 109310 108478 107851  total = 29.842968 per ms 
01:13:00.661 16  switches: flows:  119543 116420 117073 114370 115771 112832 114419 112684 108837 106721 108153 108771 107382 108377 108369 106469  total = 29.720263 per ms 
01:14:00.761 16  switches: flows:  116595 117024 115693 113242 114701 113545 112072 112072 106805 107189 107116 108450 108378 108116 106417 105693  total = 29.502582 per ms 
01:15:00.861 16  switches: flows:  117794 117481 116552 114591 114169 113232 111315 111468 107687 107909 107548 108128 106410 108594 105592 105550  total = 29.517746 per ms 
01:16:00.961 16  switches: flows:  117800 117941 117811 117100 115750 112577 112325 112024 109077 108380 107814 109804 108483 108616 107699 106717  total = 29.782278 per ms 
01:17:01.062 16  switches: flows:  116197 115973 115590 112839 112211 111473 110091 109645 105600 106793 105936 107460 107616 106765 105837 105129  total = 29.203853 per ms 
01:18:01.162 16  switches: flows:  118959 116830 118982 115592 113817 115118 114250 110569 108026 108159 108880 110617 107663 109786 108870 107936  total = 29.851052 per ms 
01:19:01.262 16  switches: flows:  119425 115477 117060 111839 113387 113020 112502 111028 107353 107197 106701 106983 108966 108427 108128 108084  total = 29.543658 per ms 
01:20:01.362 16  switches: flows:  112066 109194 112285 108486 106267 108202 106472 105085 102068 103771 102288 103417 102618 104670 104704 102563  total = 28.188898 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28188.90/29851.05/29461.48/9832.73 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.368310" elapsed="0.000797"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-17T01:20:01.369483" elapsed="0.000754"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-17T01:20:01.371097" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-17T01:20:01.371285" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28188.90/29851.05/29461.48/9832.73 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given `string` that contain the `pattern`.</doc>
<status status="PASS" start="2026-10-17T01:20:01.370642" elapsed="0.000723"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:20:01.372224" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28188.90/29851.05/29461.48/9832.73 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:20:01.371722" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.373555" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.372717" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.374811" level="INFO">28188.90/29851.05/29461.48/9832.73</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.374096" elapsed="0.000853"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:20:01.375960" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:20:01.375288" elapsed="0.000728"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:20:01.377097" level="INFO">@{result_value_list} = [ 28188.90 | 29851.05 | 29461.48 | 9832.73 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:20:01.376458" elapsed="0.000694"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.378183" level="INFO">Length is 4.</msg>
<msg time="2026-10-17T01:20:01.378411" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-17T01:20:01.377518" elapsed="0.000945"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.380278" level="INFO">min :: 28188.90</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.379317" elapsed="0.001109"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-17T01:20:01.378939" elapsed="0.001557"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.382011" level="INFO">max :: 29851.05</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.381068" elapsed="0.001056"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-17T01:20:01.380677" elapsed="0.001515"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.383704" level="INFO">avg :: 29461.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.382766" elapsed="0.001051"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-17T01:20:01.382395" elapsed="0.001517"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.385480" level="INFO">stdev :: 9832.73</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.384543" elapsed="0.001049"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-17T01:20:01.384092" elapsed="0.001569"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-17T01:20:01.378588" elapsed="0.007139"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.386978" level="INFO">${min} = 28188.90</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:20:01.386093" elapsed="0.000940"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.388253" level="INFO">${max} = 29851.05</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:20:01.387393" elapsed="0.000914"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.389552" level="INFO">${average} = 29461.48</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:20:01.388669" elapsed="0.000936"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.390803" level="INFO">${stdev} = 9832.73</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:20:01.389953" elapsed="0.000927"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.392059" level="INFO">${date} = 2026-10-17 01:20:01</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-17T01:20:01.391299" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.393273" level="INFO">CBench Result: 2026-10-17 01:20:01,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28188.90,29851.05,29461.48,9832.73</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.392543" elapsed="0.000875"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-17T01:20:01.395590" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-17T01:20:01.394585" elapsed="0.001141"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-10-17T01:20:01.396116" elapsed="0.000910"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-17T01:20:01.393681" elapsed="0.003475"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-10-17T01:09:54.794376" elapsed="606.602896"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.398274" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-17T01:20:01.397626" elapsed="0.000790"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-10-17T01:20:01.399506" elapsed="0.000571"/>
</kw>
<status status="PASS" start="2026-10-17T01:20:01.398817" elapsed="0.001403"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-10-17T01:09:54.791681" elapsed="606.608609"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.402917" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.402184" elapsed="0.000849"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.405171" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-17T01:20:01.404674" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-17T01:20:01.405726" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:20:01.405416" elapsed="0.000384"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-17T01:20:01.407452" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:20:01.407123" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-17T01:20:01.407098" elapsed="0.000457"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-17T01:20:01.408087" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-17T01:20:01.407825" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.409023" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.208 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.243" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:20:01.408552" elapsed="0.000546"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-17T01:20:01.409784" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:20:01.409319" elapsed="0.000498"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-17T01:20:01.411002" level="INFO">Length is 0.</msg>
<msg time="2026-10-17T01:20:01.411116" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-17T01:20:01.410598" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:20:01.411361" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-17T01:20:01.413284" level="INFO">Logging into '10.30.171.243:22' as 'jenkins'.</msg>
<msg time="2026-10-17T01:20:02.067837" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sat Oct 17 01:20:01 UTC 2026

  System load:  1.0                Processes:             105
  Usage of /:   20.1% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.243
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Sat Oct 17 01:09:55 2026 from 10.30.170.119
[?2004h[jenkins@releng-48317-869-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-17T01:20:01.412900" elapsed="0.655126"/>
</kw>
<msg time="2026-10-17T01:20:02.068115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:20:01.412022" elapsed="0.656187"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-17T01:20:01.410085" elapsed="0.658261"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-17T01:20:02.068824" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.208 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-17T01:30:08.121304" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-17T01:30:08.121884" level="INFO">${stdout} = </msg>
<msg time="2026-10-17T01:30:08.121981" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-17T01:20:02.068599" elapsed="606.053434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:30:08.122484" elapsed="0.000634"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.124384" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.208. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:21:07.208 16  switches: flows:  679560 668609 678954 673288 697495 679906 666867 683433 669517 674480 681271 670027 678405 661361 681708 670926  total = 180.263450 per ms 
01:22:07.309 16  switches: flows:  657212 655527 652009 650226 655608 647765 657084 646551 650771 655396 648281 651909 651358 652923 652904 644837  total = 173.546184 per ms 
01:23:07.410 16  switches: flows:  629282 626129 638536 627528 631078 625618 623820 629663 628159 631819 628270 631385 633377 630000 632981 622268  total = 167.550493 per ms 
01:24:07.512 16  switches: flows:  591513 598408 597250 593466 594241 595481 591650 596003 595844 595346 600880 595078 591834 598441 589314 599994  total = 158.479598 per ms 
01:25:07.615 16  switches: flows:  593337 590197 596279 587741 591172 596231 589828 591819 592471 592887 589517 589025 592306 601142 589956 590449  total = 157.636216 per ms 
01:26:07.717 16  switches: flows:  620411 627358 617260 622462 631316 619665 630699 620271 620962 622627 623624 623235 626724 612356 624057 627345  total = 165.892933 per ms 
01:27:07.818 16  switches: flows:  631321 620172 623256 633065 623260 624642 622369 631609 629476 618322 628562 623513 627054 621155 624661 630570  total = 166.603381 per ms 
01:28:07.920 16  switches: flows:  661374 653897 658512 657883 653255 655909 656250 658625 648570 652853 649100 653107 654458 654298 661781 651741  total = 174.400142 per ms 
01:29:08.020 16  switches: flows:  630994 629738 630699 623894 625249 622532 618245 629951 620855 621841 615414 617911 625458 628285 628318 622465  total = 166.251771 per ms 
01:30:08.121 16  switches: flows:  598438 601749 607193 596032 603725 599790 598688 604804 592725 601048 601404 601785 595704 599156 602590 599021  total = 159.796312 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 157636.22/174400.14/165573.00/55485.86 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.123608" elapsed="0.001110"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-17T01:30:08.125124" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-10-17T01:30:08.124883" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-17T01:30:08.124834" elapsed="0.000526"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-17T01:30:08.125555" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-17T01:30:08.125481" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-10-17T01:30:08.125448" elapsed="0.000254"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-17T01:30:08.125764" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:30:08.127287" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:30:08.128372" elapsed="0.000361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:30:08.129011" elapsed="0.000206"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-17T01:30:08.126427" elapsed="0.002895"/>
</kw>
<msg time="2026-10-17T01:30:08.129578" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-17T01:20:01.406244" elapsed="606.723409"/>
</kw>
<status status="PASS" start="2026-10-17T01:20:01.405832" elapsed="606.723918"/>
</branch>
<status status="PASS" start="2026-10-17T01:20:01.405386" elapsed="606.724411"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.130816" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.208. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:21:07.208 16  switches: flows:  679560 668609 678954 673288 697495 679906 666867 683433 669517 674480 681271 670027 678405 661361 681708 670926  total = 180.263450 per ms 
01:22:07.309 16  switches: flows:  657212 655527 652009 650226 655608 647765 657084 646551 650771 655396 648281 651909 651358 652923 652904 644837  total = 173.546184 per ms 
01:23:07.410 16  switches: flows:  629282 626129 638536 627528 631078 625618 623820 629663 628159 631819 628270 631385 633377 630000 632981 622268  total = 167.550493 per ms 
01:24:07.512 16  switches: flows:  591513 598408 597250 593466 594241 595481 591650 596003 595844 595346 600880 595078 591834 598441 589314 599994  total = 158.479598 per ms 
01:25:07.615 16  switches: flows:  593337 590197 596279 587741 591172 596231 589828 591819 592471 592887 589517 589025 592306 601142 589956 590449  total = 157.636216 per ms 
01:26:07.717 16  switches: flows:  620411 627358 617260 622462 631316 619665 630699 620271 620962 622627 623624 623235 626724 612356 624057 627345  total = 165.892933 per ms 
01:27:07.818 16  switches: flows:  631321 620172 623256 633065 623260 624642 622369 631609 629476 618322 628562 623513 627054 621155 624661 630570  total = 166.603381 per ms 
01:28:07.920 16  switches: flows:  661374 653897 658512 657883 653255 655909 656250 658625 648570 652853 649100 653107 654458 654298 661781 651741  total = 174.400142 per ms 
01:29:08.020 16  switches: flows:  630994 629738 630699 623894 625249 622532 618245 629951 620855 621841 615414 617911 625458 628285 628318 622465  total = 166.251771 per ms 
01:30:08.121 16  switches: flows:  598438 601749 607193 596032 603725 599790 598688 604804 592725 601048 601404 601785 595704 599156 602590 599021  total = 159.796312 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 157636.22/174400.14/165573.00/55485.86 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.130185" elapsed="0.000784"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-17T01:30:08.131311" elapsed="0.000751"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-17T01:30:08.132890" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-17T01:30:08.133071" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 157636.22/174400.14/165573.00/55485.86 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given `string` that contain the `pattern`.</doc>
<status status="PASS" start="2026-10-17T01:30:08.132460" elapsed="0.000662"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:30:08.134068" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 157636.22/174400.14/165573.00/55485.86 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:30:08.133553" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.135252" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.134562" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.136514" level="INFO">157636.22/174400.14/165573.00/55485.86</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.135812" elapsed="0.000813"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:30:08.137651" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:30:08.136981" elapsed="0.000727"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:30:08.138783" level="INFO">@{result_value_list} = [ 157636.22 | 174400.14 | 165573.00 | 55485.86 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:30:08.138118" elapsed="0.000720"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.139826" level="INFO">Length is 4.</msg>
<msg time="2026-10-17T01:30:08.139999" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-17T01:30:08.139171" elapsed="0.000877"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.141861" level="INFO">min :: 157636.22</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.140930" elapsed="0.001041"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-17T01:30:08.140539" elapsed="0.001497"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.143884" level="INFO">max :: 174400.14</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.142885" elapsed="0.001110"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-17T01:30:08.142238" elapsed="0.001823"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.145569" level="INFO">avg :: 165573.00</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.144622" elapsed="0.001085"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-17T01:30:08.144228" elapsed="0.001546"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.147222" level="INFO">stdev :: 55485.86</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.146309" elapsed="0.001053"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-17T01:30:08.145941" elapsed="0.001513"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-17T01:30:08.140167" elapsed="0.007351"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.148782" level="INFO">${min} = 157636.22</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:30:08.147891" elapsed="0.000944"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.150043" level="INFO">${max} = 174400.14</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:30:08.149166" elapsed="0.000930"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.151318" level="INFO">${average} = 165573.00</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:30:08.150474" elapsed="0.000927"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.152700" level="INFO">${stdev} = 55485.86</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:30:08.151749" elapsed="0.001005"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.153919" level="INFO">${date} = 2026-10-17 01:30:08</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-17T01:30:08.153155" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.155150" level="INFO">CBench Result: 2026-10-17 01:30:08,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,157636.22,174400.14,165573.00,55485.86</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.154422" elapsed="0.000838"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-17T01:30:08.157244" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-17T01:30:08.156545" elapsed="0.000882"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-10-17T01:30:08.157797" elapsed="0.001191"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-17T01:30:08.155592" elapsed="0.003528"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-10-17T01:20:01.403663" elapsed="606.755575"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.160274" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-17T01:30:08.159584" elapsed="0.000859"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-10-17T01:30:08.161555" elapsed="0.000621"/>
</kw>
<status status="PASS" start="2026-10-17T01:30:08.160893" elapsed="0.001497"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-10-17T01:20:01.400903" elapsed="606.761583"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.166126" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.165013" elapsed="0.001188"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.167948" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-17T01:30:08.167487" elapsed="0.000519"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-17T01:30:08.168488" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:30:08.168151" elapsed="0.000415"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-17T01:30:08.170086" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:30:08.169787" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-10-17T01:30:08.169761" elapsed="0.000431"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-17T01:30:08.170729" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-17T01:30:08.170473" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.171667" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.208 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.243" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:30:08.171155" elapsed="0.000588"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-17T01:30:08.172430" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:30:08.171967" elapsed="0.000497"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-17T01:30:08.173611" level="INFO">Length is 0.</msg>
<msg time="2026-10-17T01:30:08.173737" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-17T01:30:08.173192" elapsed="0.000575"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:30:08.173950" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-17T01:30:08.175511" level="INFO">Logging into '10.30.171.243:22' as 'jenkins'.</msg>
<msg time="2026-10-17T01:30:08.783065" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Sat Oct 17 01:30:08 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Sat Oct 17 01:20:02 2026 from 10.30.170.119
[?2004h[jenkins@releng-48317-869-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-17T01:30:08.175084" elapsed="0.608198"/>
</kw>
<msg time="2026-10-17T01:30:08.783403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:30:08.174575" elapsed="0.608925"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-17T01:30:08.172726" elapsed="0.610925"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-17T01:30:08.784312" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.208 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-17T01:40:14.928293" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-17T01:40:14.928782" level="INFO">${stdout} = </msg>
<msg time="2026-10-17T01:40:14.928880" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208: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-10-17T01:30:08.783973" elapsed="606.144960"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:40:14.929326" elapsed="0.000657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.931138" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.208. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:31:14.030 16  switches: flows:  127686 113246 111591 111623 109098 110350 108342 107509 104589 102815 105151 104741 104552 102846 102545 102861  total = 28.825750 per ms 
01:32:14.130 16  switches: flows:  107885 111864 109210 111070 106459 109423 109748 106503 105523 100868 107204 102349 105277 101360 102079 103240  total = 28.287170 per ms 
01:33:14.230 16  switches: flows:  110288 115102 109100 112299 108130 111384 110680 108811 108342 102381 108374 103210 107455 103084 103652 105998  total = 28.756852 per ms 
01:34:14.330 16  switches: flows:  112919 115051 111137 113626 111225 111843 112865 109396 108606 105173 107907 104662 107793 102749 104259 106739  total = 29.050698 per ms 
01:35:14.431 16  switches: flows:  116505 120800 115506 116111 114990 115380 114603 111544 111219 108713 110924 106065 111756 106783 106491 108495  total = 29.881562 per ms 
01:36:14.531 16  switches: flows:  113467 115963 113121 113019 110754 113493 112437 108633 109785 104334 108218 104165 108652 104750 104918 105688  total = 29.141318 per ms 
01:37:14.631 16  switches: flows:  114786 116422 112828 113537 110603 113721 112098 108752 107927 105134 108254 104749 107605 104195 104141 106371  total = 29.136740 per ms 
01:38:14.731 16  switches: flows:  112295 115287 111720 112433 110378 113039 112273 107819 107727 104144 107479 103826 107048 103389 104744 106328  total = 28.950510 per ms 
01:39:14.831 16  switches: flows:  110625 113262 109934 111173 109915 112823 111729 107648 106062 103996 106940 103499 107860 104253 103819 106266  total = 28.782034 per ms 
01:40:14.932 16  switches: flows:  116338 117590 115642 115351 112532 114613 116303 112108 110248 105830 109707 105807 108216 106256 107590 108525  total = 29.661437 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28287.17/29881.56/29072.04/9701.14 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.930457" elapsed="0.000976"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-17T01:40:14.931868" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-10-17T01:40:14.931599" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-17T01:40:14.931549" elapsed="0.000507"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-17T01:40:14.932248" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-10-17T01:40:14.932174" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-10-17T01:40:14.932141" elapsed="0.000268"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-17T01:40:14.932472" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-17T01:40:14.934026" elapsed="0.000749"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-17T01:40:14.935171" elapsed="0.000349"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-17T01:40:14.935818" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-17T01:40:14.933125" elapsed="0.003002"/>
</kw>
<msg time="2026-10-17T01:40:14.936382" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208: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-10-17T01:30:08.169028" elapsed="606.767412"/>
</kw>
<status status="PASS" start="2026-10-17T01:30:08.168601" elapsed="606.767937"/>
</branch>
<status status="PASS" start="2026-10-17T01:30:08.168121" elapsed="606.768466"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.937613" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.208:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.208. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:31:14.030 16  switches: flows:  127686 113246 111591 111623 109098 110350 108342 107509 104589 102815 105151 104741 104552 102846 102545 102861  total = 28.825750 per ms 
01:32:14.130 16  switches: flows:  107885 111864 109210 111070 106459 109423 109748 106503 105523 100868 107204 102349 105277 101360 102079 103240  total = 28.287170 per ms 
01:33:14.230 16  switches: flows:  110288 115102 109100 112299 108130 111384 110680 108811 108342 102381 108374 103210 107455 103084 103652 105998  total = 28.756852 per ms 
01:34:14.330 16  switches: flows:  112919 115051 111137 113626 111225 111843 112865 109396 108606 105173 107907 104662 107793 102749 104259 106739  total = 29.050698 per ms 
01:35:14.431 16  switches: flows:  116505 120800 115506 116111 114990 115380 114603 111544 111219 108713 110924 106065 111756 106783 106491 108495  total = 29.881562 per ms 
01:36:14.531 16  switches: flows:  113467 115963 113121 113019 110754 113493 112437 108633 109785 104334 108218 104165 108652 104750 104918 105688  total = 29.141318 per ms 
01:37:14.631 16  switches: flows:  114786 116422 112828 113537 110603 113721 112098 108752 107927 105134 108254 104749 107605 104195 104141 106371  total = 29.136740 per ms 
01:38:14.731 16  switches: flows:  112295 115287 111720 112433 110378 113039 112273 107819 107727 104144 107479 103826 107048 103389 104744 106328  total = 28.950510 per ms 
01:39:14.831 16  switches: flows:  110625 113262 109934 111173 109915 112823 111729 107648 106062 103996 106940 103499 107860 104253 103819 106266  total = 28.782034 per ms 
01:40:14.932 16  switches: flows:  116338 117590 115642 115351 112532 114613 116303 112108 110248 105830 109707 105807 108216 106256 107590 108525  total = 29.661437 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 28287.17/29881.56/29072.04/9701.14 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.936999" elapsed="0.000790"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-17T01:40:14.938134" elapsed="0.000770"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-17T01:40:14.939716" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-17T01:40:14.939928" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 28287.17/29881.56/29072.04/9701.14 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given `string` that contain the `pattern`.</doc>
<status status="PASS" start="2026-10-17T01:40:14.939275" elapsed="0.000705"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:40:14.940863" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 28287.17/29881.56/29072.04/9701.14 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:40:14.940327" elapsed="0.000593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.942068" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.941327" elapsed="0.000855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.943303" level="INFO">28287.17/29881.56/29072.04/9701.14</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.942613" elapsed="0.000839"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:40:14.944467" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:40:14.943817" elapsed="0.000706"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-17T01:40:14.945615" level="INFO">@{result_value_list} = [ 28287.17 | 29881.56 | 29072.04 | 9701.14 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-17T01:40:14.944967" elapsed="0.000702"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.946672" level="INFO">Length is 4.</msg>
<msg time="2026-10-17T01:40:14.946869" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-17T01:40:14.946037" elapsed="0.000881"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.948761" level="INFO">min :: 28287.17</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.947819" elapsed="0.001058"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-17T01:40:14.947397" elapsed="0.001549"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.950474" level="INFO">max :: 29881.56</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.949534" elapsed="0.001052"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-17T01:40:14.949113" elapsed="0.001541"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.952118" level="INFO">avg :: 29072.04</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.951192" elapsed="0.001037"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-17T01:40:14.950832" elapsed="0.001464"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.953832" level="INFO">stdev :: 9701.14</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.952886" elapsed="0.001055"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-17T01:40:14.952503" elapsed="0.001506"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-17T01:40:14.947042" elapsed="0.007025"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.955292" level="INFO">${min} = 28287.17</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:40:14.954439" elapsed="0.000938"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.956591" level="INFO">${max} = 29881.56</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:40:14.955714" elapsed="0.000930"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.957872" level="INFO">${average} = 29072.04</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:40:14.956997" elapsed="0.000929"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.959142" level="INFO">${stdev} = 9701.14</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-17T01:40:14.958256" elapsed="0.000940"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.960384" level="INFO">${date} = 2026-10-17 01:40:14</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-17T01:40:14.959632" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.961609" level="INFO">CBench Result: 2026-10-17 01:40:14,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,28287.17,29881.56,29072.04,9701.14</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-17T01:40:14.960885" elapsed="0.000836"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-17T01:40:14.963692" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-17T01:40:14.962928" elapsed="0.000929"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-10-17T01:40:14.964210" elapsed="0.001258"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-17T01:40:14.962003" elapsed="0.003597"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-10-17T01:30:08.166677" elapsed="606.799040"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.966712" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-17T01:40:14.966056" elapsed="0.000795"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-17T01:40:14.969393" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-17T01:40:14.968395" elapsed="0.001056"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-10-17T01:40:14.969871" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-10-17T01:40:14.969605" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-17T01:40:14.969564" elapsed="0.000488"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.970454" elapsed="0.000048"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.970813" elapsed="0.000043"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.971183" elapsed="0.000041"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.971635" elapsed="0.000043"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.972052" elapsed="0.000046"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.972398" elapsed="0.000026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.972657" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds The given `tags` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-10-17T01:40:14.972960" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-10-17T01:40:14.972774" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-10-17T01:40:14.972750" elapsed="0.000304"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-10-17T01:40:14.967603" elapsed="0.005515"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-10-17T01:30:08.163139" elapsed="606.810034"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-10-17T01:09:52.420042" elapsed="1822.553964"/>
</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>
