<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-12T01:05:08.836203" 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-12T01:05:09.357071" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-10-12T01:05:09.356955" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-10-12T01:05:09.356926" elapsed="0.000241"/>
</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-12T01:05:09.357354" elapsed="0.000439"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-12T01:05:09.358271" level="INFO">Logging into '10.30.171.46:8101' as 'karaf'.</msg>
<msg time="2026-10-12T01:05:10.054595" 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-12T01:05:09.358021" elapsed="0.696758"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.103486" 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-12T01:05:10.055079" elapsed="0.048475"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.105391" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-12T01:05:10.105501" 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-12T01:05:10.103739" elapsed="0.001790"/>
</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-12T01:05:10.105683" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:05:10.106042" elapsed="0.000206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:05:10.106761" 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-12T01:05:10.106446" elapsed="0.000364"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-12T01:05:10.106880" elapsed="0.000054"/>
</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.46
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-12T01:05:09.356599" elapsed="0.750438"/>
</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-12T01:05:09.354821" elapsed="0.752274"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-12T01:05:10.107619" 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-12T01:05:10.107271" elapsed="0.000401"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-12T01:05:10.108099" 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-12T01:05:10.107821" elapsed="0.000332"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-12T01:05:10.108767" 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-12T01:05:10.108338" elapsed="0.000456"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-12T01:05:10.109334" 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-12T01:05:10.109010" elapsed="0.000365"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-12T01:05:10.109877" 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-12T01:05:10.109535" elapsed="0.000368"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-12T01:05:10.110383" 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-12T01:05:10.110084" elapsed="0.000338"/>
</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-12T01:05:10.110692" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:05:10.110504" elapsed="0.000238"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.112834" 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-12T01:05:10.112490" elapsed="0.000387"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-12T01:05:10.113980" level="INFO">Length is 0.</msg>
<msg time="2026-10-12T01:05:10.114057" 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-12T01:05:10.113385" elapsed="0.000695"/>
</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-12T01:05:10.114217" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.115380" level="INFO">Logging into '10.30.170.120:22' as 'jenkins'.</msg>
<msg time="2026-10-12T01:05:10.607670" 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 Mon Oct 12 01:04:30 UTC 2026

  System load:  0.28               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.120
  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-864-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-12T01:05:10.115123" elapsed="0.492742"/>
</kw>
<msg time="2026-10-12T01:05:10.607962" 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-12T01:05:10.114743" elapsed="0.493317"/>
</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-12T01:05:10.113061" elapsed="0.495115"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.618919" 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-12T01:05:10.608413" elapsed="0.012698"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:05:10.621318" elapsed="0.000291"/>
</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-12T01:05:10.112025" elapsed="0.509655"/>
</kw>
<status status="PASS" start="2026-10-12T01:05:10.110814" elapsed="0.510903"/>
</branch>
<status status="PASS" start="2026-10-12T01:05:10.110479" elapsed="0.511274"/>
</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-12T01:05:10.621946" elapsed="0.000501"/>
</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-12T01:05:10.624460" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-10-12T01:05:10.624354" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-10-12T01:05:10.624329" elapsed="0.000210"/>
</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-12T01:05:10.626024" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-12T01:05:10.625931" elapsed="0.000137"/>
</branch>
<status status="PASS" start="2026-10-12T01:05:10.625912" elapsed="0.000177"/>
</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-12T01:05:10.626249" elapsed="0.000395"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.627039" level="INFO">Logging into '10.30.171.46:8101' as 'karaf'.</msg>
<msg time="2026-10-12T01:05:10.867864" 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-12T01:05:10.626817" elapsed="0.241156"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.973062" 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-12T01:05:10.868169" elapsed="0.104960"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.976979" 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-12T01:05:10.977159" 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-12T01:05:10.973303" elapsed="0.003885"/>
</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-12T01:05:10.977343" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:05:10.977668" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:05:10.978350" 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-12T01:05:10.978061" elapsed="0.000340"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-12T01:05:10.978444" elapsed="0.000047"/>
</return>
<msg time="2026-10-12T01:05:10.978613" 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.46
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-12T01:05:10.625619" elapsed="0.353023"/>
</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-12T01:05:10.978794" elapsed="0.000541"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-12T01:05:10.979381" 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-12T01:05:10.624055" elapsed="0.355437"/>
</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-12T01:05:10.981169" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-12T01:05:10.981069" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-10-12T01:05:10.981048" elapsed="0.000188"/>
</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-12T01:05:10.981405" elapsed="0.000353"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-12T01:05:10.982149" level="INFO">Logging into '10.30.171.46:8101' as 'karaf'.</msg>
<msg time="2026-10-12T01:05:11.160947" 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-12T01:05:10.981951" elapsed="0.179082"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-12T01:05:11.183225" 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-12T01:05:11.161195" elapsed="0.022113"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-12T01:05:11.185501" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-12T01:05:11.185601" 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-12T01:05:11.183475" elapsed="0.002156"/>
</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-12T01:05:11.185772" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:05:11.186116" elapsed="0.000185"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:05:11.186731" 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-12T01:05:11.186477" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-12T01:05:11.186819" elapsed="0.000064"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.46
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-12T01:05:10.980778" elapsed="0.206193"/>
</kw>
<status status="PASS" start="2026-10-12T01:05:09.352510" elapsed="1.834516"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:05:11.188845" 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-12T01:05:11.188127" elapsed="0.000804"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-12T01:05:11.190311" 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-12T01:05:11.189969" elapsed="0.000384"/>
</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-12T01:05:11.190643" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:05:11.190425" elapsed="0.000272"/>
</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-12T01:05:11.191785" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:05:11.191569" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-10-12T01:05:11.191551" elapsed="0.000327"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-12T01:05:11.192238" 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-12T01:05:11.192367" 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-12T01:05:11.192058" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:05:11.192912" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.46 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.120" 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-12T01:05:11.192564" elapsed="0.000403"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-12T01:05:11.193538" 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-12T01:05:11.193127" elapsed="0.000434"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-12T01:05:11.194405" level="INFO">Length is 0.</msg>
<msg time="2026-10-12T01:05:11.194486" 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-12T01:05:11.194100" elapsed="0.000408"/>
</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-12T01:05:11.194642" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-12T01:05:11.195747" level="INFO">Logging into '10.30.170.120:22' as 'jenkins'.</msg>
<msg time="2026-10-12T01:05:11.562805" 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 Mon Oct 12 01:04:30 UTC 2026

  System load:  0.28               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.120
  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: Mon Oct 12 01:05:10 2026 from 10.30.170.45
[?2004h[jenkins@releng-48317-864-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-12T01:05:11.195477" elapsed="0.367455"/>
</kw>
<msg time="2026-10-12T01:05:11.562993" 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-12T01:05:11.195103" elapsed="0.367956"/>
</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-12T01:05:11.193741" elapsed="0.369402"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-12T01:05:11.563572" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.46 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-12T01:15:17.709063" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-12T01:15:17.709846" level="INFO">${stdout} = </msg>
<msg time="2026-10-12T01:15:17.709976" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-12T01:05:11.563370" elapsed="606.146662"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:15:17.710531" elapsed="0.000869"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.712660" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46: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.46. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:16.799 16  switches: flows:  97348 95156 95114 96019 93681 94661 94693 94153 93245 92800 92436 93371 93989 92411 92080 93110  total = 25.071117 per ms 
01:07:16.899 16  switches: flows:  97326 95403 95835 97157 94566 95381 96826 94106 95136 94226 93640 94640 95915 93934 91689 92561  total = 25.263519 per ms 
01:08:16.999 16  switches: flows:  90870 90719 90077 91731 91190 91319 91402 90042 88970 89972 88378 89096 90202 89911 90724 87296  total = 23.991603 per ms 
01:09:17.099 16  switches: flows:  94525 95416 94450 95018 94719 94732 93672 92992 93658 94454 92875 94073 93525 92087 92499 90551  total = 24.945783 per ms 
01:10:17.200 16  switches: flows:  97035 97719 96016 98175 97515 98654 97528 99334 96340 94148 97356 95244 96057 94716 97123 93411  total = 25.729917 per ms 
01:11:17.300 16  switches: flows:  103281 102624 101624 103930 103519 104559 101029 103774 102981 100399 102674 100540 101979 100242 101156 98000  total = 27.159871 per ms 
01:12:17.400 16  switches: flows:  103757 105205 103179 107221 104574 105995 102583 106729 103937 101570 103832 102878 102943 100611 104438 98577  total = 27.587761 per ms 
01:13:17.500 16  switches: flows:  102500 101324 100551 101944 102187 103055 99636 103325 101949 98263 100955 97899 100460 97988 100344 97067  total = 26.779416 per ms 
01:14:17.601 16  switches: flows:  99911 99940 96073 102528 100581 100745 99925 103833 100900 96744 100868 98167 100477 97133 99961 96680  total = 26.530143 per ms 
01:15:17.701 16  switches: flows:  104816 102830 99977 105805 101943 106415 101444 105011 104765 99369 104337 99688 104088 101196 102173 98731  total = 27.330856 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23991.60/27587.76/26146.54/8792.26 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:15:17.711935" elapsed="0.001054"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-12T01:15:17.713443" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-10-12T01:15:17.713188" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-10-12T01:15:17.713132" elapsed="0.000512"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-12T01:15:17.713887" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-10-12T01:15:17.713763" elapsed="0.000211"/>
</branch>
<status status="NOT RUN" start="2026-10-12T01:15:17.713730" elapsed="0.000288"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-12T01:15:17.714084" elapsed="0.000027"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-12T01:15:17.715682" elapsed="0.000734"/>
</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-12T01:15:17.716816" elapsed="0.000389"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:15:17.717484" elapsed="0.000200"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-12T01:15:17.714725" elapsed="0.003085"/>
</kw>
<msg time="2026-10-12T01:15:17.718075" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-12T01:05:11.191051" elapsed="606.527078"/>
</kw>
<status status="PASS" start="2026-10-12T01:05:11.190723" elapsed="606.527502"/>
</branch>
<status status="PASS" start="2026-10-12T01:05:11.190403" elapsed="606.527871"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.719330" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46: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.46. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:16.799 16  switches: flows:  97348 95156 95114 96019 93681 94661 94693 94153 93245 92800 92436 93371 93989 92411 92080 93110  total = 25.071117 per ms 
01:07:16.899 16  switches: flows:  97326 95403 95835 97157 94566 95381 96826 94106 95136 94226 93640 94640 95915 93934 91689 92561  total = 25.263519 per ms 
01:08:16.999 16  switches: flows:  90870 90719 90077 91731 91190 91319 91402 90042 88970 89972 88378 89096 90202 89911 90724 87296  total = 23.991603 per ms 
01:09:17.099 16  switches: flows:  94525 95416 94450 95018 94719 94732 93672 92992 93658 94454 92875 94073 93525 92087 92499 90551  total = 24.945783 per ms 
01:10:17.200 16  switches: flows:  97035 97719 96016 98175 97515 98654 97528 99334 96340 94148 97356 95244 96057 94716 97123 93411  total = 25.729917 per ms 
01:11:17.300 16  switches: flows:  103281 102624 101624 103930 103519 104559 101029 103774 102981 100399 102674 100540 101979 100242 101156 98000  total = 27.159871 per ms 
01:12:17.400 16  switches: flows:  103757 105205 103179 107221 104574 105995 102583 106729 103937 101570 103832 102878 102943 100611 104438 98577  total = 27.587761 per ms 
01:13:17.500 16  switches: flows:  102500 101324 100551 101944 102187 103055 99636 103325 101949 98263 100955 97899 100460 97988 100344 97067  total = 26.779416 per ms 
01:14:17.601 16  switches: flows:  99911 99940 96073 102528 100581 100745 99925 103833 100900 96744 100868 98167 100477 97133 99961 96680  total = 26.530143 per ms 
01:15:17.701 16  switches: flows:  104816 102830 99977 105805 101943 106415 101444 105011 104765 99369 104337 99688 104088 101196 102173 98731  total = 27.330856 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23991.60/27587.76/26146.54/8792.26 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:15:17.718665" elapsed="0.000819"/>
</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-12T01:15:17.719871" elapsed="0.000752"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-12T01:15:17.721560" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-12T01:15:17.721745" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 23991.60/27587.76/26146.54/8792.26 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-12T01:15:17.721068" elapsed="0.000748"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:15:17.722680" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 23991.60/27587.76/26146.54/8792.26 | 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-12T01:15:17.722202" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.723988" 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-12T01:15:17.723230" elapsed="0.000873"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.725229" level="INFO">23991.60/27587.76/26146.54/8792.26</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:15:17.724502" elapsed="0.000840"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:15:17.726355" 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-12T01:15:17.725679" elapsed="0.000731"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:15:17.727513" level="INFO">@{result_value_list} = [ 23991.60 | 27587.76 | 26146.54 | 8792.26 ]</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-12T01:15:17.726877" elapsed="0.000690"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.728710" level="INFO">Length is 4.</msg>
<msg time="2026-10-12T01:15:17.728943" 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-12T01:15:17.728031" elapsed="0.000972"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.730880" level="INFO">min :: 23991.60</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:15:17.729932" elapsed="0.001066"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-12T01:15:17.729505" elapsed="0.001561"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.732633" level="INFO">max :: 27587.76</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-12T01:15:17.731609" elapsed="0.001136"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-12T01:15:17.731245" elapsed="0.001589"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.734372" level="INFO">avg :: 26146.54</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-12T01:15:17.733446" elapsed="0.001037"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-12T01:15:17.733056" elapsed="0.001494"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.736208" level="INFO">stdev :: 8792.26</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-12T01:15:17.735182" elapsed="0.001140"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-12T01:15:17.734726" elapsed="0.001663"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-12T01:15:17.729154" elapsed="0.007300"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.737724" level="INFO">${min} = 23991.60</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-12T01:15:17.736844" elapsed="0.000957"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.739037" level="INFO">${max} = 27587.76</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-12T01:15:17.738163" elapsed="0.000927"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.740321" level="INFO">${average} = 26146.54</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-12T01:15:17.739450" elapsed="0.000924"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.741673" level="INFO">${stdev} = 8792.26</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-12T01:15:17.740699" elapsed="0.001027"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.743350" level="INFO">${date} = 2026-10-12 01:15:17</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-12T01:15:17.742550" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.744567" level="INFO">CBench Result: 2026-10-12 01:15:17,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,23991.60,27587.76,26146.54,8792.26</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-12T01:15:17.743831" elapsed="0.000847"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-12T01:15:17.746983" 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-12T01:15:17.745910" elapsed="0.001213"/>
</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-12T01:15:17.747475" elapsed="0.000906"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-12T01:15:17.744999" elapsed="0.003513"/>
</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-12T01:05:11.189425" elapsed="606.559203"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.749728" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-12T01:15:17.749007" elapsed="0.000939"/>
</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-12T01:15:17.751085" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-10-12T01:15:17.750394" elapsed="0.001418"/>
</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-12T01:05:11.187158" elapsed="606.564760"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.754587" 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-12T01:15:17.753837" elapsed="0.000823"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.756307" 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-12T01:15:17.755798" elapsed="0.000576"/>
</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-12T01:15:17.756829" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:15:17.756476" elapsed="0.000451"/>
</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-12T01:15:17.758437" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:15:17.758140" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-10-12T01:15:17.758116" elapsed="0.000422"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-12T01:15:17.759071" 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-12T01:15:17.759224" 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-12T01:15:17.758793" elapsed="0.000466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.759986" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.46 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.120" 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-12T01:15:17.759498" elapsed="0.000561"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-12T01:15:17.760724" 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-12T01:15:17.760280" elapsed="0.000478"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-12T01:15:17.762197" level="INFO">Length is 0.</msg>
<msg time="2026-10-12T01:15:17.762315" 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-12T01:15:17.761520" elapsed="0.000826"/>
</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-12T01:15:17.762533" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-12T01:15:17.764239" level="INFO">Logging into '10.30.170.120:22' as 'jenkins'.</msg>
<msg time="2026-10-12T01:15:18.429627" 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 Mon Oct 12 01:15:18 UTC 2026

  System load:  1.02               Processes:             103
  Usage of /:   19.9% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.120
  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: Mon Oct 12 01:05:11 2026 from 10.30.170.45
[?2004h[jenkins@releng-48317-864-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-12T01:15:17.763790" elapsed="0.666147"/>
</kw>
<msg time="2026-10-12T01:15:18.430057" 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-12T01:15:17.763240" elapsed="0.666941"/>
</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-12T01:15:17.761049" elapsed="0.669280"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-12T01:15:18.431137" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.46 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-12T01:25:24.477449" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-12T01:25:24.478196" level="INFO">${stdout} = </msg>
<msg time="2026-10-12T01:25:24.478295" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.46: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-12T01:15:18.430678" elapsed="606.047669"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:25:24.478817" elapsed="0.000771"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.481540" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.46: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.46. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:16:23.555 16  switches: flows:  602195 587126 592263 592001 593908 590898 597279 594112 583408 589729 592293 593795 586746 589438 580906 602413  total = 157.808500 per ms 
01:17:23.656 16  switches: flows:  578922 576165 576510 570923 577570 571263 580101 579464 585904 574082 578638 578040 580909 585577 577953 576103  total = 153.875215 per ms 
01:18:23.758 16  switches: flows:  592926 583390 592329 592253 587536 585238 593365 597596 593433 583698 594137 594392 595113 594646 588537 595065  total = 157.461724 per ms 
01:19:23.859 16  switches: flows:  557174 570481 563616 558594 564543 557707 565685 568762 558207 568532 560637 562253 563378 562086 557578 569305  total = 149.890112 per ms 
01:20:23.960 16  switches: flows:  583356 587347 585074 580441 581348 581245 590350 586510 587692 584884 587029 578753 580574 585184 590238 590822  total = 155.752388 per ms 
01:21:24.062 16  switches: flows:  547343 553406 548128 552785 550580 559579 546593 552910 554037 555871 549256 552360 552171 552096 544173 546399  total = 146.715372 per ms 
01:22:24.163 16  switches: flows:  579395 576082 588256 585640 578616 577497 576851 582439 580826 584803 578033 581289 581846 584614 581282 582669  total = 154.741723 per ms 
01:23:24.265 16  switches: flows:  592682 598157 593553 588289 596933 586734 592557 596517 590531 597749 591556 591499 597094 590759 593645 599691  total = 158.033625 per ms 
01:24:24.369 16  switches: flows:  570952 580526 576268 576439 574569 571430 573082 574543 575750 583700 573193 569123 578383 569263 575118 577185  total = 153.066852 per ms 
01:25:24.471 16  switches: flows:  559325 556678 554660 557206 555677 550050 552747 554119 550503 559426 554856 556350 554542 550702 554111 556834  total = 147.714511 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 146715.37/158033.62/153027.95/51154.75 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:25:24.480122" elapsed="0.001688"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-12T01:25:24.482299" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-10-12T01:25:24.482048" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-12T01:25:24.481996" elapsed="0.000498"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-12T01:25:24.482686" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-12T01:25:24.482612" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-10-12T01:25:24.482579" elapsed="0.000234"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-12T01:25:24.482908" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-12T01:25:24.484523" elapsed="0.000828"/>
</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-12T01:25:24.485778" elapsed="0.000427"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:25:24.486490" elapsed="0.000217"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-12T01:25:24.483578" elapsed="0.003237"/>
</kw>
<msg time="2026-10-12T01:25:24.487168" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.46: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-12T01:15:17.757426" elapsed="606.729802"/>
</kw>
<status status="PASS" start="2026-10-12T01:15:17.756966" elapsed="606.730361"/>
</branch>
<status status="PASS" start="2026-10-12T01:15:17.756450" elapsed="606.730925"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.488427" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.46: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.46. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:16:23.555 16  switches: flows:  602195 587126 592263 592001 593908 590898 597279 594112 583408 589729 592293 593795 586746 589438 580906 602413  total = 157.808500 per ms 
01:17:23.656 16  switches: flows:  578922 576165 576510 570923 577570 571263 580101 579464 585904 574082 578638 578040 580909 585577 577953 576103  total = 153.875215 per ms 
01:18:23.758 16  switches: flows:  592926 583390 592329 592253 587536 585238 593365 597596 593433 583698 594137 594392 595113 594646 588537 595065  total = 157.461724 per ms 
01:19:23.859 16  switches: flows:  557174 570481 563616 558594 564543 557707 565685 568762 558207 568532 560637 562253 563378 562086 557578 569305  total = 149.890112 per ms 
01:20:23.960 16  switches: flows:  583356 587347 585074 580441 581348 581245 590350 586510 587692 584884 587029 578753 580574 585184 590238 590822  total = 155.752388 per ms 
01:21:24.062 16  switches: flows:  547343 553406 548128 552785 550580 559579 546593 552910 554037 555871 549256 552360 552171 552096 544173 546399  total = 146.715372 per ms 
01:22:24.163 16  switches: flows:  579395 576082 588256 585640 578616 577497 576851 582439 580826 584803 578033 581289 581846 584614 581282 582669  total = 154.741723 per ms 
01:23:24.265 16  switches: flows:  592682 598157 593553 588289 596933 586734 592557 596517 590531 597749 591556 591499 597094 590759 593645 599691  total = 158.033625 per ms 
01:24:24.369 16  switches: flows:  570952 580526 576268 576439 574569 571430 573082 574543 575750 583700 573193 569123 578383 569263 575118 577185  total = 153.066852 per ms 
01:25:24.471 16  switches: flows:  559325 556678 554660 557206 555677 550050 552747 554119 550503 559426 554856 556350 554542 550702 554111 556834  total = 147.714511 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 146715.37/158033.62/153027.95/51154.75 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:25:24.487771" elapsed="0.000807"/>
</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-12T01:25:24.488950" elapsed="0.000732"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-12T01:25:24.490535" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-12T01:25:24.490782" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 146715.37/158033.62/153027.95/51154.75 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-12T01:25:24.490108" elapsed="0.000732"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:25:24.491731" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 146715.37/158033.62/153027.95/51154.75 | 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-12T01:25:24.491244" elapsed="0.000542"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.492988" 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-12T01:25:24.492249" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.494213" level="INFO">146715.37/158033.62/153027.95/51154.75</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:25:24.493497" elapsed="0.000826"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:25:24.495338" 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-12T01:25:24.494656" elapsed="0.000737"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:25:24.496490" level="INFO">@{result_value_list} = [ 146715.37 | 158033.62 | 153027.95 | 51154.75 ]</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-12T01:25:24.495806" elapsed="0.000739"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.497538" level="INFO">Length is 4.</msg>
<msg time="2026-10-12T01:25:24.497710" 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-12T01:25:24.496909" elapsed="0.000849"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.499578" level="INFO">min :: 146715.37</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:25:24.498635" elapsed="0.001055"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-12T01:25:24.498262" elapsed="0.001495"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.501295" level="INFO">max :: 158033.62</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-12T01:25:24.500350" elapsed="0.001055"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-12T01:25:24.499983" elapsed="0.001489"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.502955" level="INFO">avg :: 153027.95</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-12T01:25:24.502053" elapsed="0.001043"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-12T01:25:24.501641" elapsed="0.001522"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.504621" level="INFO">stdev :: 51154.75</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:25:24.503695" elapsed="0.001035"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-12T01:25:24.503331" elapsed="0.001465"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-12T01:25:24.497908" elapsed="0.006980"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.506146" level="INFO">${min} = 146715.37</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-12T01:25:24.505256" elapsed="0.000943"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.507527" level="INFO">${max} = 158033.62</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-12T01:25:24.506528" elapsed="0.001053"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.508779" level="INFO">${average} = 153027.95</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-12T01:25:24.507942" elapsed="0.000890"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.510101" level="INFO">${stdev} = 51154.75</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-12T01:25:24.509209" elapsed="0.000945"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.511313" level="INFO">${date} = 2026-10-12 01:25:24</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-12T01:25:24.510557" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.512532" level="INFO">CBench Result: 2026-10-12 01:25:24,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,146715.37,158033.62,153027.95,51154.75</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-12T01:25:24.511766" elapsed="0.000878"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-12T01:25:24.514538" 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-12T01:25:24.513826" elapsed="0.000845"/>
</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-12T01:25:24.515072" elapsed="0.001231"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-12T01:25:24.512932" elapsed="0.003503"/>
</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-12T01:15:17.755119" elapsed="606.761434"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.517705" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-12T01:25:24.517009" elapsed="0.000813"/>
</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-12T01:25:24.519104" elapsed="0.000556"/>
</kw>
<status status="PASS" start="2026-10-12T01:25:24.518272" elapsed="0.001530"/>
</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-12T01:15:17.752763" elapsed="606.767158"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.522533" 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-12T01:25:24.522104" elapsed="0.000500"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.524127" 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-12T01:25:24.523667" elapsed="0.000513"/>
</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-12T01:25:24.524591" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:25:24.524312" elapsed="0.000350"/>
</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-12T01:25:24.526221" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:25:24.525905" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-10-12T01:25:24.525880" elapsed="0.000441"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-12T01:25:24.526784" 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-12T01:25:24.526994" 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-12T01:25:24.526562" elapsed="0.000468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.527714" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.46 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.120" 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-12T01:25:24.527267" elapsed="0.000520"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-12T01:25:24.528494" 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-12T01:25:24.528050" elapsed="0.000478"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-12T01:25:24.529673" level="INFO">Length is 0.</msg>
<msg time="2026-10-12T01:25:24.529781" 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-12T01:25:24.529294" elapsed="0.000518"/>
</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-12T01:25:24.530031" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-12T01:25:24.531545" level="INFO">Logging into '10.30.170.120:22' as 'jenkins'.</msg>
<msg time="2026-10-12T01:25:25.196178" 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 Mon Oct 12 01:25:24 UTC 2026

  System load:  0.3                Processes:             104
  Usage of /:   19.9% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.120
  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: Mon Oct 12 01:15:18 2026 from 10.30.170.45
[?2004h[jenkins@releng-48317-864-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-12T01:25:24.531172" elapsed="0.665241"/>
</kw>
<msg time="2026-10-12T01:25:25.196505" 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-12T01:25:24.530639" elapsed="0.665954"/>
</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-12T01:25:24.528776" elapsed="0.667935"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-12T01:25:25.197350" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.46 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-12T01:35:31.234793" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-12T01:35:31.235619" level="INFO">${stdout} = </msg>
<msg time="2026-10-12T01:35:31.235727" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-12T01:25:25.197026" elapsed="606.038761"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:35:31.236399" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.238608" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46: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.46. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:26:30.335 16  switches: flows:  95121 95294 95781 96307 94878 94126 95507 94216 93644 92779 96564 92272 91419 94440 93864 92076  total = 25.138133 per ms 
01:27:30.436 16  switches: flows:  95637 96521 96738 96157 95526 94533 94591 92606 92539 92828 92891 92488 94688 96430 94284 94503  total = 25.173981 per ms 
01:28:30.536 16  switches: flows:  99191 97266 98596 96860 96000 94869 95256 94348 94108 94240 94064 91435 96247 96768 96295 95029  total = 25.467033 per ms 
01:29:30.636 16  switches: flows:  98158 96290 97963 97496 95395 94723 94676 93594 91577 92099 91903 90962 93255 95259 95367 93980  total = 25.169611 per ms 
01:30:30.737 16  switches: flows:  98957 97166 97881 98936 97059 95889 95192 94360 94572 94999 95563 94518 95254 97687 96754 96185  total = 25.640058 per ms 
01:31:30.837 16  switches: flows:  99070 97771 98379 97473 96116 95305 95722 93166 93378 93686 95456 91617 96837 95987 96328 95681  total = 25.490330 per ms 
01:32:30.938 16  switches: flows:  100332 97888 98328 97677 97738 97493 96620 95138 95135 93578 95537 94224 96988 97350 96244 96309  total = 25.733341 per ms 
01:33:31.040 16  switches: flows:  100821 98280 99079 98824 98197 98962 97027 98485 95325 94411 95850 98592 96768 97850 97131 97185  total = 26.003056 per ms 
01:34:31.141 16  switches: flows:  100467 100722 101176 99805 99228 99821 97677 99645 95263 95899 95690 96489 98337 99010 99882 99270  total = 26.262516 per ms 
01:35:31.242 16  switches: flows:  99676 97952 100186 99676 99398 101128 97201 97864 94605 96460 96049 95857 97726 99988 100854 97975  total = 26.166237 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25169.61/26262.52/25678.46/8567.81 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:35:31.237730" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-12T01:35:31.239411" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-10-12T01:35:31.239143" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-10-12T01:35:31.239088" elapsed="0.000583"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-12T01:35:31.239924" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-10-12T01:35:31.239803" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-10-12T01:35:31.239766" elapsed="0.000336"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-12T01:35:31.240175" elapsed="0.000030"/>
</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-12T01:35:31.241951" elapsed="0.000801"/>
</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-12T01:35:31.243224" elapsed="0.000398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-12T01:35:31.243979" elapsed="0.000263"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-12T01:35:31.240895" elapsed="0.003466"/>
</kw>
<msg time="2026-10-12T01:35:31.244608" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-12T01:25:24.525207" elapsed="606.719461"/>
</kw>
<status status="PASS" start="2026-10-12T01:25:24.524694" elapsed="606.720079"/>
</branch>
<status status="PASS" start="2026-10-12T01:25:24.524287" elapsed="606.720540"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.246016" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.46: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.46. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:26:30.335 16  switches: flows:  95121 95294 95781 96307 94878 94126 95507 94216 93644 92779 96564 92272 91419 94440 93864 92076  total = 25.138133 per ms 
01:27:30.436 16  switches: flows:  95637 96521 96738 96157 95526 94533 94591 92606 92539 92828 92891 92488 94688 96430 94284 94503  total = 25.173981 per ms 
01:28:30.536 16  switches: flows:  99191 97266 98596 96860 96000 94869 95256 94348 94108 94240 94064 91435 96247 96768 96295 95029  total = 25.467033 per ms 
01:29:30.636 16  switches: flows:  98158 96290 97963 97496 95395 94723 94676 93594 91577 92099 91903 90962 93255 95259 95367 93980  total = 25.169611 per ms 
01:30:30.737 16  switches: flows:  98957 97166 97881 98936 97059 95889 95192 94360 94572 94999 95563 94518 95254 97687 96754 96185  total = 25.640058 per ms 
01:31:30.837 16  switches: flows:  99070 97771 98379 97473 96116 95305 95722 93166 93378 93686 95456 91617 96837 95987 96328 95681  total = 25.490330 per ms 
01:32:30.938 16  switches: flows:  100332 97888 98328 97677 97738 97493 96620 95138 95135 93578 95537 94224 96988 97350 96244 96309  total = 25.733341 per ms 
01:33:31.040 16  switches: flows:  100821 98280 99079 98824 98197 98962 97027 98485 95325 94411 95850 98592 96768 97850 97131 97185  total = 26.003056 per ms 
01:34:31.141 16  switches: flows:  100467 100722 101176 99805 99228 99821 97677 99645 95263 95899 95690 96489 98337 99010 99882 99270  total = 26.262516 per ms 
01:35:31.242 16  switches: flows:  99676 97952 100186 99676 99398 101128 97201 97864 94605 96460 96049 95857 97726 99988 100854 97975  total = 26.166237 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25169.61/26262.52/25678.46/8567.81 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:35:31.245320" elapsed="0.000892"/>
</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-12T01:35:31.246623" elapsed="0.000902"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-12T01:35:31.248462" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-12T01:35:31.248689" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25169.61/26262.52/25678.46/8567.81 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given `string` that contain the `pattern`.</doc>
<status status="PASS" start="2026-10-12T01:35:31.247964" elapsed="0.000785"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:35:31.249712" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25169.61/26262.52/25678.46/8567.81 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-12T01:35:31.249192" elapsed="0.000600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.251200" 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-12T01:35:31.250328" elapsed="0.000987"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.252614" level="INFO">25169.61/26262.52/25678.46/8567.81</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:35:31.251814" elapsed="0.000912"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:35:31.253774" 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-12T01:35:31.253130" elapsed="0.000718"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-12T01:35:31.255127" level="INFO">@{result_value_list} = [ 25169.61 | 26262.52 | 25678.46 | 8567.81 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="PASS" start="2026-10-12T01:35:31.254359" elapsed="0.000849"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.256272" level="INFO">Length is 4.</msg>
<msg time="2026-10-12T01:35:31.256481" 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-12T01:35:31.255569" elapsed="0.000963"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.258574" level="INFO">min :: 25169.61</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-12T01:35:31.257473" elapsed="0.001255"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-12T01:35:31.257022" elapsed="0.001779"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.260480" level="INFO">max :: 26262.52</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-12T01:35:31.259434" elapsed="0.001164"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-12T01:35:31.259056" elapsed="0.001612"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.262509" level="INFO">avg :: 25678.46</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-12T01:35:31.261333" elapsed="0.001300"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-12T01:35:31.260894" elapsed="0.001811"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.264548" level="INFO">stdev :: 8567.81</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:35:31.263443" elapsed="0.001226"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-12T01:35:31.262915" elapsed="0.001826"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-12T01:35:31.256655" elapsed="0.008150"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.266172" level="INFO">${min} = 25169.61</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-12T01:35:31.265210" elapsed="0.001021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.267520" level="INFO">${max} = 26262.52</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-12T01:35:31.266573" elapsed="0.001005"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.268939" level="INFO">${average} = 25678.46</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-12T01:35:31.267947" elapsed="0.001052"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.270499" level="INFO">${stdev} = 8567.81</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-12T01:35:31.269365" elapsed="0.001211"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.272287" level="INFO">${date} = 2026-10-12 01:35:31</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-12T01:35:31.271205" elapsed="0.001154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.273934" level="INFO">CBench Result: 2026-10-12 01:35:31,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25169.61,26262.52,25678.46,8567.81</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-12T01:35:31.273058" elapsed="0.001041"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-12T01:35:31.276403" 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-12T01:35:31.275440" elapsed="0.001112"/>
</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-12T01:35:31.277071" elapsed="0.001147"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-12T01:35:31.274413" elapsed="0.003895"/>
</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-12T01:25:24.523021" elapsed="606.755367"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.279080" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-12T01:35:31.278593" elapsed="0.000568"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-12T01:35:31.280798" 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-12T01:35:31.280196" elapsed="0.000637"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-10-12T01:35:31.281135" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-10-12T01:35:31.280959" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-10-12T01:35:31.280931" elapsed="0.000320"/>
</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-12T01:35:31.281450" elapsed="0.000028"/>
</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-12T01:35:31.281739" elapsed="0.000040"/>
</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-12T01:35:31.282060" elapsed="0.000039"/>
</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-12T01:35:31.282319" elapsed="0.000028"/>
</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-12T01:35:31.282600" elapsed="0.000029"/>
</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-12T01:35:31.282811" elapsed="0.000028"/>
</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-12T01:35:31.283114" elapsed="0.000035"/>
</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-12T01:35:31.283458" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-12T01:35:31.283264" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-10-12T01:35:31.283232" elapsed="0.000327"/>
</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-12T01:35:31.279642" elapsed="0.003984"/>
</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-12T01:25:24.520476" elapsed="606.763208"/>
</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-12T01:05:08.838026" elapsed="1822.446237"/>
</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>
