<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-09-17T00:40:00.572313" 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-09-17T00:40:01.123272" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-09-17T00:40:01.123162" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-09-17T00:40:01.123134" elapsed="0.000230"/>
</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-09-17T00:40:01.123558" elapsed="0.000446"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-17T00:40:01.124425" level="INFO">Logging into '10.30.170.96:8101' as 'karaf'.</msg>
<msg time="2026-09-17T00:40:01.909174" 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-09-17T00:40:01.124195" elapsed="0.785182"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-17T00:40:01.960239" 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-09-17T00:40:01.909707" elapsed="0.050708"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-17T00:40:01.962503" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-17T00:40:01.962619" 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-09-17T00:40:01.960767" elapsed="0.001882"/>
</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-09-17T00:40:01.962828" elapsed="0.000303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T00:40:01.963292" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:40:01.964317" 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-09-17T00:40:01.963983" elapsed="0.000404"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-17T00:40:01.964438" elapsed="0.000081"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.96
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-17T00:40:01.122864" elapsed="0.841768"/>
</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-09-17T00:40:01.121268" elapsed="0.843426"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-17T00:40:01.965268" 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-09-17T00:40:01.964899" elapsed="0.000422"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-17T00:40:01.965717" 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-09-17T00:40:01.965467" elapsed="0.000319"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-17T00:40:01.966370" 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-09-17T00:40:01.965952" elapsed="0.000445"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-17T00:40:01.966958" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-17T00:40:01.966637" elapsed="0.000360"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-17T00:40:01.967480" 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-09-17T00:40:01.967156" elapsed="0.000383"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-17T00:40:01.968019" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-17T00:40:01.967719" elapsed="0.000339"/>
</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-09-17T00:40:01.968329" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-09-17T00:40:01.968140" elapsed="0.000239"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-17T00:40:01.970527" 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-09-17T00:40:01.970153" elapsed="0.000400"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-17T00:40:01.971701" level="INFO">Length is 0.</msg>
<msg time="2026-09-17T00:40:01.971797" 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-09-17T00:40:01.971057" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-17T00:40:01.971958" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-17T00:40:01.973054" level="INFO">Logging into '10.30.171.184:22' as 'jenkins'.</msg>
<msg time="2026-09-17T00:40:02.458201" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Sep 17 00:39:31 UTC 2026

  System load:  0.15               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


[?2004h[jenkins@releng-63164-401-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-09-17T00:40:01.972811" elapsed="0.485558"/>
</kw>
<msg time="2026-09-17T00:40:02.458459" 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-09-17T00:40:01.972422" elapsed="0.486149"/>
</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-09-17T00:40:01.970735" elapsed="0.487949"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-09-17T00:40:02.467632" 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-09-17T00:40:02.458905" elapsed="0.011090"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T00:40:02.470285" elapsed="0.000370"/>
</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-09-17T00:40:01.969686" elapsed="0.501040"/>
</kw>
<status status="PASS" start="2026-09-17T00:40:01.968457" elapsed="0.502305"/>
</branch>
<status status="PASS" start="2026-09-17T00:40:01.968115" elapsed="0.502702"/>
</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-09-17T00:40:02.470990" elapsed="0.000493"/>
</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-09-17T00:40:02.473389" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-09-17T00:40:02.473284" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-09-17T00:40:02.473259" elapsed="0.000204"/>
</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-09-17T00:40:02.474991" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-09-17T00:40:02.474896" elapsed="0.000140"/>
</branch>
<status status="PASS" start="2026-09-17T00:40:02.474878" elapsed="0.000179"/>
</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-09-17T00:40:02.475233" elapsed="0.000446"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-17T00:40:02.476093" level="INFO">Logging into '10.30.170.96:8101' as 'karaf'.</msg>
<msg time="2026-09-17T00:40:02.716327" 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-09-17T00:40:02.475879" elapsed="0.240637"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-17T00:40:02.812846" 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-09-17T00:40:02.716804" elapsed="0.096184"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-17T00:40:02.816878" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           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-09-17T00:40:02.817082" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           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-09-17T00:40:02.813262" elapsed="0.003849"/>
</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-09-17T00:40:02.817250" elapsed="0.000283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T00:40:02.817663" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:40:02.818367" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           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-09-17T00:40:02.818066" elapsed="0.000354"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-17T00:40:02.818467" elapsed="0.000080"/>
</return>
<msg time="2026-09-17T00:40:02.818721" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.96
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-17T00:40:02.474540" elapsed="0.344217"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-17T00:40:02.818983" elapsed="0.000598"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-17T00:40:02.819633" elapsed="0.000032"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-09-17T00:40:02.473005" elapsed="0.346741"/>
</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-09-17T00:40:02.821569" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-09-17T00:40:02.821412" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-09-17T00:40:02.821389" elapsed="0.000246"/>
</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-09-17T00:40:02.821805" elapsed="0.000376"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-17T00:40:02.822574" level="INFO">Logging into '10.30.170.96:8101' as 'karaf'.</msg>
<msg time="2026-09-17T00:40:03.042284" 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-09-17T00:40:02.822349" elapsed="0.220115"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-17T00:40:03.070402" 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-09-17T00:40:03.042774" elapsed="0.027750"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-17T00:40:03.072892" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-17T00:40:03.073019" 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-09-17T00:40:03.070763" elapsed="0.002289"/>
</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-09-17T00:40:03.073214" elapsed="0.000257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T00:40:03.073633" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:40:03.074386" 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-09-17T00:40:03.074046" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-17T00:40:03.074527" elapsed="0.000064"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.96
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-17T00:40:02.821124" elapsed="0.253570"/>
</kw>
<status status="PASS" start="2026-09-17T00:40:01.119469" elapsed="1.955300"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:40:03.076913" 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-09-17T00:40:03.076135" elapsed="0.000840"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-17T00:40:03.078470" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-17T00:40:03.078131" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-09-17T00:40:03.078914" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-09-17T00:40:03.078646" elapsed="0.000323"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-17T00:40:03.080214" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-17T00:40:03.079996" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-09-17T00:40:03.079977" elapsed="0.000312"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-17T00:40:03.080709" 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-09-17T00:40:03.080846" 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-09-17T00:40:03.080479" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:40:03.081386" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.96 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.184" 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-09-17T00:40:03.081056" elapsed="0.000385"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-17T00:40:03.082140" 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-09-17T00:40:03.081650" elapsed="0.000516"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-17T00:40:03.083043" level="INFO">Length is 0.</msg>
<msg time="2026-09-17T00:40:03.083147" 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-09-17T00:40:03.082702" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-17T00:40:03.083323" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-17T00:40:03.084527" level="INFO">Logging into '10.30.171.184:22' as 'jenkins'.</msg>
<msg time="2026-09-17T00:40:03.462681" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Sep 17 00:39:31 UTC 2026

  System load:  0.15               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Thu Sep 17 00:40:02 2026 from 10.30.170.36
[?2004h[jenkins@releng-63164-401-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-09-17T00:40:03.084215" elapsed="0.378706"/>
</kw>
<msg time="2026-09-17T00:40:03.463008" 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-09-17T00:40:03.083844" elapsed="0.379270"/>
</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-09-17T00:40:03.082347" elapsed="0.380909"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-17T00:40:03.463873" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.96 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-17T00:50:09.601017" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-17T00:50:09.604038" level="INFO">${stdout} = </msg>
<msg time="2026-09-17T00:50:09.604169" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96: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-09-17T00:40:03.463551" elapsed="606.140690"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T00:50:09.605562" elapsed="0.001191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.608149" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.96. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:41:08.687 16  switches: flows:  86354 85627 85150 84787 84770 83895 84580 84865 80683 80789 80618 81444 82111 80190 81133 80933  total = 22.132150 per ms 
00:42:08.788 16  switches: flows:  91245 90917 91465 90233 90136 88977 88344 89161 85846 85945 84635 84815 85672 86239 84066 84893  total = 23.337474 per ms 
00:43:08.889 16  switches: flows:  93795 93429 93867 94433 92379 91822 90835 91305 88870 89070 87537 88302 87296 88559 85592 86295  total = 24.016371 per ms 
00:44:08.990 16  switches: flows:  93964 93975 95330 94406 93735 91667 91675 91736 88666 89335 88734 86714 87911 88706 87811 86447  total = 24.139870 per ms 
00:45:09.091 16  switches: flows:  94247 92751 94064 93978 92556 90986 90868 91064 89944 89248 87983 86448 86839 88383 86583 87027  total = 24.009408 per ms 
00:46:09.191 16  switches: flows:  94226 94451 94379 95238 93946 91771 90257 90286 89533 90139 87877 86524 88003 87491 85846 85291  total = 24.047463 per ms 
00:47:09.293 16  switches: flows:  95325 93415 94776 95475 94179 91113 91324 91227 90388 89327 87095 87982 86758 88578 86457 86723  total = 24.128738 per ms 
00:48:09.393 16  switches: flows:  95771 94635 98004 98104 96335 93257 93033 92963 90492 91989 90120 89678 88779 92378 88034 88824  total = 24.665362 per ms 
00:49:09.495 16  switches: flows:  96365 93914 95885 95016 94849 92268 92860 92306 91212 90498 87867 87308 87313 90837 87540 88102  total = 24.361630 per ms 
00:50:09.595 16  switches: flows:  97907 94720 97404 97232 95927 93991 97040 92723 92236 92317 90093 90268 89429 92677 91079 88518  total = 24.851183 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23337.47/24851.18/24173.06/8068.06 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T00:50:09.607307" elapsed="0.001177"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-17T00:50:09.609053" elapsed="0.000106"/>
</return>
<status status="PASS" start="2026-09-17T00:50:09.608722" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-09-17T00:50:09.608647" elapsed="0.000667"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-17T00:50:09.609609" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-09-17T00:50:09.609483" elapsed="0.000231"/>
</branch>
<status status="NOT RUN" start="2026-09-17T00:50:09.609419" elapsed="0.000351"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-17T00:50:09.609859" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-17T00:50:09.611727" elapsed="0.000993"/>
</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-09-17T00:50:09.613112" elapsed="0.000432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T00:50:09.613846" elapsed="0.000261"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-17T00:50:09.610717" elapsed="0.003521"/>
</kw>
<msg time="2026-09-17T00:50:09.614601" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96: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-09-17T00:40:03.079321" elapsed="606.535350"/>
</kw>
<status status="PASS" start="2026-09-17T00:40:03.078997" elapsed="606.535801"/>
</branch>
<status status="PASS" start="2026-09-17T00:40:03.078620" elapsed="606.536241"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.616167" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.96. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:41:08.687 16  switches: flows:  86354 85627 85150 84787 84770 83895 84580 84865 80683 80789 80618 81444 82111 80190 81133 80933  total = 22.132150 per ms 
00:42:08.788 16  switches: flows:  91245 90917 91465 90233 90136 88977 88344 89161 85846 85945 84635 84815 85672 86239 84066 84893  total = 23.337474 per ms 
00:43:08.889 16  switches: flows:  93795 93429 93867 94433 92379 91822 90835 91305 88870 89070 87537 88302 87296 88559 85592 86295  total = 24.016371 per ms 
00:44:08.990 16  switches: flows:  93964 93975 95330 94406 93735 91667 91675 91736 88666 89335 88734 86714 87911 88706 87811 86447  total = 24.139870 per ms 
00:45:09.091 16  switches: flows:  94247 92751 94064 93978 92556 90986 90868 91064 89944 89248 87983 86448 86839 88383 86583 87027  total = 24.009408 per ms 
00:46:09.191 16  switches: flows:  94226 94451 94379 95238 93946 91771 90257 90286 89533 90139 87877 86524 88003 87491 85846 85291  total = 24.047463 per ms 
00:47:09.293 16  switches: flows:  95325 93415 94776 95475 94179 91113 91324 91227 90388 89327 87095 87982 86758 88578 86457 86723  total = 24.128738 per ms 
00:48:09.393 16  switches: flows:  95771 94635 98004 98104 96335 93257 93033 92963 90492 91989 90120 89678 88779 92378 88034 88824  total = 24.665362 per ms 
00:49:09.495 16  switches: flows:  96365 93914 95885 95016 94849 92268 92860 92306 91212 90498 87867 87308 87313 90837 87540 88102  total = 24.361630 per ms 
00:50:09.595 16  switches: flows:  97907 94720 97404 97232 95927 93991 97040 92723 92236 92317 90093 90268 89429 92677 91079 88518  total = 24.851183 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 23337.47/24851.18/24173.06/8068.06 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T00:50:09.615366" elapsed="0.000990"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-17T00:50:09.616854" elapsed="0.000971"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-17T00:50:09.618880" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-17T00:50:09.619107" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 23337.47/24851.18/24173.06/8068.06 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-09-17T00:50:09.618295" elapsed="0.000874"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T00:50:09.620250" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 23337.47/24851.18/24173.06/8068.06 | 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-09-17T00:50:09.619662" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.621782" 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-09-17T00:50:09.620861" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.623320" level="INFO">23337.47/24851.18/24173.06/8068.06</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T00:50:09.622427" elapsed="0.001053"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T00:50:09.624630" 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-09-17T00:50:09.623923" elapsed="0.000765"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T00:50:09.625925" level="INFO">@{result_value_list} = [ 23337.47 | 24851.18 | 24173.06 | 8068.06 ]</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-09-17T00:50:09.625134" elapsed="0.000859"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.627196" level="INFO">Length is 4.</msg>
<msg time="2026-09-17T00:50:09.627409" 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-09-17T00:50:09.626405" elapsed="0.001123"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.629870" level="INFO">min :: 23337.47</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-09-17T00:50:09.628667" elapsed="0.001343"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-17T00:50:09.628135" elapsed="0.001958"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.631989" level="INFO">max :: 24851.18</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-09-17T00:50:09.630829" elapsed="0.001295"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-17T00:50:09.630303" elapsed="0.001902"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.634081" level="INFO">avg :: 24173.06</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-09-17T00:50:09.632936" elapsed="0.001280"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-17T00:50:09.632411" elapsed="0.001892"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.636167" level="INFO">stdev :: 8068.06</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-09-17T00:50:09.635039" elapsed="0.001263"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-17T00:50:09.634555" elapsed="0.001827"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-17T00:50:09.627689" elapsed="0.008800"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.637987" level="INFO">${min} = 23337.47</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T00:50:09.636955" elapsed="0.001086"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.639410" level="INFO">${max} = 24851.18</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T00:50:09.638450" elapsed="0.001066"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.640880" level="INFO">${average} = 24173.06</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T00:50:09.639903" elapsed="0.001037"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.642258" level="INFO">${stdev} = 8068.06</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T00:50:09.641312" elapsed="0.001005"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.643622" level="INFO">${date} = 2026-09-17 00:50:09</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-17T00:50:09.642953" elapsed="0.000704"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.644339" level="INFO">CBench Result: 2026-09-17 00:50:09,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,23337.47,24851.18,24173.06,8068.06</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-09-17T00:50:09.643906" elapsed="0.000504"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-17T00:50:09.646269" 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-09-17T00:50:09.645237" elapsed="0.001144"/>
</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-09-17T00:50:09.646664" elapsed="0.000613"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-17T00:50:09.644630" elapsed="0.002733"/>
</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-09-17T00:40:03.077433" elapsed="606.570023"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.648122" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-09-17T00:50:09.647675" elapsed="0.000519"/>
</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-09-17T00:50:09.648951" elapsed="0.000404"/>
</kw>
<status status="PASS" start="2026-09-17T00:50:09.648526" elapsed="0.000938"/>
</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-09-17T00:40:03.074956" elapsed="606.574581"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.654890" 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-09-17T00:50:09.653654" elapsed="0.001416"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.658317" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-17T00:50:09.657412" elapsed="0.001045"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-09-17T00:50:09.659412" elapsed="0.000109"/>
</kw>
<status status="NOT RUN" start="2026-09-17T00:50:09.658745" elapsed="0.000868"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-17T00:50:09.662332" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-09-17T00:50:09.661802" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-09-17T00:50:09.661752" elapsed="0.000822"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-17T00:50:09.663479" 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-09-17T00:50:09.663783" 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-09-17T00:50:09.663002" elapsed="0.000842"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.665143" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.96 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.184" 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-09-17T00:50:09.664254" elapsed="0.001107"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-17T00:50:09.666739" 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-09-17T00:50:09.665892" elapsed="0.000901"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-17T00:50:09.668697" level="INFO">Length is 0.</msg>
<msg time="2026-09-17T00:50:09.668881" 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-09-17T00:50:09.668001" elapsed="0.000931"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-17T00:50:09.669227" elapsed="0.000837"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-17T00:50:09.672017" level="INFO">Logging into '10.30.171.184:22' as 'jenkins'.</msg>
<msg time="2026-09-17T00:50:10.290472" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Sep 17 00:50:09 UTC 2026

  System load:  1.0                Processes:             106
  Usage of /:   19.9% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Thu Sep 17 00:40:03 2026 from 10.30.170.36
[?2004h[jenkins@releng-63164-401-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-09-17T00:50:09.671263" elapsed="0.619520"/>
</kw>
<msg time="2026-09-17T00:50:10.290899" 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-09-17T00:50:09.670392" elapsed="0.620629"/>
</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-09-17T00:50:09.667191" elapsed="0.623964"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-17T00:50:10.291869" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.96 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-17T01:00:16.357573" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-17T01:00:16.358192" level="INFO">${stdout} = </msg>
<msg time="2026-09-17T01:00:16.358290" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.96: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-09-17T00:50:10.291486" elapsed="606.066855"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T01:00:16.358819" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.360860" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.96:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.96. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:51:15.433 16  switches: flows:  594191 601598 603406 595781 602826 593559 592075 593286 581463 587377 588447 586307 588620 589324 598144 596288  total = 158.211533 per ms 
00:52:15.549 16  switches: flows:  697702 703510 689600 693461 694950 693204 687533 696437 701943 696532 694842 709479 696045 702824 701187 692750  total = 185.512457 per ms 
00:53:15.650 16  switches: flows:  731118 740907 727577 738023 733112 733911 743907 735354 735798 742939 732470 743043 729355 737756 737012 730638  total = 195.886222 per ms 
00:54:15.751 16  switches: flows:  654942 657683 653193 660835 657181 657982 655476 659179 659202 657512 652193 664903 653206 656708 659174 651891  total = 174.893819 per ms 
00:55:15.853 16  switches: flows:  613236 610515 612325 612801 610006 613493 613058 613340 608361 609056 612980 613961 610747 613461 610861 618461  total = 163.003555 per ms 
00:56:15.955 16  switches: flows:  629611 635850 631964 628865 629158 634422 620990 634097 620798 635307 619730 626666 627000 629036 623948 637858  total = 167.472850 per ms 
00:57:16.056 16  switches: flows:  619378 617274 604983 624256 618651 619658 613225 618525 620743 612139 608974 615648 609501 617525 616286 614542  total = 163.912779 per ms 
00:58:16.158 16  switches: flows:  692836 691459 685100 695456 687218 680144 692737 694057 687189 686613 680450 693265 687024 687573 689772 689105  total = 183.354619 per ms 
00:59:16.262 16  switches: flows:  731385 720781 720170 738209 735364 732013 723666 725640 728198 731959 731839 736925 734899 735276 731025 725915  total = 194.389742 per ms 
01:00:16.363 16  switches: flows:  724783 740401 729742 738256 734586 736436 740551 730807 725137 738719 731103 731313 738788 730050 735637 735446  total = 195.367553 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 163003.56/195886.22/180421.51/61480.12 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:00:16.360017" elapsed="0.001197"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-17T01:00:16.361871" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-09-17T01:00:16.361435" elapsed="0.000634"/>
</branch>
<status status="PASS" start="2026-09-17T01:00:16.361371" elapsed="0.000774"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-17T01:00:16.362441" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-09-17T01:00:16.362342" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-09-17T01:00:16.362295" elapsed="0.000381"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-17T01:00:16.362760" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-17T01:00:16.364908" elapsed="0.000837"/>
</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-09-17T01:00:16.366118" elapsed="0.000356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T01:00:16.366806" elapsed="0.000245"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-17T01:00:16.363674" elapsed="0.003552"/>
</kw>
<msg time="2026-09-17T01:00:16.367534" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.96: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-09-17T00:50:09.660373" elapsed="606.707221"/>
</kw>
<status status="PASS" start="2026-09-17T00:50:09.659675" elapsed="606.708018"/>
</branch>
<status status="PASS" start="2026-09-17T00:50:09.658681" elapsed="606.709077"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.368868" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.96:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.96. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:51:15.433 16  switches: flows:  594191 601598 603406 595781 602826 593559 592075 593286 581463 587377 588447 586307 588620 589324 598144 596288  total = 158.211533 per ms 
00:52:15.549 16  switches: flows:  697702 703510 689600 693461 694950 693204 687533 696437 701943 696532 694842 709479 696045 702824 701187 692750  total = 185.512457 per ms 
00:53:15.650 16  switches: flows:  731118 740907 727577 738023 733112 733911 743907 735354 735798 742939 732470 743043 729355 737756 737012 730638  total = 195.886222 per ms 
00:54:15.751 16  switches: flows:  654942 657683 653193 660835 657181 657982 655476 659179 659202 657512 652193 664903 653206 656708 659174 651891  total = 174.893819 per ms 
00:55:15.853 16  switches: flows:  613236 610515 612325 612801 610006 613493 613058 613340 608361 609056 612980 613961 610747 613461 610861 618461  total = 163.003555 per ms 
00:56:15.955 16  switches: flows:  629611 635850 631964 628865 629158 634422 620990 634097 620798 635307 619730 626666 627000 629036 623948 637858  total = 167.472850 per ms 
00:57:16.056 16  switches: flows:  619378 617274 604983 624256 618651 619658 613225 618525 620743 612139 608974 615648 609501 617525 616286 614542  total = 163.912779 per ms 
00:58:16.158 16  switches: flows:  692836 691459 685100 695456 687218 680144 692737 694057 687189 686613 680450 693265 687024 687573 689772 689105  total = 183.354619 per ms 
00:59:16.262 16  switches: flows:  731385 720781 720170 738209 735364 732013 723666 725640 728198 731959 731839 736925 734899 735276 731025 725915  total = 194.389742 per ms 
01:00:16.363 16  switches: flows:  724783 740401 729742 738256 734586 736436 740551 730807 725137 738719 731103 731313 738788 730050 735637 735446  total = 195.367553 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 163003.56/195886.22/180421.51/61480.12 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:00:16.368216" elapsed="0.000839"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-17T01:00:16.369566" elapsed="0.000859"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-17T01:00:16.371272" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-17T01:00:16.371526" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 163003.56/195886.22/180421.51/61480.12 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-09-17T01:00:16.370823" elapsed="0.000783"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T01:00:16.372702" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 163003.56/195886.22/180421.51/61480.12 | 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-09-17T01:00:16.372099" elapsed="0.000663"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.374035" 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-09-17T01:00:16.373184" elapsed="0.000971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.375424" level="INFO">163003.56/195886.22/180421.51/61480.12</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:00:16.374636" elapsed="0.000964"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T01:00:16.376649" 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-09-17T01:00:16.375939" elapsed="0.000767"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T01:00:16.377944" level="INFO">@{result_value_list} = [ 163003.56 | 195886.22 | 180421.51 | 61480.12 ]</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-09-17T01:00:16.377130" elapsed="0.000874"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.379251" level="INFO">Length is 4.</msg>
<msg time="2026-09-17T01:00:16.379530" 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-09-17T01:00:16.378432" elapsed="0.001158"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.382406" level="INFO">min :: 163003.56</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:00:16.381331" elapsed="0.001222"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-17T01:00:16.380846" elapsed="0.001778"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.384365" level="INFO">max :: 195886.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-09-17T01:00:16.383185" elapsed="0.001342"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-17T01:00:16.382797" elapsed="0.001803"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.386393" level="INFO">avg :: 180421.51</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-09-17T01:00:16.385215" elapsed="0.001335"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-17T01:00:16.384784" elapsed="0.001835"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.388250" level="INFO">stdev :: 61480.12</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-09-17T01:00:16.387188" elapsed="0.001176"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-17T01:00:16.386789" elapsed="0.001642"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-17T01:00:16.379754" elapsed="0.008766"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.389787" level="INFO">${min} = 163003.56</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:00:16.388858" elapsed="0.000982"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.391067" level="INFO">${max} = 195886.22</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:00:16.390190" elapsed="0.000928"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.392443" level="INFO">${average} = 180421.51</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:00:16.391527" elapsed="0.001003"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.393810" level="INFO">${stdev} = 61480.12</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:00:16.392854" elapsed="0.001008"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.395398" level="INFO">${date} = 2026-09-17 01:00:16</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-17T01:00:16.394375" elapsed="0.001095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.397089" level="INFO">CBench Result: 2026-09-17 01:00:16,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,163003.56,195886.22,180421.51,61480.12</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-09-17T01:00:16.396093" elapsed="0.001177"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-17T01:00:16.399807" 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-09-17T01:00:16.398898" elapsed="0.001051"/>
</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-09-17T01:00:16.400326" elapsed="0.001478"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-17T01:00:16.397658" elapsed="0.004254"/>
</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-09-17T00:50:09.655942" elapsed="606.746058"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.402818" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-09-17T01:00:16.402258" elapsed="0.000661"/>
</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-09-17T01:00:16.404217" elapsed="0.000484"/>
</kw>
<status status="PASS" start="2026-09-17T01:00:16.403450" elapsed="0.001375"/>
</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-09-17T00:50:09.652087" elapsed="606.752785"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.407450" 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-09-17T01:00:16.406890" elapsed="0.000791"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.410338" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-09-17T01:00:16.409592" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-09-17T01:00:16.411275" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-09-17T01:00:16.410750" elapsed="0.000649"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-17T01:00:16.413984" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-09-17T01:00:16.413404" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-09-17T01:00:16.413365" elapsed="0.000820"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-17T01:00:16.415029" 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-09-17T01:00:16.415305" 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-09-17T01:00:16.414637" elapsed="0.000732"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.416641" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.96 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.184" 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-09-17T01:00:16.415807" elapsed="0.000962"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-17T01:00:16.418065" 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-09-17T01:00:16.417199" elapsed="0.000925"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-17T01:00:16.420103" level="INFO">Length is 0.</msg>
<msg time="2026-09-17T01:00:16.420314" 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-09-17T01:00:16.419424" elapsed="0.000942"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-17T01:00:16.420703" elapsed="0.000695"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-17T01:00:16.423315" level="INFO">Logging into '10.30.171.184:22' as 'jenkins'.</msg>
<msg time="2026-09-17T01:00:17.062374" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Thu Sep 17 01:00:16 UTC 2026

  System load:  0.22               Processes:             105
  Usage of /:   19.9% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Thu Sep 17 00:50:10 2026 from 10.30.170.36
[?2004h[jenkins@releng-63164-401-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-09-17T01:00:16.422670" elapsed="0.639907"/>
</kw>
<msg time="2026-09-17T01:00:17.062663" 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-09-17T01:00:16.421777" elapsed="0.640968"/>
</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-09-17T01:00:16.418607" elapsed="0.644255"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-17T01:00:17.063423" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.96 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-17T01:10:23.096306" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-17T01:10:23.096916" level="INFO">${stdout} = </msg>
<msg time="2026-09-17T01:10:23.097011" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96: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-09-17T01:00:17.063128" elapsed="606.033935"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T01:10:23.097557" elapsed="0.000682"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.099487" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.96. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:01:22.189 16  switches: flows:  93025 92309 91449 90914 91270 90699 91055 89230 89553 89077 88684 88041 88809 87766 88533 87668  total = 23.968033 per ms 
01:02:22.290 16  switches: flows:  90080 90205 90310 90846 89866 89448 88434 88036 87955 87184 87512 87628 85850 85843 85720 85767  total = 23.472190 per ms 
01:03:22.391 16  switches: flows:  89794 90570 89330 88749 90022 90312 88637 88320 86026 86619 85407 85212 85696 87543 86427 85327  total = 23.360846 per ms 
01:04:22.493 16  switches: flows:  88837 90475 89860 87934 89479 89166 88663 88392 86467 87030 85828 85781 85741 85875 87276 85520  total = 23.333118 per ms 
01:05:22.594 16  switches: flows:  89981 89748 89616 89053 88922 88252 87760 87457 86636 85194 85335 85886 84489 85468 86165 84368  total = 23.200120 per ms 
01:06:22.695 16  switches: flows:  89775 88843 88880 88039 89040 87235 87799 87470 86030 85674 85408 84993 84410 85730 86433 85523  total = 23.149345 per ms 
01:07:22.796 16  switches: flows:  91090 91143 91425 90894 90769 88594 87973 89147 87135 86283 85914 87122 86260 86132 87112 85014  total = 23.494235 per ms 
01:08:22.896 16  switches: flows:  89923 89651 89908 88415 90405 88056 86975 88506 86376 86074 85233 85541 86010 85268 87081 86102  total = 23.286542 per ms 
01:09:22.997 16  switches: flows:  88329 87259 89289 87591 88463 87549 85745 85710 84581 84656 84538 83552 84279 84531 86658 83384  total = 22.897026 per ms 
01:10:23.097 16  switches: flows:  90117 90288 90935 90153 89094 88567 87216 89455 86170 87731 86243 86626 86506 85912 87805 86282  total = 23.445878 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 22897.03/23494.23/23293.26/7766.48 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:10:23.098724" elapsed="0.001101"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-17T01:10:23.100255" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-09-17T01:10:23.100004" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-09-17T01:10:23.099943" elapsed="0.000502"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-17T01:10:23.100662" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-09-17T01:10:23.100590" elapsed="0.000154"/>
</branch>
<status status="NOT RUN" start="2026-09-17T01:10:23.100557" elapsed="0.000251"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-17T01:10:23.100871" elapsed="0.000027"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-17T01:10:23.102421" elapsed="0.000739"/>
</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-09-17T01:10:23.103561" elapsed="0.000337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-17T01:10:23.104169" elapsed="0.000197"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-17T01:10:23.101538" elapsed="0.002933"/>
</kw>
<msg time="2026-09-17T01:10:23.104725" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96: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-09-17T01:00:16.412152" elapsed="606.692627"/>
</kw>
<status status="PASS" start="2026-09-17T01:00:16.411455" elapsed="606.693444"/>
</branch>
<status status="PASS" start="2026-09-17T01:00:16.410700" elapsed="606.694247"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.105960" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.96:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.96. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:01:22.189 16  switches: flows:  93025 92309 91449 90914 91270 90699 91055 89230 89553 89077 88684 88041 88809 87766 88533 87668  total = 23.968033 per ms 
01:02:22.290 16  switches: flows:  90080 90205 90310 90846 89866 89448 88434 88036 87955 87184 87512 87628 85850 85843 85720 85767  total = 23.472190 per ms 
01:03:22.391 16  switches: flows:  89794 90570 89330 88749 90022 90312 88637 88320 86026 86619 85407 85212 85696 87543 86427 85327  total = 23.360846 per ms 
01:04:22.493 16  switches: flows:  88837 90475 89860 87934 89479 89166 88663 88392 86467 87030 85828 85781 85741 85875 87276 85520  total = 23.333118 per ms 
01:05:22.594 16  switches: flows:  89981 89748 89616 89053 88922 88252 87760 87457 86636 85194 85335 85886 84489 85468 86165 84368  total = 23.200120 per ms 
01:06:22.695 16  switches: flows:  89775 88843 88880 88039 89040 87235 87799 87470 86030 85674 85408 84993 84410 85730 86433 85523  total = 23.149345 per ms 
01:07:22.796 16  switches: flows:  91090 91143 91425 90894 90769 88594 87973 89147 87135 86283 85914 87122 86260 86132 87112 85014  total = 23.494235 per ms 
01:08:22.896 16  switches: flows:  89923 89651 89908 88415 90405 88056 86975 88506 86376 86074 85233 85541 86010 85268 87081 86102  total = 23.286542 per ms 
01:09:22.997 16  switches: flows:  88329 87259 89289 87591 88463 87549 85745 85710 84581 84656 84538 83552 84279 84531 86658 83384  total = 22.897026 per ms 
01:10:23.097 16  switches: flows:  90117 90288 90935 90153 89094 88567 87216 89455 86170 87731 86243 86626 86506 85912 87805 86282  total = 23.445878 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 22897.03/23494.23/23293.26/7766.48 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:10:23.105328" elapsed="0.000782"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-09-17T01:10:23.106444" elapsed="0.000806"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-17T01:10:23.108060" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-17T01:10:23.108238" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 22897.03/23494.23/23293.26/7766.48 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-09-17T01:10:23.107641" elapsed="0.000647"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T01:10:23.109183" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 22897.03/23494.23/23293.26/7766.48 | 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-09-17T01:10:23.108684" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.110478" 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-09-17T01:10:23.109660" elapsed="0.000962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.111714" level="INFO">22897.03/23494.23/23293.26/7766.48</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:10:23.111027" elapsed="0.000819"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T01:10:23.112835" 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-09-17T01:10:23.112177" elapsed="0.000712"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-17T01:10:23.113945" level="INFO">@{result_value_list} = [ 22897.03 | 23494.23 | 23293.26 | 7766.48 ]</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-09-17T01:10:23.113286" elapsed="0.000713"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.114964" level="INFO">Length is 4.</msg>
<msg time="2026-09-17T01:10:23.115133" 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-09-17T01:10:23.114318" elapsed="0.000863"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.117199" level="INFO">min :: 22897.03</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-09-17T01:10:23.116135" elapsed="0.001175"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-17T01:10:23.115650" elapsed="0.001727"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.118867" level="INFO">max :: 23494.23</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:10:23.117949" elapsed="0.001027"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-17T01:10:23.117575" elapsed="0.001466"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.120477" level="INFO">avg :: 23293.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-09-17T01:10:23.119581" elapsed="0.001039"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-17T01:10:23.119198" elapsed="0.001488"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.122131" level="INFO">stdev :: 7766.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-17T01:10:23.121219" elapsed="0.001020"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-17T01:10:23.120865" elapsed="0.001439"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-17T01:10:23.115300" elapsed="0.007061"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.123656" level="INFO">${min} = 22897.03</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:10:23.122719" elapsed="0.001003"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.125126" level="INFO">${max} = 23494.23</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:10:23.124130" elapsed="0.001055"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.126488" level="INFO">${average} = 23293.26</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:10:23.125539" elapsed="0.001037"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.127779" level="INFO">${stdev} = 7766.48</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-09-17T01:10:23.126927" elapsed="0.000928"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.129062" level="INFO">${date} = 2026-09-17 01:10:23</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-17T01:10:23.128250" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.130287" level="INFO">CBench Result: 2026-09-17 01:10:23,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,22897.03,23494.23,23293.26,7766.48</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-09-17T01:10:23.129557" elapsed="0.000841"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-17T01:10:23.132352" 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-09-17T01:10:23.131558" elapsed="0.000961"/>
</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-09-17T01:10:23.132885" elapsed="0.001199"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-17T01:10:23.130681" elapsed="0.003539"/>
</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-09-17T01:00:16.408375" elapsed="606.725964"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.135333" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-09-17T01:10:23.134680" elapsed="0.000772"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-17T01:10:23.138054" 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-09-17T01:10:23.137083" elapsed="0.001027"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-09-17T01:10:23.138527" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-09-17T01:10:23.138261" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-09-17T01:10:23.138220" elapsed="0.000482"/>
</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-09-17T01:10:23.139023" elapsed="0.000044"/>
</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-09-17T01:10:23.139351" elapsed="0.000041"/>
</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-09-17T01:10:23.139890" elapsed="0.000051"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-09-17T01:10:23.140239" elapsed="0.000041"/>
</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-09-17T01:10:23.140909" elapsed="0.000029"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="NOT RUN" start="2026-09-17T01:10:23.141113" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-09-17T01:10:23.141359" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds The given `tags` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-09-17T01:10:23.141660" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-09-17T01:10:23.141461" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-09-17T01:10:23.141440" elapsed="0.000315"/>
</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-09-17T01:10:23.136198" elapsed="0.005635"/>
</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-09-17T01:00:16.406050" elapsed="606.735841"/>
</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-09-17T00:40:00.574090" elapsed="1822.569068"/>
</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>
