<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-05-04T04:42:55.642764" 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-04T04:42:56.217872" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-05-04T04:42:56.217702" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-05-04T04:42:56.217667" elapsed="0.000326"/>
</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-04T04:42:56.218177" elapsed="0.000629"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-04T04:42:56.219408" level="INFO">Logging into '10.30.171.20:8101' as 'karaf'.</msg>
<msg time="2026-05-04T04:42:57.009871" 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-04T04:42:56.219031" elapsed="0.791046"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-04T04:42:57.058437" 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-04T04:42:57.010385" elapsed="0.048128"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-04T04:42:57.060382" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-04T04:42:57.060502" 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-04T04:42:57.058683" elapsed="0.001850"/>
</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-04T04:42:57.060694" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T04:42:57.061078" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:42:57.061884" 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-04T04:42:57.061531" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-04T04:42:57.061994" elapsed="0.000058"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.20
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-04T04:42:56.217216" elapsed="0.844963"/>
</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-04T04:42:56.213661" elapsed="0.848583"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-04T04:42:57.062835" 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-04T04:42:57.062449" elapsed="0.000444"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-04T04:42:57.063334" 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-04T04:42:57.063045" elapsed="0.000365"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-04T04:42:57.063981" 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-04T04:42:57.063573" elapsed="0.000436"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-04T04:42:57.064545" 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-04T04:42:57.064175" elapsed="0.000414"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-04T04:42:57.065112" 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-04T04:42:57.064738" elapsed="0.000401"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-04T04:42:57.065629" 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-04T04:42:57.065296" elapsed="0.000375"/>
</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-04T04:42:57.065978" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-04T04:42:57.065764" elapsed="0.000269"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-04T04:42:57.070344" 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-04T04:42:57.069939" elapsed="0.000448"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-04T04:42:57.071855" level="INFO">Length is 0.</msg>
<msg time="2026-05-04T04:42:57.071945" 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-04T04:42:57.071035" elapsed="0.000934"/>
</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-04T04:42:57.072127" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-04T04:42:57.073585" level="INFO">Logging into '10.30.171.175:22' as 'jenkins'.</msg>
<msg time="2026-05-04T04:42:57.800411" 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 Mon May  4 04:42:57 UTC 2026

  System load:  0.03               Processes:             113
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.175
  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-222-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-04T04:42:57.073022" elapsed="0.727553"/>
</kw>
<msg time="2026-05-04T04:42:57.800674" 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-04T04:42:57.072674" elapsed="0.728097"/>
</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-04T04:42:57.070659" elapsed="0.730239"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-05-04T04:42:57.809452" 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-04T04:42:57.801118" elapsed="0.010083"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T04:42:57.811453" elapsed="0.000336"/>
</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-04T04:42:57.069417" elapsed="0.742444"/>
</kw>
<status status="PASS" start="2026-05-04T04:42:57.066110" elapsed="0.745791"/>
</branch>
<status status="PASS" start="2026-05-04T04:42:57.065738" elapsed="0.746198"/>
</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-04T04:42:57.812094" elapsed="0.000539"/>
</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-04T04:42:57.817034" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-05-04T04:42:57.816910" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-05-04T04:42:57.816884" elapsed="0.000228"/>
</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-04T04:42:57.820655" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-05-04T04:42:57.820542" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-05-04T04:42:57.820523" elapsed="0.000202"/>
</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-04T04:42:57.820861" elapsed="0.000446"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-04T04:42:57.821735" level="INFO">Logging into '10.30.171.20:8101' as 'karaf'.</msg>
<msg time="2026-05-04T04:42:57.998962" 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-04T04:42:57.821470" elapsed="0.177641"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.095604" 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-04T04:42:57.999366" elapsed="0.096340"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.101312" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           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-04T04:42:58.101512" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           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-04T04:42:58.095919" elapsed="0.005625"/>
</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-04T04:42:58.101689" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T04:42:58.102078" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:42:58.102816" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           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-04T04:42:58.102472" elapsed="0.000400"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-04T04:42:58.102921" elapsed="0.000052"/>
</return>
<msg time="2026-05-04T04:42:58.103121" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.2           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.20
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-04T04:42:57.820171" elapsed="0.282982"/>
</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-04T04:42:58.103297" elapsed="0.000513"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-04T04:42:58.103862" elapsed="0.000033"/>
</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-04T04:42:57.816593" elapsed="0.287402"/>
</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-04T04:42:58.107756" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-05-04T04:42:58.107616" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-05-04T04:42:58.107592" elapsed="0.000235"/>
</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-04T04:42:58.107955" elapsed="0.000464"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.108823" level="INFO">Logging into '10.30.171.20:8101' as 'karaf'.</msg>
<msg time="2026-05-04T04:42:58.268643" 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-04T04:42:58.108566" elapsed="0.160255"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.293663" 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-04T04:42:58.269100" elapsed="0.024625"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.295482" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-05-04T04:42:58.295590" 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-04T04:42:58.293873" elapsed="0.001746"/>
</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-04T04:42:58.295755" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T04:42:58.296090" elapsed="0.000205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:42:58.296781" 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-04T04:42:58.296457" elapsed="0.000374"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-05-04T04:42:58.296885" elapsed="0.000060"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.20
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-04T04:42:58.107269" elapsed="0.189797"/>
</kw>
<status status="PASS" start="2026-05-04T04:42:56.211806" elapsed="2.085325"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:42:58.299542" 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-04T04:42:58.298278" elapsed="0.001334"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-04T04:42:58.301025" 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-04T04:42:58.300680" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-05-04T04:42:58.301402" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-04T04:42:58.301147" elapsed="0.000315"/>
</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-04T04:42:58.304442" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-04T04:42:58.304173" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-05-04T04:42:58.304153" elapsed="0.000372"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.304858" 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-04T04:42:58.304979" 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-04T04:42:58.304654" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:42:58.305574" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.175" 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-04T04:42:58.305138" elapsed="0.000497"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.306235" 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-04T04:42:58.305773" elapsed="0.000488"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-04T04:42:58.307192" level="INFO">Length is 0.</msg>
<msg time="2026-05-04T04:42:58.307282" 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-04T04:42:58.306864" elapsed="0.000442"/>
</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-04T04:42:58.307464" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.308656" level="INFO">Logging into '10.30.171.175:22' as 'jenkins'.</msg>
<msg time="2026-05-04T04:42:58.634727" 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 Mon May  4 04:42:57 UTC 2026

  System load:  0.03               Processes:             113
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.175
  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: Mon May  4 04:42:57 2026 from 10.30.171.190
[?2004h[jenkins@releng-63164-222-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-04T04:42:58.308287" elapsed="0.326647"/>
</kw>
<msg time="2026-05-04T04:42:58.635029" 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-04T04:42:58.307946" elapsed="0.327175"/>
</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-04T04:42:58.306478" elapsed="0.328769"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-04T04:42:58.636023" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-04T04:53:04.752827" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-04T04:53:04.753255" level="INFO">${stdout} = </msg>
<msg time="2026-05-04T04:53:04.753323" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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-04T04:42:58.635478" elapsed="606.117912"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T04:53:04.753733" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.755003" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
04:44:03.835 16  switches: flows:  98395 99280 99733 98488 96803 99595 99129 100787 97649 97578 96467 95141 97797 95153 97026 94613  total = 26.060567 per ms 
04:45:03.936 16  switches: flows:  118015 117388 116204 117175 114543 118883 116993 117578 115622 114178 112125 113841 114512 113681 114413 111136  total = 30.720180 per ms 
04:46:04.036 16  switches: flows:  119018 116287 114978 117609 115129 116946 115407 118227 113127 112533 112589 112333 114991 111733 111796 110484  total = 30.502185 per ms 
04:47:04.137 16  switches: flows:  120301 120090 117074 118784 118699 121986 117205 121716 115722 117072 114805 115900 115812 112821 113946 112771  total = 31.193008 per ms 
04:48:04.238 16  switches: flows:  119703 119180 117974 117032 120363 121188 118896 120847 117321 116915 115254 116259 114754 114167 115214 115504  total = 31.290588 per ms 
04:49:04.339 16  switches: flows:  120345 119111 119411 119145 120283 123035 119799 121204 119753 118543 117575 118857 116829 113896 115836 117360  total = 31.630199 per ms 
04:50:04.440 16  switches: flows:  124870 123907 124413 124154 122531 123003 122001 123135 119667 121637 118674 119172 120927 119633 120741 120011  total = 32.420478 per ms 
04:51:04.541 16  switches: flows:  124410 122393 124329 122862 120183 121087 119943 121803 118591 120972 119448 118297 121429 118143 120367 119432  total = 32.174424 per ms 
04:52:04.642 16  switches: flows:  124786 122606 124576 123742 120072 121566 120453 122353 119992 121573 117967 118404 120143 119808 119360 120997  total = 32.252783 per ms 
04:53:04.743 16  switches: flows:  111554 110211 112422 110715 110303 110776 110234 110983 108254 109471 107531 106609 107467 107640 107870 106267  total = 29.089859 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29089.86/32420.48/31252.63/10464.82 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T04:53:04.754514" elapsed="0.000704"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-04T04:53:04.755584" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-05-04T04:53:04.755370" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-05-04T04:53:04.755310" elapsed="0.000413"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-04T04:53:04.755857" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-05-04T04:53:04.755806" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-05-04T04:53:04.755785" elapsed="0.000157"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-04T04:53:04.755988" 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-04T04:53:04.759600" elapsed="0.000482"/>
</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-04T04:53:04.760295" elapsed="0.000284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T04:53:04.760771" elapsed="0.000179"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-04T04:53:04.756459" elapsed="0.004571"/>
</kw>
<msg time="2026-05-04T04:53:04.761219" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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-04T04:42:58.301819" elapsed="606.459439"/>
</kw>
<status status="PASS" start="2026-05-04T04:42:58.301490" elapsed="606.459840"/>
</branch>
<status status="PASS" start="2026-05-04T04:42:58.301125" elapsed="606.460262"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.762025" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
04:44:03.835 16  switches: flows:  98395 99280 99733 98488 96803 99595 99129 100787 97649 97578 96467 95141 97797 95153 97026 94613  total = 26.060567 per ms 
04:45:03.936 16  switches: flows:  118015 117388 116204 117175 114543 118883 116993 117578 115622 114178 112125 113841 114512 113681 114413 111136  total = 30.720180 per ms 
04:46:04.036 16  switches: flows:  119018 116287 114978 117609 115129 116946 115407 118227 113127 112533 112589 112333 114991 111733 111796 110484  total = 30.502185 per ms 
04:47:04.137 16  switches: flows:  120301 120090 117074 118784 118699 121986 117205 121716 115722 117072 114805 115900 115812 112821 113946 112771  total = 31.193008 per ms 
04:48:04.238 16  switches: flows:  119703 119180 117974 117032 120363 121188 118896 120847 117321 116915 115254 116259 114754 114167 115214 115504  total = 31.290588 per ms 
04:49:04.339 16  switches: flows:  120345 119111 119411 119145 120283 123035 119799 121204 119753 118543 117575 118857 116829 113896 115836 117360  total = 31.630199 per ms 
04:50:04.440 16  switches: flows:  124870 123907 124413 124154 122531 123003 122001 123135 119667 121637 118674 119172 120927 119633 120741 120011  total = 32.420478 per ms 
04:51:04.541 16  switches: flows:  124410 122393 124329 122862 120183 121087 119943 121803 118591 120972 119448 118297 121429 118143 120367 119432  total = 32.174424 per ms 
04:52:04.642 16  switches: flows:  124786 122606 124576 123742 120072 121566 120453 122353 119992 121573 117967 118404 120143 119808 119360 120997  total = 32.252783 per ms 
04:53:04.743 16  switches: flows:  111554 110211 112422 110715 110303 110776 110234 110983 108254 109471 107531 106609 107467 107640 107870 106267  total = 29.089859 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29089.86/32420.48/31252.63/10464.82 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T04:53:04.761618" elapsed="0.000480"/>
</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-04T04:53:04.762245" elapsed="0.000440"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-04T04:53:04.763075" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-04T04:53:04.763167" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29089.86/32420.48/31252.63/10464.82 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-04T04:53:04.762847" elapsed="0.000345"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T04:53:04.763620" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29089.86/32420.48/31252.63/10464.82 | 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-04T04:53:04.763361" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.766029" 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-04T04:53:04.763791" elapsed="0.002295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.768439" level="INFO">29089.86/32420.48/31252.63/10464.82</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T04:53:04.766229" elapsed="0.002283"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T04:53:04.771387" 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-04T04:53:04.768700" elapsed="0.002718"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T04:53:04.774379" level="INFO">@{result_value_list} = [ 29089.86 | 32420.48 | 31252.63 | 10464.82 ]</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-04T04:53:04.771669" elapsed="0.002743"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.775001" level="INFO">Length is 4.</msg>
<msg time="2026-05-04T04:53:04.775099" 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-04T04:53:04.774601" elapsed="0.000524"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.779955" level="INFO">min :: 29089.86</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T04:53:04.775667" elapsed="0.004345"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-04T04:53:04.775502" elapsed="0.004545"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.784477" level="INFO">max :: 32420.48</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T04:53:04.780269" elapsed="0.004264"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-04T04:53:04.780142" elapsed="0.004425"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.788998" level="INFO">avg :: 31252.63</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-04T04:53:04.784784" elapsed="0.004271"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-04T04:53:04.784656" elapsed="0.004433"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.793612" level="INFO">stdev :: 10464.82</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-04T04:53:04.789306" elapsed="0.004363"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-04T04:53:04.789180" elapsed="0.004523"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-04T04:53:04.775224" elapsed="0.018513"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.797752" level="INFO">${min} = 29089.86</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-04T04:53:04.793902" elapsed="0.003878"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.802038" level="INFO">${max} = 32420.48</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-04T04:53:04.797930" elapsed="0.004136"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.811323" level="INFO">${average} = 31252.63</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-04T04:53:04.802220" elapsed="0.009169"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.815502" level="INFO">${stdev} = 10464.82</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-04T04:53:04.811651" elapsed="0.003879"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.816077" level="INFO">${date} = 2026-05-04 04:53:04</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-04T04:53:04.815695" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.816691" level="INFO">CBench Result: 2026-05-04 04:53:04,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29089.86,32420.48,31252.63,10464.82</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-04T04:53:04.816250" elapsed="0.000499"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-04T04:53:04.817948" 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-04T04:53:04.817454" elapsed="0.000572"/>
</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-04T04:53:04.818180" elapsed="0.000505"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-04T04:53:04.816945" elapsed="0.001807"/>
</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-04T04:42:58.300034" elapsed="606.518780"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.819309" 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-04T04:53:04.818964" elapsed="0.000425"/>
</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-04T04:53:04.819938" elapsed="0.000277"/>
</kw>
<status status="PASS" start="2026-05-04T04:53:04.819628" elapsed="0.000657"/>
</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-04T04:42:58.297312" elapsed="606.523013"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.822018" 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-04T04:53:04.821630" elapsed="0.000446"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.823789" 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-04T04:53:04.823309" elapsed="0.000523"/>
</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-04T04:53:04.824236" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-04T04:53:04.823993" elapsed="0.000301"/>
</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-04T04:53:04.827245" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-04T04:53:04.827001" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-05-04T04:53:04.826983" elapsed="0.000340"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-04T04:53:04.827732" 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-04T04:53:04.827858" 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-04T04:53:04.827480" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.828450" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.20 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.175" 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-04T04:53:04.828018" elapsed="0.000491"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-04T04:53:04.829083" 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-04T04:53:04.828647" elapsed="0.000463"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-04T04:53:04.830009" level="INFO">Length is 0.</msg>
<msg time="2026-05-04T04:53:04.830099" 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-04T04:53:04.829692" elapsed="0.000431"/>
</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-04T04:53:04.830263" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-04T04:53:04.831461" level="INFO">Logging into '10.30.171.175:22' as 'jenkins'.</msg>
<msg time="2026-05-04T04:53:05.445801" 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 Mon May  4 04:53:05 UTC 2026

  System load:  1.02               Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.175
  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: Mon May  4 04:42:58 2026 from 10.30.171.190
[?2004h[jenkins@releng-63164-222-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-04T04:53:04.831094" elapsed="0.616292"/>
</kw>
<msg time="2026-05-04T04:53:05.447490" 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-04T04:53:04.830757" elapsed="0.616835"/>
</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-04T04:53:04.829309" elapsed="0.618850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-04T04:53:05.449225" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.20 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-04T05:03:11.549607" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-04T05:03:11.550158" level="INFO">${stdout} = </msg>
<msg time="2026-05-04T05:03:11.550262" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.20: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-04T04:53:05.448892" elapsed="606.101434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T05:03:11.550818" elapsed="0.000764"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.552741" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.20: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.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
04:54:10.600 16  switches: flows:  580346 596361 595240 594367 592829 566796 599605 578490 579915 591042 577529 585698 583671 586801 583779 570564  total = 156.050550 per ms 
04:55:10.706 16  switches: flows:  687185 677869 665885 667967 674717 659816 670772 683061 681588 657515 683823 689476 686211 679532 683730 664660  total = 179.912394 per ms 
04:56:10.808 16  switches: flows:  679389 673895 676422 678897 682604 688111 682321 685169 676307 674647 680912 691578 680185 678851 685023 677002  total = 181.216799 per ms 
04:57:10.910 16  switches: flows:  668431 676254 668921 671733 672196 664498 671957 673092 669802 675565 668625 673534 671541 670518 668286 659751  total = 178.442514 per ms 
04:58:11.012 16  switches: flows:  655784 648103 653697 640445 639925 601032 597383 633525 636986 659279 648318 657505 658009 650633 661684 648669  total = 171.226916 per ms 
04:59:11.114 16  switches: flows:  676082 666773 685565 681127 670995 684111 670430 676957 682548 678507 677464 685013 694377 670530 673374 684891  total = 180.673893 per ms 
05:00:11.216 16  switches: flows:  690557 686711 689607 689917 696273 691535 692046 692705 695738 699030 689994 675253 693398 691979 683178 689888  total = 183.821492 per ms 
05:01:11.318 16  switches: flows:  633898 652610 656880 667381 675171 672323 667205 672531 671221 668931 663445 655222 662211 654323 670806 662018  total = 176.469038 per ms 
05:02:11.436 16  switches: flows:  686305 687336 689318 674029 683337 675503 680913 688020 683848 683757 683170 675440 682065 677979 679410 681705  total = 181.511578 per ms 
05:03:11.538 16  switches: flows:  686507 648035 688095 642046 687788 686646 681636 672828 684596 693350 682608 678536 683658 692337 678454 690716  total = 180.991304 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 171226.92/183821.49/179362.88/59887.92 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:03:11.551940" elapsed="0.001112"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-04T05:03:11.553592" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-05-04T05:03:11.553247" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-05-04T05:03:11.553180" elapsed="0.000636"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-04T05:03:11.554026" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-05-04T05:03:11.553944" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-05-04T05:03:11.553908" elapsed="0.000258"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-04T05:03:11.554236" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-05-04T05:03:11.559741" elapsed="0.000825"/>
</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-04T05:03:11.560891" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T05:03:11.561192" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-04T05:03:11.554936" elapsed="0.006408"/>
</kw>
<msg time="2026-05-04T05:03:11.561524" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.20: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-04T04:53:04.824656" elapsed="606.736895"/>
</kw>
<status status="PASS" start="2026-05-04T04:53:04.824323" elapsed="606.737277"/>
</branch>
<status status="PASS" start="2026-05-04T04:53:04.823967" elapsed="606.737657"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.562051" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.20: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.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
04:54:10.600 16  switches: flows:  580346 596361 595240 594367 592829 566796 599605 578490 579915 591042 577529 585698 583671 586801 583779 570564  total = 156.050550 per ms 
04:55:10.706 16  switches: flows:  687185 677869 665885 667967 674717 659816 670772 683061 681588 657515 683823 689476 686211 679532 683730 664660  total = 179.912394 per ms 
04:56:10.808 16  switches: flows:  679389 673895 676422 678897 682604 688111 682321 685169 676307 674647 680912 691578 680185 678851 685023 677002  total = 181.216799 per ms 
04:57:10.910 16  switches: flows:  668431 676254 668921 671733 672196 664498 671957 673092 669802 675565 668625 673534 671541 670518 668286 659751  total = 178.442514 per ms 
04:58:11.012 16  switches: flows:  655784 648103 653697 640445 639925 601032 597383 633525 636986 659279 648318 657505 658009 650633 661684 648669  total = 171.226916 per ms 
04:59:11.114 16  switches: flows:  676082 666773 685565 681127 670995 684111 670430 676957 682548 678507 677464 685013 694377 670530 673374 684891  total = 180.673893 per ms 
05:00:11.216 16  switches: flows:  690557 686711 689607 689917 696273 691535 692046 692705 695738 699030 689994 675253 693398 691979 683178 689888  total = 183.821492 per ms 
05:01:11.318 16  switches: flows:  633898 652610 656880 667381 675171 672323 667205 672531 671221 668931 663445 655222 662211 654323 670806 662018  total = 176.469038 per ms 
05:02:11.436 16  switches: flows:  686305 687336 689318 674029 683337 675503 680913 688020 683848 683757 683170 675440 682065 677979 679410 681705  total = 181.511578 per ms 
05:03:11.538 16  switches: flows:  686507 648035 688095 642046 687788 686646 681636 672828 684596 693350 682608 678536 683658 692337 678454 690716  total = 180.991304 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 171226.92/183821.49/179362.88/59887.92 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:03:11.561764" elapsed="0.000360"/>
</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-04T05:03:11.562277" elapsed="0.000395"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-04T05:03:11.563060" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-04T05:03:11.563153" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 171226.92/183821.49/179362.88/59887.92 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-04T05:03:11.562831" elapsed="0.000348"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T05:03:11.563600" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 171226.92/183821.49/179362.88/59887.92 | 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-04T05:03:11.563331" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.565993" 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-04T05:03:11.563771" elapsed="0.002279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.568390" level="INFO">171226.92/183821.49/179362.88/59887.92</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:03:11.566192" elapsed="0.002255"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T05:03:11.570787" 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-04T05:03:11.568615" elapsed="0.002198"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T05:03:11.573215" level="INFO">@{result_value_list} = [ 171226.92 | 183821.49 | 179362.88 | 59887.92 ]</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-04T05:03:11.570997" elapsed="0.002245"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.573715" level="INFO">Length is 4.</msg>
<msg time="2026-05-04T05:03:11.573804" 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-04T05:03:11.573411" elapsed="0.000416"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.578469" level="INFO">min :: 171226.92</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:03:11.574193" elapsed="0.004333"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-04T05:03:11.574067" elapsed="0.004494"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.583153" level="INFO">max :: 183821.49</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-04T05:03:11.578772" elapsed="0.004439"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-04T05:03:11.578649" elapsed="0.004597"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.587835" level="INFO">avg :: 179362.88</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-04T05:03:11.583474" elapsed="0.004418"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-04T05:03:11.583333" elapsed="0.004593"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.592646" level="INFO">stdev :: 59887.92</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:03:11.588159" elapsed="0.004552"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-04T05:03:11.588014" elapsed="0.004733"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-04T05:03:11.573889" elapsed="0.018921"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.596644" level="INFO">${min} = 171226.92</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-04T05:03:11.592969" elapsed="0.003702"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.600543" level="INFO">${max} = 183821.49</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-04T05:03:11.596841" elapsed="0.003729"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.604408" level="INFO">${average} = 179362.88</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-04T05:03:11.600720" elapsed="0.003714"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.608283" level="INFO">${stdev} = 59887.92</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-04T05:03:11.604583" elapsed="0.003727"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.608830" level="INFO">${date} = 2026-05-04 05:03:11</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-04T05:03:11.608482" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.609506" level="INFO">CBench Result: 2026-05-04 05:03:11,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,171226.92,183821.49,179362.88,59887.92</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-04T05:03:11.609074" elapsed="0.000490"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-04T05:03:11.610570" 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-04T05:03:11.610165" elapsed="0.000471"/>
</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-04T05:03:11.610783" elapsed="0.000451"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-04T05:03:11.609700" elapsed="0.001597"/>
</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-04T04:53:04.822444" elapsed="606.788928"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.611864" 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-04T05:03:11.611549" elapsed="0.000372"/>
</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-04T05:03:11.612433" elapsed="0.000261"/>
</kw>
<status status="PASS" start="2026-05-04T05:03:11.612124" elapsed="0.000640"/>
</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-04T04:53:04.820929" elapsed="606.791873"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.614167" 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-04T05:03:11.613786" elapsed="0.000437"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.615430" 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-04T05:03:11.615087" elapsed="0.000386"/>
</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-04T05:03:11.615793" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-04T05:03:11.615579" elapsed="0.000272"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-05-04T05:03:11.618720" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-04T05:03:11.618479" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-05-04T05:03:11.618459" elapsed="0.000341"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-05-04T05:03:11.619111" 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-04T05:03:11.619227" 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-04T05:03:11.618936" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.619820" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.171.175" 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-04T05:03:11.619404" elapsed="0.000474"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-05-04T05:03:11.620428" 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-04T05:03:11.620016" elapsed="0.000440"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-04T05:03:11.621518" level="INFO">Length is 0.</msg>
<msg time="2026-05-04T05:03:11.621615" 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-04T05:03:11.621051" elapsed="0.000589"/>
</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-04T05:03:11.621796" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-05-04T05:03:11.622995" level="INFO">Logging into '10.30.171.175:22' as 'jenkins'.</msg>
<msg time="2026-05-04T05:03:12.201014" 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 Mon May  4 05:03:11 UTC 2026

  System load:  0.29               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.175
  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: Mon May  4 04:53:05 2026 from 10.30.171.190
[?2004h[jenkins@releng-63164-222-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-04T05:03:11.622637" elapsed="0.578551"/>
</kw>
<msg time="2026-05-04T05:03:12.201291" 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-04T05:03:11.622272" elapsed="0.579110"/>
</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-04T05:03:11.620653" elapsed="0.580843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-05-04T05:03:12.202031" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.20 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-05-04T05:13:18.270742" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-05-04T05:13:18.271232" level="INFO">${stdout} = </msg>
<msg time="2026-05-04T05:13:18.271306" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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-04T05:03:12.201712" elapsed="606.069637"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T05:13:18.271714" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.273063" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:04:17.347 16  switches: flows:  109962 113918 113346 113122 111353 109806 111745 111093 112652 109635 110137 108957 111125 110824 108247 109777  total = 29.594983 per ms 
05:05:17.449 16  switches: flows:  120491 127271 122876 124288 123391 122715 125281 120640 123969 122554 122490 119842 123497 124355 119909 120732  total = 32.683695 per ms 
05:06:17.550 16  switches: flows:  121395 126384 121860 126723 122203 121743 125105 121447 125976 121822 122245 120672 123101 124439 118485 120523  total = 32.680805 per ms 
05:07:17.651 16  switches: flows:  121252 125575 123675 126275 122893 120746 125224 121712 124116 120172 122219 121228 123386 122497 117603 121766  total = 32.617661 per ms 
05:08:17.753 16  switches: flows:  121314 127079 123212 124993 122991 122275 124544 122536 124138 120746 122226 120545 122655 123764 117490 121047  total = 32.638087 per ms 
05:09:17.854 16  switches: flows:  121085 124731 121319 123891 120810 120047 124461 121067 124512 119544 121033 119447 120854 120828 118347 120160  total = 32.314976 per ms 
05:10:17.955 16  switches: flows:  125467 128983 125743 127599 125559 126484 125253 124897 123137 124446 124946 123481 125365 124899 121898 124345  total = 33.319403 per ms 
05:11:18.056 16  switches: flows:  122524 125269 122750 123391 121400 121952 121162 120972 122190 120492 120014 119449 119675 121139 118719 120617  total = 32.307968 per ms 
05:12:18.157 16  switches: flows:  125695 127937 125620 126657 125036 124822 124432 124053 124173 124130 124069 126263 124264 125104 122695 124402  total = 33.266969 per ms 
05:13:18.259 16  switches: flows:  126535 128201 126730 124759 125014 123897 124984 123539 123819 125256 125302 125453 124290 124456 122447 122485  total = 33.230601 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32307.97/33319.40/32784.46/10934.43 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:13:18.272542" elapsed="0.000736"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-05-04T05:13:18.273693" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-05-04T05:13:18.273459" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-05-04T05:13:18.273411" elapsed="0.000458"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-05-04T05:13:18.274002" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-05-04T05:13:18.273952" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-05-04T05:13:18.273929" elapsed="0.000160"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-05-04T05:13:18.274131" 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-04T05:13:18.277845" elapsed="0.000464"/>
</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-04T05:13:18.278544" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-05-04T05:13:18.278948" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-05-04T05:13:18.274610" elapsed="0.004550"/>
</kw>
<msg time="2026-05-04T05:13:18.279336" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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-04T05:03:11.616183" elapsed="606.663214"/>
</kw>
<status status="PASS" start="2026-05-04T05:03:11.615876" elapsed="606.663591"/>
</branch>
<status status="PASS" start="2026-05-04T05:03:11.615559" elapsed="606.663948"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.280142" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.20: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.20. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:04:17.347 16  switches: flows:  109962 113918 113346 113122 111353 109806 111745 111093 112652 109635 110137 108957 111125 110824 108247 109777  total = 29.594983 per ms 
05:05:17.449 16  switches: flows:  120491 127271 122876 124288 123391 122715 125281 120640 123969 122554 122490 119842 123497 124355 119909 120732  total = 32.683695 per ms 
05:06:17.550 16  switches: flows:  121395 126384 121860 126723 122203 121743 125105 121447 125976 121822 122245 120672 123101 124439 118485 120523  total = 32.680805 per ms 
05:07:17.651 16  switches: flows:  121252 125575 123675 126275 122893 120746 125224 121712 124116 120172 122219 121228 123386 122497 117603 121766  total = 32.617661 per ms 
05:08:17.753 16  switches: flows:  121314 127079 123212 124993 122991 122275 124544 122536 124138 120746 122226 120545 122655 123764 117490 121047  total = 32.638087 per ms 
05:09:17.854 16  switches: flows:  121085 124731 121319 123891 120810 120047 124461 121067 124512 119544 121033 119447 120854 120828 118347 120160  total = 32.314976 per ms 
05:10:17.955 16  switches: flows:  125467 128983 125743 127599 125559 126484 125253 124897 123137 124446 124946 123481 125365 124899 121898 124345  total = 33.319403 per ms 
05:11:18.056 16  switches: flows:  122524 125269 122750 123391 121400 121952 121162 120972 122190 120492 120014 119449 119675 121139 118719 120617  total = 32.307968 per ms 
05:12:18.157 16  switches: flows:  125695 127937 125620 126657 125036 124822 124432 124053 124173 124130 124069 126263 124264 125104 122695 124402  total = 33.266969 per ms 
05:13:18.259 16  switches: flows:  126535 128201 126730 124759 125014 123897 124984 123539 123819 125256 125302 125453 124290 124456 122447 122485  total = 33.230601 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 32307.97/33319.40/32784.46/10934.43 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:13:18.279736" elapsed="0.000509"/>
</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-04T05:13:18.280482" elapsed="0.000558"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-05-04T05:13:18.281655" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-05-04T05:13:18.281787" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 32307.97/33319.40/32784.46/10934.43 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-04T05:13:18.281293" elapsed="0.000528"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T05:13:18.282479" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 32307.97/33319.40/32784.46/10934.43 | 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-04T05:13:18.282033" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.285879" 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-04T05:13:18.282745" elapsed="0.003231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.288558" level="INFO">32307.97/33319.40/32784.46/10934.43</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-04T05:13:18.286138" elapsed="0.002478"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T05:13:18.291060" 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-04T05:13:18.288787" elapsed="0.002301"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-05-04T05:13:18.293637" level="INFO">@{result_value_list} = [ 32307.97 | 33319.40 | 32784.46 | 10934.43 ]</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-04T05:13:18.291283" elapsed="0.002383"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.294161" level="INFO">Length is 4.</msg>
<msg time="2026-05-04T05:13:18.294250" 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-04T05:13:18.293841" elapsed="0.000433"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.299034" level="INFO">min :: 32307.97</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-04T05:13:18.294682" elapsed="0.004412"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-05-04T05:13:18.294554" elapsed="0.004575"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.303772" level="INFO">max :: 33319.40</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-04T05:13:18.299342" elapsed="0.004488"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-05-04T05:13:18.299218" elapsed="0.004648"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.308672" level="INFO">avg :: 32784.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-04T05:13:18.304086" elapsed="0.004644"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-05-04T05:13:18.303951" elapsed="0.004814"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.313740" level="INFO">stdev :: 10934.43</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-04T05:13:18.308974" elapsed="0.004822"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-05-04T05:13:18.308849" elapsed="0.004982"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-05-04T05:13:18.294341" elapsed="0.019520"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.317819" level="INFO">${min} = 32307.97</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-04T05:13:18.314019" elapsed="0.003828"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.321745" level="INFO">${max} = 33319.40</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-04T05:13:18.318001" elapsed="0.003797"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.325646" level="INFO">${average} = 32784.46</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-04T05:13:18.321957" elapsed="0.003717"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.329578" level="INFO">${stdev} = 10934.43</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-04T05:13:18.325853" elapsed="0.003752"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.330156" level="INFO">${date} = 2026-05-04 05:13:18</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-04T05:13:18.329765" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.330756" level="INFO">CBench Result: 2026-05-04 05:13:18,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,32307.97,33319.40,32784.46,10934.43</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-04T05:13:18.330334" elapsed="0.000478"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-05-04T05:13:18.331953" 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-04T05:13:18.331482" elapsed="0.000541"/>
</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-04T05:13:18.332180" elapsed="0.000521"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-05-04T05:13:18.330952" elapsed="0.001814"/>
</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-04T05:03:11.614539" elapsed="606.718286"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.333285" 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-04T05:13:18.332972" elapsed="0.000370"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-04T05:13:18.334750" 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-04T05:13:18.334214" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-05-04T05:13:18.334999" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-05-04T05:13:18.334853" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-05-04T05:13:18.334834" elapsed="0.000257"/>
</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-04T05:13:18.335238" 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-04T05:13:18.335418" elapsed="0.000021"/>
</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-04T05:13:18.335578" elapsed="0.000021"/>
</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-04T05:13:18.335781" elapsed="0.000020"/>
</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-04T05:13:18.335927" 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-04T05:13:18.336075" 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-04T05:13:18.336215" elapsed="0.000020"/>
</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-04T05:13:18.336449" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-04T05:13:18.336296" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-05-04T05:13:18.336279" elapsed="0.000247"/>
</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-04T05:13:18.333743" elapsed="0.002843"/>
</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-04T05:03:11.613239" elapsed="606.723402"/>
</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-04T04:42:55.644337" elapsed="1822.693097"/>
</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>
