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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-05-08T03:14:04.405892" elapsed="0.667600"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-08T03:14:05.121719" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-05-08T03:14:05.073808" elapsed="0.047981"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-08T03:14:05.123636" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-08T03:14:05.123763" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-05-08T03:14:05.121957" elapsed="0.001836"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-05-08T03:14:05.124138" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:14:05.124510" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:14:05.125296" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:14:05.124950" elapsed="0.000400"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-08T03:14:05.125405" elapsed="0.000057"/>
</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.41
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-08T03:14:04.404207" elapsed="0.721382"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-05-08T03:14:04.400464" elapsed="0.725213"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-08T03:14:05.126246" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-08T03:14:05.125869" elapsed="0.000434"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-08T03:14:05.126723" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-08T03:14:05.126457" elapsed="0.000323"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-08T03:14:05.127325" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-08T03:14:05.126935" elapsed="0.000418"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-08T03:14:05.127902" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-08T03:14:05.127545" elapsed="0.000400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-08T03:14:05.128463" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-08T03:14:05.128092" elapsed="0.000398"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-08T03:14:05.129009" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-08T03:14:05.128696" elapsed="0.000356"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-05-08T03:14:05.129352" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:14:05.129138" elapsed="0.000269"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-08T03:14:05.134081" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:14:05.133675" elapsed="0.000434"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-08T03:14:05.135152" level="INFO">Length is 0.</msg>
<msg time="2026-05-08T03:14:05.135236" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-08T03:14:05.134705" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:14:05.135406" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-08T03:14:05.136826" level="INFO">Logging into '10.30.170.153:22' as 'jenkins'.</msg>
<msg time="2026-05-08T03:14:05.833517" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri May  8 03:14:05 UTC 2026

  System load:  0.05               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.153
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-63164-230-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-08T03:14:05.136279" elapsed="0.697527"/>
</kw>
<msg time="2026-05-08T03:14:05.833976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:14:05.135932" elapsed="0.698204"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-08T03:14:05.134315" elapsed="0.700048"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-05-08T03:14:05.845321" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-05-08T03:14:05.834777" elapsed="0.012314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:14:05.847473" elapsed="0.000649"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-05-08T03:14:05.133130" elapsed="0.715133"/>
</kw>
<status status="PASS" start="2026-05-08T03:14:05.129796" elapsed="0.718550"/>
</branch>
<status status="PASS" start="2026-05-08T03:14:05.129113" elapsed="0.719296"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-08T03:14:05.848813" elapsed="0.001027"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-05-08T03:14:05.858041" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-05-08T03:14:05.857919" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-05-08T03:14:05.857894" elapsed="0.000224"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-05-08T03:14:05.861742" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-05-08T03:14:05.861611" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-05-08T03:14:05.861591" elapsed="0.000221"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:14:05.861943" elapsed="0.000440"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-08T03:14:05.862806" level="INFO">Logging into '10.30.171.41:8101' as 'karaf'.</msg>
<msg time="2026-05-08T03:14:06.043528" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-05-08T03:14:05.862529" elapsed="0.181173"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.139465" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-05-08T03:14:06.043972" elapsed="0.095640"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.149794" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-08T03:14:06.150039" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-05-08T03:14:06.139990" elapsed="0.010095"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-05-08T03:14:06.150287" elapsed="0.000278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:14:06.150795" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:14:06.151788" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:14:06.151274" elapsed="0.000598"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-08T03:14:06.152115" elapsed="0.000066"/>
</return>
<msg time="2026-05-08T03:14:06.152385" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           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.41
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-08T03:14:05.861251" elapsed="0.291180"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-08T03:14:06.152662" elapsed="0.000723"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-08T03:14:06.153468" elapsed="0.000045"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-05-08T03:14:05.857594" elapsed="0.296083"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-05-08T03:14:06.159211" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-05-08T03:14:06.159039" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-05-08T03:14:06.159014" elapsed="0.000274"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:14:06.159423" elapsed="0.000478"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.160313" level="INFO">Logging into '10.30.171.41:8101' as 'karaf'.</msg>
<msg time="2026-05-08T03:14:06.356843" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-05-08T03:14:06.160050" elapsed="0.196960"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.383071" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-05-08T03:14:06.357295" elapsed="0.025837"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.385215" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-08T03:14:06.385323" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-05-08T03:14:06.383281" elapsed="0.002071"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-05-08T03:14:06.385491" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:14:06.385842" elapsed="0.000192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:14:06.386479" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:14:06.386170" elapsed="0.000359"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-08T03:14:06.386582" elapsed="0.000052"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.41
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-08T03:14:06.158683" elapsed="0.228096"/>
</kw>
<status status="PASS" start="2026-05-08T03:14:04.398622" elapsed="1.988219"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:14:06.389126" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:14:06.387996" elapsed="0.001194"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-08T03:14:06.390745" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-08T03:14:06.390373" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-08T03:14:06.391125" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:14:06.390870" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-08T03:14:06.394139" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:14:06.393889" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-05-08T03:14:06.393870" elapsed="0.000352"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.394553" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-05-08T03:14:06.394354" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:14:06.395304" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.41 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.153" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:14:06.394862" elapsed="0.000501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.395987" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:14:06.395504" elapsed="0.000509"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-08T03:14:06.396930" level="INFO">Length is 0.</msg>
<msg time="2026-05-08T03:14:06.397021" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-08T03:14:06.396590" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:14:06.397188" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.398392" level="INFO">Logging into '10.30.170.153:22' as 'jenkins'.</msg>
<msg time="2026-05-08T03:14:06.719674" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri May  8 03:14:05 UTC 2026

  System load:  0.05               Processes:             110
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.153
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Fri May  8 03:14:05 2026 from 10.30.171.217
[?2004h[jenkins@releng-63164-230-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-08T03:14:06.398038" elapsed="0.321845"/>
</kw>
<msg time="2026-05-08T03:14:06.719978" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:14:06.397692" elapsed="0.322382"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-08T03:14:06.396214" elapsed="0.323987"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-08T03:14:06.721037" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.41 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-08T03:24:12.734991" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-08T03:24:12.735626" level="INFO">${stdout} = </msg>
<msg time="2026-05-08T03:24:12.735770" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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-05-08T03:14:06.720437" elapsed="606.015395"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:24:12.736295" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.738367" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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.41. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:15:11.874 16  switches: flows:  104488 102887 103428 101956 103823 102350 104789 100935 100429 97323 97369 97637 98894 99803 99195 95259  total = 26.842750 per ms 
03:16:11.974 16  switches: flows:  120856 122737 121473 120692 119550 121344 120598 120930 117442 113495 115720 113131 117189 114450 114646 115325  total = 31.440491 per ms 
03:17:12.075 16  switches: flows:  119681 121664 119748 119907 119516 118974 119015 120030 117159 113869 116477 111854 116267 113058 114044 114966  total = 31.218296 per ms 
03:18:12.176 16  switches: flows:  117502 117615 117950 118122 117272 117877 116485 116542 114709 111854 113172 111589 113981 111227 111139 111920  total = 30.598164 per ms 
03:19:12.276 16  switches: flows:  119676 118346 117260 118124 117197 116119 117363 117905 113498 114763 116851 113587 113614 113426 114405 114346  total = 30.889759 per ms 
03:20:12.376 16  switches: flows:  114372 112775 113916 112352 113609 112166 112802 112258 108926 109776 110283 109125 110382 108180 108846 108795  total = 29.593295 per ms 
03:21:12.476 16  switches: flows:  119524 121037 122983 119201 121414 119278 119394 120817 117207 118339 116917 117897 115953 117282 116250 114674  total = 31.583352 per ms 
03:22:12.577 16  switches: flows:  120893 120663 122573 117303 122090 118613 118463 121681 118490 118914 117351 116061 116642 117691 116467 115577  total = 31.605074 per ms 
03:23:12.677 16  switches: flows:  121095 119758 123447 119672 121436 119687 118208 121423 117113 118400 116820 116474 116714 116594 115690 114410  total = 31.562968 per ms 
03:24:12.777 16  switches: flows:  120456 119882 121819 119407 122529 120840 119352 122100 119210 116689 117797 117864 116776 117621 117025 115444  total = 31.693922 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29593.30/31693.92/31131.70/10397.25 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.737569" elapsed="0.001146"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-08T03:24:12.739228" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-05-08T03:24:12.738915" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-05-08T03:24:12.738857" elapsed="0.000641"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-08T03:24:12.739761" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-05-08T03:24:12.739671" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-05-08T03:24:12.739606" elapsed="0.000296"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-08T03:24:12.739978" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:24:12.745191" elapsed="0.000337"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:24:12.745699" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:24:12.746004" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-08T03:24:12.740852" elapsed="0.005305"/>
</kw>
<msg time="2026-05-08T03:24:12.746310" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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-05-08T03:14:06.391535" elapsed="606.354802"/>
</kw>
<status status="PASS" start="2026-05-08T03:14:06.391214" elapsed="606.355174"/>
</branch>
<status status="PASS" start="2026-05-08T03:14:06.390847" elapsed="606.355565"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.746868" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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.41. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:15:11.874 16  switches: flows:  104488 102887 103428 101956 103823 102350 104789 100935 100429 97323 97369 97637 98894 99803 99195 95259  total = 26.842750 per ms 
03:16:11.974 16  switches: flows:  120856 122737 121473 120692 119550 121344 120598 120930 117442 113495 115720 113131 117189 114450 114646 115325  total = 31.440491 per ms 
03:17:12.075 16  switches: flows:  119681 121664 119748 119907 119516 118974 119015 120030 117159 113869 116477 111854 116267 113058 114044 114966  total = 31.218296 per ms 
03:18:12.176 16  switches: flows:  117502 117615 117950 118122 117272 117877 116485 116542 114709 111854 113172 111589 113981 111227 111139 111920  total = 30.598164 per ms 
03:19:12.276 16  switches: flows:  119676 118346 117260 118124 117197 116119 117363 117905 113498 114763 116851 113587 113614 113426 114405 114346  total = 30.889759 per ms 
03:20:12.376 16  switches: flows:  114372 112775 113916 112352 113609 112166 112802 112258 108926 109776 110283 109125 110382 108180 108846 108795  total = 29.593295 per ms 
03:21:12.476 16  switches: flows:  119524 121037 122983 119201 121414 119278 119394 120817 117207 118339 116917 117897 115953 117282 116250 114674  total = 31.583352 per ms 
03:22:12.577 16  switches: flows:  120893 120663 122573 117303 122090 118613 118463 121681 118490 118914 117351 116061 116642 117691 116467 115577  total = 31.605074 per ms 
03:23:12.677 16  switches: flows:  121095 119758 123447 119672 121436 119687 118208 121423 117113 118400 116820 116474 116714 116594 115690 114410  total = 31.562968 per ms 
03:24:12.777 16  switches: flows:  120456 119882 121819 119407 122529 120840 119352 122100 119210 116689 117797 117864 116776 117621 117025 115444  total = 31.693922 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29593.30/31693.92/31131.70/10397.25 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.746553" elapsed="0.000388"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-08T03:24:12.747090" elapsed="0.000498"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-08T03:24:12.748153" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-08T03:24:12.748281" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29593.30/31693.92/31131.70/10397.25 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-05-08T03:24:12.747831" elapsed="0.000484"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:24:12.749066" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29593.30/31693.92/31131.70/10397.25 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:24:12.748541" elapsed="0.000555"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.751809" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.749247" elapsed="0.002629"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.754681" level="INFO">29593.30/31693.92/31131.70/10397.25</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.752053" elapsed="0.002687"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:24:12.757174" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:24:12.754890" elapsed="0.002313"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:24:12.759740" level="INFO">@{result_value_list} = [ 29593.30 | 31693.92 | 31131.70 | 10397.25 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:24:12.757431" elapsed="0.002337"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.760262" level="INFO">Length is 4.</msg>
<msg time="2026-05-08T03:24:12.760351" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-08T03:24:12.759925" elapsed="0.000450"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.765148" level="INFO">min :: 29593.30</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.760834" elapsed="0.004371"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-08T03:24:12.760698" elapsed="0.004542"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.769747" level="INFO">max :: 31693.92</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.765463" elapsed="0.004346"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-08T03:24:12.765337" elapsed="0.004515"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.774396" level="INFO">avg :: 31131.70</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.770085" elapsed="0.004372"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-08T03:24:12.769951" elapsed="0.004543"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.779214" level="INFO">stdev :: 10397.25</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.774747" elapsed="0.004533"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-08T03:24:12.774592" elapsed="0.004728"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-08T03:24:12.760457" elapsed="0.018919"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.783730" level="INFO">${min} = 29593.30</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:24:12.779583" elapsed="0.004175"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.787929" level="INFO">${max} = 31693.92</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:24:12.783938" elapsed="0.004019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.792249" level="INFO">${average} = 31131.70</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:24:12.788122" elapsed="0.004154"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.796377" level="INFO">${stdev} = 10397.25</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:24:12.792438" elapsed="0.003967"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.796961" level="INFO">${date} = 2026-05-08 03:24:12</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-08T03:24:12.796568" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.797553" level="INFO">CBench Result: 2026-05-08 03:24:12,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29593.30,31693.92,31131.70,10397.25</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.797133" elapsed="0.000478"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-08T03:24:12.798784" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-08T03:24:12.798313" elapsed="0.000540"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-08T03:24:12.799038" elapsed="0.000534"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-08T03:24:12.797797" elapsed="0.001859"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-05-08T03:14:06.389737" elapsed="606.409985"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.800227" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-08T03:24:12.799876" elapsed="0.000411"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-05-08T03:24:12.800828" elapsed="0.000271"/>
</kw>
<status status="PASS" start="2026-05-08T03:24:12.800510" elapsed="0.000660"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-05-08T03:14:06.387013" elapsed="606.414195"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.802504" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.802122" elapsed="0.000439"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.803853" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-08T03:24:12.803507" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-08T03:24:12.804261" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:24:12.804035" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-08T03:24:12.807262" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:24:12.807013" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-05-08T03:24:12.806993" elapsed="0.000422"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-08T03:24:12.807803" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-05-08T03:24:12.807559" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.808505" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.41 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.153" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:24:12.808085" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-08T03:24:12.809116" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:24:12.808720" elapsed="0.000422"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-08T03:24:12.810056" level="INFO">Length is 0.</msg>
<msg time="2026-05-08T03:24:12.810144" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-08T03:24:12.809729" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:24:12.810308" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-08T03:24:12.811566" level="INFO">Logging into '10.30.170.153:22' as 'jenkins'.</msg>
<msg time="2026-05-08T03:24:13.399912" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri May  8 03:24:13 UTC 2026

  System load:  1.05               Processes:             105
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.153
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Fri May  8 03:14:06 2026 from 10.30.171.217
[?2004h[jenkins@releng-63164-230-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-08T03:24:12.811144" elapsed="0.588977"/>
</kw>
<msg time="2026-05-08T03:24:13.400211" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:24:12.810799" elapsed="0.589511"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-08T03:24:12.809340" elapsed="0.591094"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-08T03:24:13.401004" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.41 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-08T03:34:19.482857" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-08T03:34:19.483462" level="INFO">${stdout} = </msg>
<msg time="2026-05-08T03:34:19.483577" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.41:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-05-08T03:24:13.400682" elapsed="606.082955"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:34:19.484176" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.486211" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.41: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.41. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:25:18.575 16  switches: flows:  517364 499921 512473 502440 522461 503790 524607 506617 481876 504974 503524 498234 490466 497278 516670 501400  total = 134.734917 per ms 
03:26:18.676 16  switches: flows:  562427 569083 488897 569237 566543 559387 576755 570100 571610 560089 581239 558371 572031 561445 571781 562511  total = 149.773378 per ms 
03:27:18.778 16  switches: flows:  644130 626318 640355 645131 651857 659618 637232 648662 633166 636390 643440 647753 657297 646402 661320 627179  total = 171.481812 per ms 
03:28:18.881 16  switches: flows:  663429 667499 675983 686174 671276 658915 684140 670526 676103 669897 668542 644913 671194 669948 672144 675265  total = 178.459825 per ms 
03:29:18.982 16  switches: flows:  666969 656997 658334 661993 670081 663550 679570 653228 661486 655170 649203 656869 659291 662533 657141 672286  total = 176.114461 per ms 
03:30:19.083 16  switches: flows:  656813 670702 666781 667437 669411 662299 672210 660604 676175 661226 663925 668317 592846 667590 674189 666106  total = 176.313302 per ms 
03:31:19.186 16  switches: flows:  665283 651542 687890 656368 678417 673843 676073 671483 681804 683285 617051 671793 660060 674715 678225 640846  total = 177.510615 per ms 
03:32:19.286 16  switches: flows:  677618 665085 668297 679420 671212 674312 677475 671421 675554 661774 678360 642559 681608 676183 670231 673797  total = 178.783041 per ms 
03:33:19.387 16  switches: flows:  684122 690023 683158 687043 682847 689286 689431 688173 684443 685793 693109 687102 692941 690873 691016 694698  total = 183.258409 per ms 
03:34:19.489 16  switches: flows:  660617 674773 676883 675124 661967 683336 674230 660257 686322 677664 662970 666297 689226 661157 666611 674371  total = 178.895808 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 149773.38/183258.41/174510.07/58896.61 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.485405" elapsed="0.001132"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-08T03:34:19.487126" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-05-08T03:34:19.486770" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-05-08T03:34:19.486714" elapsed="0.000653"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-08T03:34:19.487593" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-05-08T03:34:19.487505" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-05-08T03:34:19.487467" elapsed="0.000298"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-08T03:34:19.487835" 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>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:34:19.493153" elapsed="0.000456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:34:19.493839" elapsed="0.000238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:34:19.494263" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-08T03:34:19.488527" elapsed="0.005972"/>
</kw>
<msg time="2026-05-08T03:34:19.494702" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.41:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-05-08T03:24:12.804683" elapsed="606.690058"/>
</kw>
<status status="PASS" start="2026-05-08T03:24:12.804348" elapsed="606.690462"/>
</branch>
<status status="PASS" start="2026-05-08T03:24:12.804009" elapsed="606.690833"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.495441" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.41: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.41. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:25:18.575 16  switches: flows:  517364 499921 512473 502440 522461 503790 524607 506617 481876 504974 503524 498234 490466 497278 516670 501400  total = 134.734917 per ms 
03:26:18.676 16  switches: flows:  562427 569083 488897 569237 566543 559387 576755 570100 571610 560089 581239 558371 572031 561445 571781 562511  total = 149.773378 per ms 
03:27:18.778 16  switches: flows:  644130 626318 640355 645131 651857 659618 637232 648662 633166 636390 643440 647753 657297 646402 661320 627179  total = 171.481812 per ms 
03:28:18.881 16  switches: flows:  663429 667499 675983 686174 671276 658915 684140 670526 676103 669897 668542 644913 671194 669948 672144 675265  total = 178.459825 per ms 
03:29:18.982 16  switches: flows:  666969 656997 658334 661993 670081 663550 679570 653228 661486 655170 649203 656869 659291 662533 657141 672286  total = 176.114461 per ms 
03:30:19.083 16  switches: flows:  656813 670702 666781 667437 669411 662299 672210 660604 676175 661226 663925 668317 592846 667590 674189 666106  total = 176.313302 per ms 
03:31:19.186 16  switches: flows:  665283 651542 687890 656368 678417 673843 676073 671483 681804 683285 617051 671793 660060 674715 678225 640846  total = 177.510615 per ms 
03:32:19.286 16  switches: flows:  677618 665085 668297 679420 671212 674312 677475 671421 675554 661774 678360 642559 681608 676183 670231 673797  total = 178.783041 per ms 
03:33:19.387 16  switches: flows:  684122 690023 683158 687043 682847 689286 689431 688173 684443 685793 693109 687102 692941 690873 691016 694698  total = 183.258409 per ms 
03:34:19.489 16  switches: flows:  660617 674773 676883 675124 661967 683336 674230 660257 686322 677664 662970 666297 689226 661157 666611 674371  total = 178.895808 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 149773.38/183258.41/174510.07/58896.61 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.495037" elapsed="0.000506"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-08T03:34:19.495778" elapsed="0.000521"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-08T03:34:19.496889" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-08T03:34:19.497014" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 149773.38/183258.41/174510.07/58896.61 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-05-08T03:34:19.496538" elapsed="0.000510"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:34:19.497611" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 149773.38/183258.41/174510.07/58896.61 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:34:19.497261" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.500972" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.497870" elapsed="0.003180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.504332" level="INFO">149773.38/183258.41/174510.07/58896.61</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.501251" elapsed="0.003193"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:34:19.506928" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:34:19.504655" elapsed="0.002300"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:34:19.509529" level="INFO">@{result_value_list} = [ 149773.38 | 183258.41 | 174510.07 | 58896.61 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:34:19.507152" elapsed="0.002410"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.510083" level="INFO">Length is 4.</msg>
<msg time="2026-05-08T03:34:19.510176" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-08T03:34:19.509745" elapsed="0.000455"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.515093" level="INFO">min :: 149773.38</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.510626" elapsed="0.004524"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-08T03:34:19.510495" elapsed="0.004690"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.520073" level="INFO">max :: 183258.41</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.515420" elapsed="0.004711"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-08T03:34:19.515276" elapsed="0.004891"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.525015" level="INFO">avg :: 174510.07</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.520435" elapsed="0.004637"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-08T03:34:19.520259" elapsed="0.004848"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.529590" level="INFO">stdev :: 58896.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-05-08T03:34:19.525323" elapsed="0.004338"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-08T03:34:19.525196" elapsed="0.004501"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-08T03:34:19.510275" elapsed="0.019454"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.533568" level="INFO">${min} = 149773.38</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:34:19.529886" elapsed="0.003709"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.537689" level="INFO">${max} = 183258.41</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:34:19.533763" elapsed="0.003953"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.541720" level="INFO">${average} = 174510.07</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:34:19.537871" elapsed="0.003876"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.545636" level="INFO">${stdev} = 58896.61</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:34:19.541896" elapsed="0.003784"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.546205" level="INFO">${date} = 2026-05-08 03:34:19</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-08T03:34:19.545842" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.546808" level="INFO">CBench Result: 2026-05-08 03:34:19,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,149773.38,183258.41,174510.07,58896.61</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.546383" elapsed="0.000482"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-08T03:34:19.547936" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-08T03:34:19.547497" elapsed="0.000506"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-08T03:34:19.548154" elapsed="0.000517"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-08T03:34:19.547019" elapsed="0.001722"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-05-08T03:24:12.802908" elapsed="606.745893"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.549298" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-08T03:34:19.548959" elapsed="0.000396"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-05-08T03:34:19.549929" elapsed="0.000264"/>
</kw>
<status status="PASS" start="2026-05-08T03:34:19.549564" elapsed="0.000700"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-05-08T03:24:12.801516" elapsed="606.748787"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.551503" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.551112" elapsed="0.000450"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.553023" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-08T03:34:19.552685" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-08T03:34:19.553419" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:34:19.553197" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-08T03:34:19.556728" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:34:19.556289" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-05-08T03:34:19.556166" elapsed="0.000658"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-08T03:34:19.557166" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-05-08T03:34:19.556965" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.557941" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.41 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.153" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:34:19.557466" elapsed="0.000544"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-08T03:34:19.558580" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:34:19.558153" elapsed="0.000466"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-08T03:34:19.560765" level="INFO">Length is 0.</msg>
<msg time="2026-05-08T03:34:19.560874" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-08T03:34:19.559244" elapsed="0.001661"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:34:19.561054" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-08T03:34:19.562259" level="INFO">Logging into '10.30.170.153:22' as 'jenkins'.</msg>
<msg time="2026-05-08T03:34:20.138596" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Fri May  8 03:34:19 UTC 2026

  System load:  0.21               Processes:             104
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.153
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Fri May  8 03:24:13 2026 from 10.30.171.217
[?2004h[jenkins@releng-63164-230-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-08T03:34:19.561904" elapsed="0.576944"/>
</kw>
<msg time="2026-05-08T03:34:20.138943" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:34:19.561543" elapsed="0.577488"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-08T03:34:19.558851" elapsed="0.580300"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-08T03:34:20.139749" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.41 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-08T03:44:26.170481" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-08T03:44:26.171078" level="INFO">${stdout} = </msg>
<msg time="2026-05-08T03:44:26.171187" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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-05-08T03:34:20.139392" elapsed="606.031852"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:44:26.171736" elapsed="0.000696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.173585" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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.41. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:35:25.275 16  switches: flows:  115012 115111 116217 116764 116170 116271 114569 113219 115146 112629 115256 115361 115328 112812 113767 114892  total = 30.642067 per ms 
03:36:25.375 16  switches: flows:  124413 124114 122926 125420 124648 124482 122741 122100 122485 122565 123440 122119 125207 122170 122493 120813  total = 32.814174 per ms 
03:37:25.475 16  switches: flows:  123898 123695 122512 125334 124053 123267 122318 122328 121932 119922 122947 121594 122755 120324 122827 119845  total = 32.604735 per ms 
03:38:25.576 16  switches: flows:  121522 122568 120459 122572 123342 121470 120681 120651 120390 120810 120952 119676 121936 119189 120501 120204  total = 32.228260 per ms 
03:39:25.676 16  switches: flows:  124910 123333 122924 125001 125408 123627 121179 123637 122238 121803 124051 122864 123843 121684 121728 122107  total = 32.784135 per ms 
03:40:25.776 16  switches: flows:  123371 121577 122143 122964 122770 123514 123136 123530 121769 119670 122939 120746 122675 122130 122743 121941  total = 32.572544 per ms 
03:41:25.877 16  switches: flows:  124975 123179 124561 125356 125161 125070 121967 122494 123216 122029 121439 121669 124842 123269 122895 121264  total = 32.834904 per ms 
03:42:25.977 16  switches: flows:  124076 123676 125097 125539 124856 125171 121297 124167 122452 121810 121633 122530 125293 121910 122265 121621  total = 32.835005 per ms 
03:43:26.077 16  switches: flows:  123582 123028 125675 125976 125367 123544 122545 125348 122717 121459 121321 122511 125024 122089 122899 122330  total = 32.868660 per ms 
03:44:26.178 16  switches: flows:  122535 121693 124294 123308 124535 122592 121349 122306 121540 119452 122678 119326 123672 120342 121546 121909  total = 32.497019 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32228.26/32868.66/32671.05/10892.22 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.172835" elapsed="0.001093"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-08T03:44:26.174467" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-05-08T03:44:26.174124" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-05-08T03:44:26.174073" elapsed="0.000657"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-08T03:44:26.174942" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-05-08T03:44:26.174859" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-05-08T03:44:26.174824" elapsed="0.000257"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-08T03:44:26.175150" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-08T03:44:26.180033" elapsed="0.000336"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-08T03:44:26.180518" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-08T03:44:26.180831" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-08T03:44:26.175859" elapsed="0.005124"/>
</kw>
<msg time="2026-05-08T03:44:26.181112" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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-05-08T03:34:19.553835" elapsed="606.627304"/>
</kw>
<status status="PASS" start="2026-05-08T03:34:19.553502" elapsed="606.627688"/>
</branch>
<status status="PASS" start="2026-05-08T03:34:19.553173" elapsed="606.628040"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.181662" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.41: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.41. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
03:35:25.275 16  switches: flows:  115012 115111 116217 116764 116170 116271 114569 113219 115146 112629 115256 115361 115328 112812 113767 114892  total = 30.642067 per ms 
03:36:25.375 16  switches: flows:  124413 124114 122926 125420 124648 124482 122741 122100 122485 122565 123440 122119 125207 122170 122493 120813  total = 32.814174 per ms 
03:37:25.475 16  switches: flows:  123898 123695 122512 125334 124053 123267 122318 122328 121932 119922 122947 121594 122755 120324 122827 119845  total = 32.604735 per ms 
03:38:25.576 16  switches: flows:  121522 122568 120459 122572 123342 121470 120681 120651 120390 120810 120952 119676 121936 119189 120501 120204  total = 32.228260 per ms 
03:39:25.676 16  switches: flows:  124910 123333 122924 125001 125408 123627 121179 123637 122238 121803 124051 122864 123843 121684 121728 122107  total = 32.784135 per ms 
03:40:25.776 16  switches: flows:  123371 121577 122143 122964 122770 123514 123136 123530 121769 119670 122939 120746 122675 122130 122743 121941  total = 32.572544 per ms 
03:41:25.877 16  switches: flows:  124975 123179 124561 125356 125161 125070 121967 122494 123216 122029 121439 121669 124842 123269 122895 121264  total = 32.834904 per ms 
03:42:25.977 16  switches: flows:  124076 123676 125097 125539 124856 125171 121297 124167 122452 121810 121633 122530 125293 121910 122265 121621  total = 32.835005 per ms 
03:43:26.077 16  switches: flows:  123582 123028 125675 125976 125367 123544 122545 125348 122717 121459 121321 122511 125024 122089 122899 122330  total = 32.868660 per ms 
03:44:26.178 16  switches: flows:  122535 121693 124294 123308 124535 122592 121349 122306 121540 119452 122678 119326 123672 120342 121546 121909  total = 32.497019 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32228.26/32868.66/32671.05/10892.22 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.181357" elapsed="0.000383"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-08T03:44:26.181889" elapsed="0.000373"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-08T03:44:26.182672" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-08T03:44:26.182765" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 32228.26/32868.66/32671.05/10892.22 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-05-08T03:44:26.182426" elapsed="0.000364"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:44:26.183200" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 32228.26/32868.66/32671.05/10892.22 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:44:26.182943" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.185866" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.183371" elapsed="0.002555"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.188501" level="INFO">32228.26/32868.66/32671.05/10892.22</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.186072" elapsed="0.002496"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:44:26.190959" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:44:26.188735" elapsed="0.002252"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-08T03:44:26.193371" level="INFO">@{result_value_list} = [ 32228.26 | 32868.66 | 32671.05 | 10892.22 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-08T03:44:26.191180" elapsed="0.002219"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.193879" level="INFO">Length is 4.</msg>
<msg time="2026-05-08T03:44:26.193968" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-08T03:44:26.193555" elapsed="0.000437"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.198741" level="INFO">min :: 32228.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-05-08T03:44:26.194382" elapsed="0.004417"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-08T03:44:26.194256" elapsed="0.004579"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.203326" level="INFO">max :: 32868.66</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.199049" elapsed="0.004346"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-08T03:44:26.198923" elapsed="0.004517"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.208212" level="INFO">avg :: 32671.05</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.203697" elapsed="0.004572"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-08T03:44:26.203548" elapsed="0.004756"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.212981" level="INFO">stdev :: 10892.22</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.208513" elapsed="0.004525"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-08T03:44:26.208389" elapsed="0.004683"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-08T03:44:26.194064" elapsed="0.019038"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.217025" level="INFO">${min} = 32228.26</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:44:26.213256" elapsed="0.003798"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.220889" level="INFO">${max} = 32868.66</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:44:26.217209" elapsed="0.003707"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.224773" level="INFO">${average} = 32671.05</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:44:26.221068" elapsed="0.003733"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.228625" level="INFO">${stdev} = 10892.22</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-08T03:44:26.224954" elapsed="0.003711"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.229172" level="INFO">${date} = 2026-05-08 03:44:26</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-08T03:44:26.228825" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.229768" level="INFO">CBench Result: 2026-05-08 03:44:26,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,32228.26,32868.66,32671.05,10892.22</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-08T03:44:26.229347" elapsed="0.000478"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-08T03:44:26.230911" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-08T03:44:26.230429" elapsed="0.000549"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-08T03:44:26.231127" elapsed="0.000453"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-08T03:44:26.229961" elapsed="0.001697"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-05-08T03:34:19.552097" elapsed="606.679624"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.232177" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-08T03:44:26.231868" elapsed="0.000365"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-08T03:44:26.233443" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-08T03:44:26.232944" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-05-08T03:44:26.233712" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-05-08T03:44:26.233547" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-05-08T03:44:26.233528" elapsed="0.000271"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.233940" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.234101" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.234258" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.234456" elapsed="0.000049"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.234651" elapsed="0.000022"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.234799" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.234940" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-05-08T03:44:26.235161" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-08T03:44:26.235021" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-05-08T03:44:26.235004" elapsed="0.000233"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-05-08T03:44:26.232599" elapsed="0.002689"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-05-08T03:34:19.550590" elapsed="606.684744"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-05-08T03:14:03.814141" elapsed="1822.421753"/>
</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>
