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

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-05-26T00:50:58.564522" elapsed="0.645593"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-26T00:50:59.260538" level="INFO">@root&gt;log:set ERROR</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-05-26T00:50:59.210432" elapsed="0.050290"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-26T00:50:59.263002" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-26T00:50:59.263155" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-05-26T00:50:59.261067" elapsed="0.002129"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-05-26T00:50:59.263389" elapsed="0.000281"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T00:50:59.263837" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T00:50:59.264606" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T00:50:59.264239" elapsed="0.000422"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T00:50:59.264716" elapsed="0.000065"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.49
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-26T00:50:58.563008" elapsed="0.701901"/>
</kw>
<arg>3x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Issue Command On Karaf Console</arg>
<arg>log:set ${log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-05-26T00:50:58.559342" elapsed="0.705634"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T00:50:59.265634" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-26T00:50:59.265175" elapsed="0.000518"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T00:50:59.266302" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-26T00:50:59.266033" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-26T00:50:59.266971" level="INFO">${duration_in_ms} = 60000</msg>
<var>${duration_in_ms}</var>
<arg>${duration_in_secs} * 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-26T00:50:59.266546" elapsed="0.000453"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T00:50:59.267528" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-26T00:50:59.267171" elapsed="0.000401"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-26T00:50:59.268133" level="INFO">${test_timeout} = 900.0</msg>
<var>${test_timeout}</var>
<arg>(${loops} * ${duration_in_secs}) * 1.5</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-26T00:50:59.267724" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T00:50:59.268679" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-26T00:50:59.268339" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="File Should Exist" owner="OperatingSystem">
<arg>${cbench_executable}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="NOT RUN" start="2026-05-26T00:50:59.269036" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-26T00:50:59.268815" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T00:50:59.274415" level="INFO">${conn_id} = 2</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T00:50:59.273986" elapsed="0.000457"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T00:50:59.275555" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T00:50:59.275642" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-26T00:50:59.275060" elapsed="0.000607"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T00:50:59.275815" elapsed="0.000591"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T00:50:59.277799" level="INFO">Logging into '10.30.170.18:22' as 'jenkins'.</msg>
<msg time="2026-05-26T00:51:00.042250" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 00:50:59 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-63164-265-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-26T00:50:59.277099" elapsed="0.765347"/>
</kw>
<msg time="2026-05-26T00:51:00.042590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T00:50:59.276647" elapsed="0.766069"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-26T00:50:59.274675" elapsed="0.768190"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.049824" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<arg>${file}</arg>
<doc>Fails if the given ``path`` does NOT point to an existing file.</doc>
<status status="PASS" start="2026-05-26T00:51:00.043137" elapsed="0.008524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T00:51:00.051958" elapsed="0.000460"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-05-26T00:50:59.273257" elapsed="0.779290"/>
</kw>
<status status="PASS" start="2026-05-26T00:50:59.269202" elapsed="0.783402"/>
</branch>
<status status="PASS" start="2026-05-26T00:50:59.268788" elapsed="0.783864"/>
</if>
<kw name="Should Be True" owner="BuiltIn">
<arg>${loops} &gt;= 2</arg>
<arg>If number of loops is less than 2, cbench will not run</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-26T00:51:00.052871" elapsed="0.000776"/>
</kw>
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-05-26T00:51:00.060005" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-05-26T00:51:00.059830" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-05-26T00:51:00.059795" elapsed="0.000320"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-05-26T00:51:00.066621" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-05-26T00:51:00.066501" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-05-26T00:51:00.066468" elapsed="0.000238"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T00:51:00.066882" elapsed="0.000567"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.067998" level="INFO">Logging into '10.30.171.49:8101' as 'karaf'.</msg>
<msg time="2026-05-26T00:51:00.268768" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-05-26T00:51:00.067663" elapsed="0.201335"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.367981" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-openflowplugin-drop-test</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-05-26T00:51:00.269298" elapsed="0.098870"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.380196" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-26T00:51:00.380426" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-05-26T00:51:00.368498" elapsed="0.011961"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-05-26T00:51:00.380645" elapsed="0.000313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T00:51:00.381116" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T00:51:00.381877" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T00:51:00.381545" elapsed="0.000387"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T00:51:00.381985" elapsed="0.000055"/>
</return>
<msg time="2026-05-26T00:51:00.382193" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.3           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.49
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-26T00:51:00.066123" elapsed="0.316102"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-26T00:51:00.382371" elapsed="0.000614"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T00:51:00.383038" elapsed="0.000031"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-05-26T00:51:00.059373" elapsed="0.323795"/>
</kw>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-05-26T00:51:00.386955" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-05-26T00:51:00.386815" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-05-26T00:51:00.386791" elapsed="0.000236"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T00:51:00.387158" elapsed="0.000471"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.388039" level="INFO">Logging into '10.30.171.49:8101' as 'karaf'.</msg>
<msg time="2026-05-26T00:51:00.570970" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-05-26T00:51:00.387778" elapsed="0.183370"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.595458" level="INFO">@root&gt;dropallpacketsrpc on</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-05-26T00:51:00.571421" elapsed="0.024200"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.598310" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-26T00:51:00.598433" level="INFO">${output} = [?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-05-26T00:51:00.595884" elapsed="0.002583"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-05-26T00:51:00.598625" elapsed="0.000279"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T00:51:00.599053" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T00:51:00.599775" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T00:51:00.599431" elapsed="0.000394"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-26T00:51:00.599879" elapsed="0.000055"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.49
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-05-26T00:51:00.386453" elapsed="0.213602"/>
</kw>
<status status="PASS" start="2026-05-26T00:50:58.557246" elapsed="2.042872"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T00:51:00.602431" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T00:51:00.601236" elapsed="0.001297"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T00:51:00.604120" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-26T00:51:00.603763" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-26T00:51:00.604551" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-26T00:51:00.604286" elapsed="0.000326"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-26T00:51:00.607730" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-05-26T00:51:00.607432" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-05-26T00:51:00.607410" elapsed="0.000412"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.608199" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-05-26T00:51:00.607960" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T00:51:00.609024" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.49 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.18" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T00:51:00.608513" elapsed="0.000572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.609736" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T00:51:00.609226" elapsed="0.000537"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T00:51:00.610712" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T00:51:00.610806" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-26T00:51:00.610364" elapsed="0.000466"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T00:51:00.610977" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.612263" level="INFO">Logging into '10.30.170.18:22' as 'jenkins'.</msg>
<msg time="2026-05-26T00:51:00.952389" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 00:50:59 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue May 26 00:50:59 2026 from 10.30.170.177
[?2004h[jenkins@releng-63164-265-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-26T00:51:00.611844" elapsed="0.340790"/>
</kw>
<msg time="2026-05-26T00:51:00.952720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T00:51:00.611494" elapsed="0.341312"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-26T00:51:00.609974" elapsed="0.342952"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-26T00:51:00.953703" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.49 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-26T01:01:07.070425" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-26T01:01:07.070941" level="INFO">${stdout} = </msg>
<msg time="2026-05-26T01:01:07.071050" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-05-26T00:51:00.953150" elapsed="606.117962"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:01:07.071538" elapsed="0.000530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.072876" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.49. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:52:06.153 16  switches: flows:  115041 115617 114327 113251 110286 113853 110746 110528 103249 104520 104715 103997 106151 104804 104896 105785  total = 29.029433 per ms 
00:53:06.254 16  switches: flows:  127144 128541 129548 127142 122511 126089 124689 123437 115800 114573 116449 117658 118142 114984 117075 116145  total = 32.278210 per ms 
00:54:06.355 16  switches: flows:  124089 123630 122659 121513 118448 121550 119156 120072 112385 112505 112637 111685 113403 113044 111838 112467  total = 31.132660 per ms 
00:55:06.456 16  switches: flows:  131801 130745 128986 127322 123878 124943 124866 125001 117679 118658 119137 117374 120594 116924 117003 116631  total = 32.637840 per ms 
00:56:06.556 16  switches: flows:  135729 131646 130691 128987 125352 126558 125559 126760 119037 118838 119464 119405 120816 118987 119215 119344  total = 33.051251 per ms 
00:57:06.656 16  switches: flows:  136408 132717 130462 130553 127880 128598 129021 129218 121524 121442 122133 123094 125761 122337 121674 121356  total = 33.680052 per ms 
00:58:06.757 16  switches: flows:  137894 135150 131361 131102 130660 129672 132211 130269 122960 122171 124014 124445 128219 125573 125030 122304  total = 34.160196 per ms 
00:59:06.857 16  switches: flows:  138720 135588 132447 131927 131995 132068 133583 132800 124556 124900 126751 127302 129125 127514 127245 124447  total = 34.624936 per ms 
01:00:06.958 16  switches: flows:  138229 135477 131798 132533 130524 131554 132940 132306 123932 126939 128373 127507 128894 127367 127798 123961  total = 34.610991 per ms 
01:01:07.058 16  switches: flows:  137059 133544 131829 130350 131070 130270 129784 130070 123016 124686 126577 126642 126060 126601 124992 123236  total = 34.205945 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31132.66/34624.94/33375.79/11181.89 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.072325" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-26T01:01:07.073453" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-05-26T01:01:07.073239" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-05-26T01:01:07.073190" elapsed="0.000443"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-26T01:01:07.073770" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-05-26T01:01:07.073717" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-05-26T01:01:07.073695" elapsed="0.000162"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-26T01:01:07.073905" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T01:01:07.077503" elapsed="0.000489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T01:01:07.078265" elapsed="0.000274"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:01:07.078728" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-26T01:01:07.074395" elapsed="0.004552"/>
</kw>
<msg time="2026-05-26T01:01:07.079138" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-05-26T00:51:00.605001" elapsed="606.474175"/>
</kw>
<status status="PASS" start="2026-05-26T00:51:00.604647" elapsed="606.474597"/>
</branch>
<status status="PASS" start="2026-05-26T00:51:00.604223" elapsed="606.475057"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.079943" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.49. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:52:06.153 16  switches: flows:  115041 115617 114327 113251 110286 113853 110746 110528 103249 104520 104715 103997 106151 104804 104896 105785  total = 29.029433 per ms 
00:53:06.254 16  switches: flows:  127144 128541 129548 127142 122511 126089 124689 123437 115800 114573 116449 117658 118142 114984 117075 116145  total = 32.278210 per ms 
00:54:06.355 16  switches: flows:  124089 123630 122659 121513 118448 121550 119156 120072 112385 112505 112637 111685 113403 113044 111838 112467  total = 31.132660 per ms 
00:55:06.456 16  switches: flows:  131801 130745 128986 127322 123878 124943 124866 125001 117679 118658 119137 117374 120594 116924 117003 116631  total = 32.637840 per ms 
00:56:06.556 16  switches: flows:  135729 131646 130691 128987 125352 126558 125559 126760 119037 118838 119464 119405 120816 118987 119215 119344  total = 33.051251 per ms 
00:57:06.656 16  switches: flows:  136408 132717 130462 130553 127880 128598 129021 129218 121524 121442 122133 123094 125761 122337 121674 121356  total = 33.680052 per ms 
00:58:06.757 16  switches: flows:  137894 135150 131361 131102 130660 129672 132211 130269 122960 122171 124014 124445 128219 125573 125030 122304  total = 34.160196 per ms 
00:59:06.857 16  switches: flows:  138720 135588 132447 131927 131995 132068 133583 132800 124556 124900 126751 127302 129125 127514 127245 124447  total = 34.624936 per ms 
01:00:06.958 16  switches: flows:  138229 135477 131798 132533 130524 131554 132940 132306 123932 126939 128373 127507 128894 127367 127798 123961  total = 34.610991 per ms 
01:01:07.058 16  switches: flows:  137059 133544 131829 130350 131070 130270 129784 130070 123016 124686 126577 126642 126060 126601 124992 123236  total = 34.205945 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 31132.66/34624.94/33375.79/11181.89 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.079511" elapsed="0.000538"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-26T01:01:07.080257" elapsed="0.000567"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-26T01:01:07.081378" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-26T01:01:07.081530" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 31132.66/34624.94/33375.79/11181.89 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-05-26T01:01:07.081051" elapsed="0.000517"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:01:07.082215" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 31132.66/34624.94/33375.79/11181.89 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:01:07.081783" elapsed="0.000474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.084936" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.082463" elapsed="0.002531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.087374" level="INFO">31132.66/34624.94/33375.79/11181.89</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.085146" elapsed="0.002286"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:01:07.089794" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:01:07.087600" elapsed="0.002224"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:01:07.092293" level="INFO">@{result_value_list} = [ 31132.66 | 34624.94 | 33375.79 | 11181.89 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:01:07.090056" elapsed="0.002265"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.092820" level="INFO">Length is 4.</msg>
<msg time="2026-05-26T01:01:07.092912" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-26T01:01:07.092493" elapsed="0.000443"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.097722" level="INFO">min :: 31132.66</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.093372" elapsed="0.004409"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-26T01:01:07.093236" elapsed="0.004582"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.102393" level="INFO">max :: 34624.94</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.098043" elapsed="0.004412"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-26T01:01:07.097915" elapsed="0.004594"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.109406" level="INFO">avg :: 33375.79</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.102747" elapsed="0.006755"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-26T01:01:07.102608" elapsed="0.006941"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.114317" level="INFO">stdev :: 11181.89</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.109806" elapsed="0.004580"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-26T01:01:07.109658" elapsed="0.004770"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-26T01:01:07.093014" elapsed="0.021452"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.118578" level="INFO">${min} = 31132.66</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:01:07.114677" elapsed="0.003930"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.122956" level="INFO">${max} = 34624.94</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:01:07.118769" elapsed="0.004217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.127215" level="INFO">${average} = 33375.79</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:01:07.123151" elapsed="0.004092"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.131252" level="INFO">${stdev} = 11181.89</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:01:07.127403" elapsed="0.003880"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.131872" level="INFO">${date} = 2026-05-26 01:01:07</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-26T01:01:07.131468" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.132489" level="INFO">CBench Result: 2026-05-26 01:01:07,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,31132.66,34624.94,33375.79,11181.89</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.132051" elapsed="0.000498"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T01:01:07.133668" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-26T01:01:07.133206" elapsed="0.000530"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-26T01:01:07.133888" elapsed="0.000561"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-26T01:01:07.132716" elapsed="0.001823"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>${latency_results_file}</arg>
<status status="PASS" start="2026-05-26T00:51:00.603056" elapsed="606.531546"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.135146" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-26T01:01:07.134784" elapsed="0.000421"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-05-26T01:01:07.135785" elapsed="0.000273"/>
</kw>
<status status="PASS" start="2026-05-26T01:01:07.135439" elapsed="0.000690"/>
</kw>
<doc>cbench executed in default latency mode. Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-05-26T00:51:00.600268" elapsed="606.535898"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.137829" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.137268" elapsed="0.000641"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.139625" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-26T01:01:07.139174" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-26T01:01:07.140214" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:01:07.139892" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-26T01:01:07.144102" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:01:07.143671" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-05-26T01:01:07.143624" elapsed="0.000607"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-26T01:01:07.144732" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-05-26T01:01:07.144390" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.145698" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.49 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.18" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:01:07.145105" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T01:01:07.146530" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T01:01:07.145956" elapsed="0.000609"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T01:01:07.147777" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T01:01:07.147886" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-26T01:01:07.147343" elapsed="0.000574"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T01:01:07.148105" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T01:01:07.149643" level="INFO">Logging into '10.30.170.18:22' as 'jenkins'.</msg>
<msg time="2026-05-26T01:01:07.750451" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 01:01:07 UTC 2026

  System load:  1.01               Processes:             104
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.18
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue May 26 00:51:00 2026 from 10.30.170.177
[?2004h[jenkins@releng-63164-265-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-26T01:01:07.149173" elapsed="0.601797"/>
</kw>
<msg time="2026-05-26T01:01:07.751149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T01:01:07.148739" elapsed="0.602613"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-26T01:01:07.146843" elapsed="0.604777"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-26T01:01:07.752786" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.49 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-26T01:11:13.833835" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-26T01:11:13.834337" level="INFO">${stdout} = </msg>
<msg time="2026-05-26T01:11:13.834407" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-05-26T01:01:07.752087" elapsed="606.082356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:11:13.834794" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.836115" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.49. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:02:12.876 16  switches: flows:  529677 524699 536039 522125 533209 525299 535269 527605 527689 520502 527620 511064 514543 526389 524924 518348  total = 140.083350 per ms 
01:03:13.017 16  switches: flows:  527625 530621 534131 532024 536989 532979 530506 535889 529504 530203 527817 533336 534141 540243 539457 527922  total = 141.722370 per ms 
01:04:13.119 16  switches: flows:  607779 603039 607024 601632 603960 604720 594883 602302 605761 608298 611522 609120 602561 610960 606934 597040  total = 161.020999 per ms 
01:05:13.220 16  switches: flows:  581183 583189 582790 578980 579390 584949 581639 586356 578583 590125 587265 583420 572344 586534 585598 581080  total = 155.129848 per ms 
01:06:13.321 16  switches: flows:  570065 568845 570126 579833 566251 567483 566259 568094 572420 570033 575364 567034 573304 566589 566071 569060  total = 151.691563 per ms 
01:07:13.422 16  switches: flows:  601231 596590 597901 609376 599239 607559 601258 579885 599066 605755 604525 603250 601591 601418 600828 590352  total = 159.728427 per ms 
01:08:13.524 16  switches: flows:  600066 611854 611470 623266 613786 614227 614415 621014 618359 614071 613471 616373 619989 616166 605662 616686  total = 163.572118 per ms 
01:09:13.626 16  switches: flows:  589779 594464 586946 598353 590421 596637 582844 586396 586582 590818 589439 593723 595656 584481 590546 592208  total = 157.223876 per ms 
01:10:13.727 16  switches: flows:  594486 612902 611190 606088 597217 605210 606353 605154 605579 611468 605870 613091 608216 601533 605948 603395  total = 161.290113 per ms 
01:11:13.828 16  switches: flows:  588752 584093 589681 594010 587277 590808 589555 584911 596200 582361 592729 580063 594875 586137 585077 587247  total = 156.634304 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 141722.37/163572.12/156445.96/52517.78 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.835566" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-26T01:11:13.836687" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-05-26T01:11:13.836457" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-05-26T01:11:13.836414" elapsed="0.000416"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-26T01:11:13.836965" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-05-26T01:11:13.836912" elapsed="0.000110"/>
</branch>
<status status="NOT RUN" start="2026-05-26T01:11:13.836890" elapsed="0.000163"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-26T01:11:13.837096" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T01:11:13.840657" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T01:11:13.841341" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:11:13.841776" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-26T01:11:13.837561" elapsed="0.004434"/>
</kw>
<msg time="2026-05-26T01:11:13.842176" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with ...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-05-26T01:01:07.140774" elapsed="606.701439"/>
</kw>
<status status="PASS" start="2026-05-26T01:01:07.140318" elapsed="606.701962"/>
</branch>
<status status="PASS" start="2026-05-26T01:01:07.139865" elapsed="606.702448"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.842978" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.49. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:02:12.876 16  switches: flows:  529677 524699 536039 522125 533209 525299 535269 527605 527689 520502 527620 511064 514543 526389 524924 518348  total = 140.083350 per ms 
01:03:13.017 16  switches: flows:  527625 530621 534131 532024 536989 532979 530506 535889 529504 530203 527817 533336 534141 540243 539457 527922  total = 141.722370 per ms 
01:04:13.119 16  switches: flows:  607779 603039 607024 601632 603960 604720 594883 602302 605761 608298 611522 609120 602561 610960 606934 597040  total = 161.020999 per ms 
01:05:13.220 16  switches: flows:  581183 583189 582790 578980 579390 584949 581639 586356 578583 590125 587265 583420 572344 586534 585598 581080  total = 155.129848 per ms 
01:06:13.321 16  switches: flows:  570065 568845 570126 579833 566251 567483 566259 568094 572420 570033 575364 567034 573304 566589 566071 569060  total = 151.691563 per ms 
01:07:13.422 16  switches: flows:  601231 596590 597901 609376 599239 607559 601258 579885 599066 605755 604525 603250 601591 601418 600828 590352  total = 159.728427 per ms 
01:08:13.524 16  switches: flows:  600066 611854 611470 623266 613786 614227 614415 621014 618359 614071 613471 616373 619989 616166 605662 616686  total = 163.572118 per ms 
01:09:13.626 16  switches: flows:  589779 594464 586946 598353 590421 596637 582844 586396 586582 590818 589439 593723 595656 584481 590546 592208  total = 157.223876 per ms 
01:10:13.727 16  switches: flows:  594486 612902 611190 606088 597217 605210 606353 605154 605579 611468 605870 613091 608216 601533 605948 603395  total = 161.290113 per ms 
01:11:13.828 16  switches: flows:  588752 584093 589681 594010 587277 590808 589555 584911 596200 582361 592729 580063 594875 586137 585077 587247  total = 156.634304 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 141722.37/163572.12/156445.96/52517.78 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.842530" elapsed="0.000552"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-26T01:11:13.843242" elapsed="0.000402"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-26T01:11:13.844026" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-26T01:11:13.844117" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 141722.37/163572.12/156445.96/52517.78 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-05-26T01:11:13.843804" elapsed="0.000338"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:11:13.844568" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 141722.37/163572.12/156445.96/52517.78 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:11:13.844294" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.846997" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.844741" elapsed="0.002313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.849456" level="INFO">141722.37/163572.12/156445.96/52517.78</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.847201" elapsed="0.002328"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:11:13.851949" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:11:13.849679" elapsed="0.002298"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:11:13.854415" level="INFO">@{result_value_list} = [ 141722.37 | 163572.12 | 156445.96 | 52517.78 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:11:13.852167" elapsed="0.002277"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.854998" level="INFO">Length is 4.</msg>
<msg time="2026-05-26T01:11:13.855108" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-26T01:11:13.854617" elapsed="0.000516"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.859881" level="INFO">min :: 141722.37</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.855538" elapsed="0.004402"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-26T01:11:13.855387" elapsed="0.004588"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.864841" level="INFO">max :: 163572.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-05-26T01:11:13.860194" elapsed="0.004706"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-26T01:11:13.860066" elapsed="0.004871"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.869639" level="INFO">avg :: 156445.96</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.865156" elapsed="0.004541"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-26T01:11:13.865028" elapsed="0.004705"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.874334" level="INFO">stdev :: 52517.78</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.869954" elapsed="0.004438"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-26T01:11:13.869824" elapsed="0.004604"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-26T01:11:13.855200" elapsed="0.019260"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.878349" level="INFO">${min} = 141722.37</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:11:13.874640" elapsed="0.003737"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.882499" level="INFO">${max} = 163572.12</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:11:13.878549" elapsed="0.003978"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.886378" level="INFO">${average} = 156445.96</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:11:13.882681" elapsed="0.003723"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.890286" level="INFO">${stdev} = 52517.78</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:11:13.886569" elapsed="0.003745"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.890846" level="INFO">${date} = 2026-05-26 01:11:13</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-26T01:11:13.890486" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.891451" level="INFO">CBench Result: 2026-05-26 01:11:13,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,141722.37,163572.12,156445.96,52517.78</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.891034" elapsed="0.000490"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T01:11:13.892588" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-26T01:11:13.892159" elapsed="0.000497"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-26T01:11:13.892806" elapsed="0.000466"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-26T01:11:13.891676" elapsed="0.001663"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-05-26T01:01:07.138431" elapsed="606.754969"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.893882" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-26T01:11:13.893565" elapsed="0.000374"/>
</kw>
<kw name="Log Results As Zero If Cbench Timed Out" type="TEARDOWN">
<kw name="Run Keyword If Timeout Occurred" owner="BuiltIn">
<arg>Log Results And Determine Status</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_filename}</arg>
<doc>Runs the given keyword if either a test or a keyword timeout has occurred.</doc>
<status status="PASS" start="2026-05-26T01:11:13.894446" elapsed="0.000292"/>
</kw>
<status status="PASS" start="2026-05-26T01:11:13.894142" elapsed="0.000667"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-05-26T01:01:07.136566" elapsed="606.758279"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.896393" level="INFO">Cbench tests using 10 iterations of 60 second tests. Switch Count: 16. Unique MACS to cycle: 100</msg>
<arg>Cbench tests using ${loops} iterations of ${duration_in_secs} second tests. Switch Count: ${switch_count}. Unique MACS to cycle: ${num_of_unique_macs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.895910" elapsed="0.000543"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.897704" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-05-26T01:11:13.897351" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-26T01:11:13.898094" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:11:13.897870" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-26T01:11:13.901056" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:11:13.900803" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-05-26T01:11:13.900785" elapsed="0.000350"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-26T01:11:13.901458" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-05-26T01:11:13.901267" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.902179" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.49 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.18" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:11:13.901753" elapsed="0.000485"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-26T01:11:13.902793" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T01:11:13.902377" elapsed="0.000444"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T01:11:13.903927" level="INFO">Length is 0.</msg>
<msg time="2026-05-26T01:11:13.904021" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-26T01:11:13.903430" elapsed="0.000616"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T01:11:13.904189" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-26T01:11:13.905391" level="INFO">Logging into '10.30.170.18:22' as 'jenkins'.</msg>
<msg time="2026-05-26T01:11:14.510551" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Tue May 26 01:11:14 UTC 2026

  System load:  0.48               Processes:             105
  Usage of /:   19.7% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.18
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue May 26 01:01:07 2026 from 10.30.170.177
[?2004h[jenkins@releng-63164-265-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-05-26T01:11:13.905031" elapsed="0.605708"/>
</kw>
<msg time="2026-05-26T01:11:14.510824" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T01:11:13.904685" elapsed="0.606219"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-05-26T01:11:13.903055" elapsed="0.607959"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-26T01:11:14.511540" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.49 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-26T01:21:20.573302" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-26T01:21:20.574011" level="INFO">${stdout} = </msg>
<msg time="2026-05-26T01:21:20.574134" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-05-26T01:11:14.511228" elapsed="606.062969"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:21:20.574766" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.576981" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.49. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:12:19.663 16  switches: flows:  130405 131053 130612 129789 130871 129409 129174 130937 128441 125278 125293 123803 125827 124223 124112 126760  total = 34.099783 per ms 
01:13:19.764 16  switches: flows:  136431 136426 136209 134943 133254 134875 135363 130651 131545 129841 130379 130605 130333 132282 130154 129656  total = 35.323447 per ms 
01:14:19.866 16  switches: flows:  137998 137267 136305 134908 134385 132448 137216 132365 132101 129938 130261 130859 131905 133035 130037 129803  total = 35.454597 per ms 
01:15:19.967 16  switches: flows:  139641 135274 135060 134232 133969 133492 136549 132356 132408 127332 128827 130163 131658 131263 129716 131063  total = 35.324354 per ms 
01:16:20.069 16  switches: flows:  134971 133401 132589 131990 130782 131374 135243 128794 126474 126424 126009 126812 129760 130554 127654 126918  total = 34.604498 per ms 
01:17:20.170 16  switches: flows:  133928 132082 130823 131965 130673 130273 133372 130563 126503 126644 126127 127427 127951 129845 126256 128748  total = 34.495116 per ms 
01:18:20.271 16  switches: flows:  137612 135408 135255 135728 134675 133407 136449 131647 131604 130332 130739 129662 133158 131737 130014 130735  total = 35.410220 per ms 
01:19:20.372 16  switches: flows:  137904 134456 133890 134948 131879 132484 134915 132492 131682 128770 129302 130432 130901 132316 129526 130573  total = 35.215673 per ms 
01:20:20.473 16  switches: flows:  140095 138542 138220 139227 135740 135738 138214 133010 133529 133096 132714 131576 134349 134827 132279 131753  total = 35.988335 per ms 
01:21:20.575 16  switches: flows:  141633 137624 137534 138144 135676 139095 140798 135411 135718 132229 133162 132799 135770 135839 134317 134558  total = 36.277697 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 34495.12/36277.70/35343.77/11793.46 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.576215" elapsed="0.001077"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-26T01:21:20.577818" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-05-26T01:21:20.577513" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-05-26T01:21:20.577423" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-26T01:21:20.578239" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-05-26T01:21:20.578158" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-05-26T01:21:20.578123" elapsed="0.000252"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-26T01:21:20.578441" elapsed="0.000034"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-26T01:21:20.584289" elapsed="0.000411"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-05-26T01:21:20.584853" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-26T01:21:20.585155" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-26T01:21:20.579172" elapsed="0.006136"/>
</kw>
<msg time="2026-05-26T01:21:20.585443" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-05-26T01:11:13.898512" elapsed="606.686961"/>
</kw>
<status status="PASS" start="2026-05-26T01:11:13.898183" elapsed="606.687355"/>
</branch>
<status status="PASS" start="2026-05-26T01:11:13.897848" elapsed="606.687715"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.586012" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.49:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.49. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:12:19.663 16  switches: flows:  130405 131053 130612 129789 130871 129409 129174 130937 128441 125278 125293 123803 125827 124223 124112 126760  total = 34.099783 per ms 
01:13:19.764 16  switches: flows:  136431 136426 136209 134943 133254 134875 135363 130651 131545 129841 130379 130605 130333 132282 130154 129656  total = 35.323447 per ms 
01:14:19.866 16  switches: flows:  137998 137267 136305 134908 134385 132448 137216 132365 132101 129938 130261 130859 131905 133035 130037 129803  total = 35.454597 per ms 
01:15:19.967 16  switches: flows:  139641 135274 135060 134232 133969 133492 136549 132356 132408 127332 128827 130163 131658 131263 129716 131063  total = 35.324354 per ms 
01:16:20.069 16  switches: flows:  134971 133401 132589 131990 130782 131374 135243 128794 126474 126424 126009 126812 129760 130554 127654 126918  total = 34.604498 per ms 
01:17:20.170 16  switches: flows:  133928 132082 130823 131965 130673 130273 133372 130563 126503 126644 126127 127427 127951 129845 126256 128748  total = 34.495116 per ms 
01:18:20.271 16  switches: flows:  137612 135408 135255 135728 134675 133407 136449 131647 131604 130332 130739 129662 133158 131737 130014 130735  total = 35.410220 per ms 
01:19:20.372 16  switches: flows:  137904 134456 133890 134948 131879 132484 134915 132492 131682 128770 129302 130432 130901 132316 129526 130573  total = 35.215673 per ms 
01:20:20.473 16  switches: flows:  140095 138542 138220 139227 135740 135738 138214 133010 133529 133096 132714 131576 134349 134827 132279 131753  total = 35.988335 per ms 
01:21:20.575 16  switches: flows:  141633 137624 137534 138144 135676 139095 140798 135411 135718 132229 133162 132799 135770 135839 134317 134558  total = 36.277697 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 34495.12/36277.70/35343.77/11793.46 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.585716" elapsed="0.000369"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-26T01:21:20.586231" elapsed="0.000420"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-26T01:21:20.587043" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-26T01:21:20.587134" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 34495.12/36277.70/35343.77/11793.46 responses/s</msg>
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="PASS" start="2026-05-26T01:21:20.586815" elapsed="0.000344"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:21:20.587629" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 34495.12/36277.70/35343.77/11793.46 | responses/s ]</msg>
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:21:20.587352" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.590033" level="INFO">min/max/avg/stdev</msg>
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.587801" elapsed="0.002289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.592692" level="INFO">34495.12/36277.70/35343.77/11793.46</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.590235" elapsed="0.002516"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:21:20.595149" level="INFO">@{result_name_list} = [ min | max | avg | stdev ]</msg>
<var>@{result_name_list}</var>
<arg>${results_list[5]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:21:20.592901" elapsed="0.002276"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-26T01:21:20.597654" level="INFO">@{result_value_list} = [ 34495.12 | 36277.70 | 35343.77 | 11793.46 ]</msg>
<var>@{result_value_list}</var>
<arg>${results_list[7]}</arg>
<arg>/</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-26T01:21:20.595429" elapsed="0.002253"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.598161" level="INFO">Length is 4.</msg>
<msg time="2026-05-26T01:21:20.598250" level="INFO">${num_stats} = 4</msg>
<var>${num_stats}</var>
<arg>${result_name_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-26T01:21:20.597839" elapsed="0.000436"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.603034" level="INFO">min :: 34495.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-05-26T01:21:20.598685" elapsed="0.004408"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-26T01:21:20.598556" elapsed="0.004574"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.607736" level="INFO">max :: 36277.70</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.603374" elapsed="0.004420"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-26T01:21:20.603221" elapsed="0.004610"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.612337" level="INFO">avg :: 35343.77</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.608043" elapsed="0.004351"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-26T01:21:20.607916" elapsed="0.004513"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.617072" level="INFO">stdev :: 11793.46</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.612686" elapsed="0.004444"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-26T01:21:20.612541" elapsed="0.004625"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-26T01:21:20.598344" elapsed="0.018853"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.621129" level="INFO">${min} = 34495.12</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:21:20.617364" elapsed="0.003797"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.626507" level="INFO">${max} = 36277.70</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:21:20.622634" elapsed="0.003902"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.630416" level="INFO">${average} = 35343.77</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:21:20.626692" elapsed="0.003752"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.634362" level="INFO">${stdev} = 11793.46</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-26T01:21:20.630619" elapsed="0.003770"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.634927" level="INFO">${date} = 2026-05-26 01:21:20</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-05-26T01:21:20.634568" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.635556" level="INFO">CBench Result: 2026-05-26 01:21:20,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,34495.12,36277.70,35343.77,11793.46</msg>
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-26T01:21:20.635102" elapsed="0.000526"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-26T01:21:20.636884" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-05-26T01:21:20.636319" elapsed="0.000634"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${average} &gt; ${threshold}</arg>
<arg>${average} flow_mods per/sec did not exceed threshold of ${threshold}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-26T01:21:20.637107" elapsed="0.000512"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-26T01:21:20.635823" elapsed="0.001866"/>
</kw>
<arg>-m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${latency_threshold}</arg>
<arg>bug.csv</arg>
<status status="PASS" start="2026-05-26T01:11:13.896788" elapsed="606.740961"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.638213" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-05-26T01:21:20.637897" elapsed="0.000372"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-26T01:21:20.639536" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-26T01:21:20.639032" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-05-26T01:21:20.639845" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-05-26T01:21:20.639688" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-05-26T01:21:20.639664" elapsed="0.000278"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.640089" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.640247" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.640406" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.640630" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.640780" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.640924" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.641065" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-05-26T01:21:20.641281" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-26T01:21:20.641146" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-05-26T01:21:20.641130" elapsed="0.000225"/>
</if>
<arg>6176</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-05-26T01:21:20.638681" elapsed="0.002726"/>
</kw>
<doc>cbench executed in latency mode to see if controller is healthy</doc>
<tag>cbench</tag>
<tag>latency</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-05-26T01:11:13.895230" elapsed="606.746224"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-05-26T00:50:57.917913" elapsed="1822.724318"/>
</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>
