<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-07-19T05:45:31.819326" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-07-19T05:45:32.451306" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-07-19T05:45:32.451120" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-07-19T05:45:32.451083" elapsed="0.000392"/>
</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-07-19T05:45:32.451664" elapsed="0.000630"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-19T05:45:32.452818" level="INFO">Logging into '10.30.171.104:8101' as 'karaf'.</msg>
<msg time="2026-07-19T05:45:33.403824" 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-07-19T05:45:32.452498" elapsed="0.951588"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-19T05:45:33.456632" 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-07-19T05:45:33.404442" elapsed="0.052392"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-19T05:45:33.459333" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-19T05:45:33.459492" 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-07-19T05:45:33.457185" elapsed="0.002343"/>
</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-07-19T05:45:33.459710" elapsed="0.000357"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:45:33.460252" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:45:33.461061" 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-07-19T05:45:33.460684" elapsed="0.000435"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-19T05:45:33.461183" elapsed="0.000096"/>
</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.104
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-19T05:45:32.450548" elapsed="1.010871"/>
</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-07-19T05:45:32.446303" elapsed="1.015183"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-19T05:45:33.462172" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-07-19T05:45:33.461695" elapsed="0.000559"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-19T05:45:33.462668" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-07-19T05:45:33.462413" elapsed="0.000313"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-19T05:45:33.463337" 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-07-19T05:45:33.462884" elapsed="0.000483"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-19T05:45:33.463886" 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-07-19T05:45:33.463544" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-19T05:45:33.464508" 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-07-19T05:45:33.464077" elapsed="0.000461"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-19T05:45:33.465035" 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-07-19T05:45:33.464703" 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-07-19T05:45:33.465425" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-07-19T05:45:33.465169" elapsed="0.000324"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-19T05:45:33.470421" 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-07-19T05:45:33.469909" elapsed="0.000550"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-19T05:45:33.472229" level="INFO">Length is 0.</msg>
<msg time="2026-07-19T05:45:33.472327" 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-07-19T05:45:33.471590" elapsed="0.000763"/>
</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-07-19T05:45:33.472509" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-19T05:45:33.474160" level="INFO">Logging into '10.30.170.47:22' as 'jenkins'.</msg>
<msg time="2026-07-19T05:45:34.288697" 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 Sun Jul 19 05:45:33 UTC 2026

  System load:  0.03               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.47
  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-00446-30-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-07-19T05:45:33.473549" elapsed="0.815306"/>
</kw>
<msg time="2026-07-19T05:45:34.288946" 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-07-19T05:45:33.473096" elapsed="0.815937"/>
</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-07-19T05:45:33.470753" elapsed="0.818401"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.297772" 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-07-19T05:45:34.289388" elapsed="0.010258"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:45:34.299960" elapsed="0.000434"/>
</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-07-19T05:45:33.469318" elapsed="0.831175"/>
</kw>
<status status="PASS" start="2026-07-19T05:45:33.465625" elapsed="0.834923"/>
</branch>
<status status="PASS" start="2026-07-19T05:45:33.465141" elapsed="0.835453"/>
</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-07-19T05:45:34.300822" elapsed="0.000703"/>
</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-07-19T05:45:34.308014" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-07-19T05:45:34.307809" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-07-19T05:45:34.307747" elapsed="0.000379"/>
</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-07-19T05:45:34.313532" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-07-19T05:45:34.313365" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-07-19T05:45:34.313336" elapsed="0.000296"/>
</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-07-19T05:45:34.313824" elapsed="0.000646"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.315055" level="INFO">Logging into '10.30.171.104:8101' as 'karaf'.</msg>
<msg time="2026-07-19T05:45:34.504609" 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-07-19T05:45:34.314684" elapsed="0.190086"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.606991" 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-07-19T05:45:34.505027" elapsed="0.102128"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.626264" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            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-07-19T05:45:34.626586" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            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-07-19T05:45:34.607527" elapsed="0.019095"/>
</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-07-19T05:45:34.626851" elapsed="0.000267"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:45:34.627336" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:45:34.628146" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            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-07-19T05:45:34.627755" elapsed="0.000486"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-19T05:45:34.628304" elapsed="0.000060"/>
</return>
<msg time="2026-07-19T05:45:34.628536" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 1.0.0            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.104
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-19T05:45:34.312758" elapsed="0.315816"/>
</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-07-19T05:45:34.628739" elapsed="0.000589"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-19T05:45:34.629403" elapsed="0.000037"/>
</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-07-19T05:45:34.307319" elapsed="0.322226"/>
</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-07-19T05:45:34.634235" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-07-19T05:45:34.634043" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-07-19T05:45:34.634014" elapsed="0.000306"/>
</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-07-19T05:45:34.634676" elapsed="0.000589"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.635754" level="INFO">Logging into '10.30.171.104:8101' as 'karaf'.</msg>
<msg time="2026-07-19T05:45:34.813628" 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-07-19T05:45:34.635452" elapsed="0.178369"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.840793" 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-07-19T05:45:34.814085" elapsed="0.026857"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.843113" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-07-19T05:45:34.843275" 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-07-19T05:45:34.841233" elapsed="0.002075"/>
</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-07-19T05:45:34.843451" elapsed="0.000270"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:45:34.843903" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:45:34.844681" 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-07-19T05:45:34.844333" elapsed="0.000419"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-07-19T05:45:34.844813" elapsed="0.000062"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.104
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-07-19T05:45:34.633622" elapsed="0.211401"/>
</kw>
<status status="PASS" start="2026-07-19T05:45:32.444396" elapsed="2.400695"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:45:34.847698" 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-07-19T05:45:34.846403" elapsed="0.001376"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-19T05:45:34.849248" 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-07-19T05:45:34.848879" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-07-19T05:45:34.849617" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-19T05:45:34.849374" 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-07-19T05:45:34.852769" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-07-19T05:45:34.852507" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-07-19T05:45:34.852486" elapsed="0.000382"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.853262" 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-07-19T05:45:34.853394" 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-07-19T05:45:34.853010" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:45:34.854149" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.104 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.47" 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-07-19T05:45:34.853562" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.854884" 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-07-19T05:45:34.854406" elapsed="0.000504"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-19T05:45:34.855915" level="INFO">Length is 0.</msg>
<msg time="2026-07-19T05:45:34.856010" 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-07-19T05:45:34.855548" elapsed="0.000486"/>
</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-07-19T05:45:34.856183" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-19T05:45:34.857458" level="INFO">Logging into '10.30.170.47:22' as 'jenkins'.</msg>
<msg time="2026-07-19T05:45:35.199273" 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 Sun Jul 19 05:45:33 UTC 2026

  System load:  0.03               Processes:             109
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.47
  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: Sun Jul 19 05:45:34 2026 from 10.30.170.110
[?2004h[jenkins@releng-00446-30-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-07-19T05:45:34.857068" elapsed="0.342468"/>
</kw>
<msg time="2026-07-19T05:45:35.199640" 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-07-19T05:45:34.856710" elapsed="0.343030"/>
</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-07-19T05:45:34.855121" elapsed="0.344755"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-19T05:45:35.200463" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.104 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-19T05:55:41.435283" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-19T05:55:41.435769" level="INFO">${stdout} = </msg>
<msg time="2026-07-19T05:55:41.435861" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</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-07-19T05:45:35.200117" elapsed="606.235787"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:55:41.436252" elapsed="0.000632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.438023" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:46:40.389 16  switches: flows:  101189 98611 98137 99505 98070 97695 101215 96996 96788 95906 95834 96929 95432 95321 96406 95488  total = 25.992033 per ms 
05:47:40.489 16  switches: flows:  114325 112938 112019 110194 112676 112332 112177 111782 108925 109909 108107 107378 107531 106717 107502 107504  total = 29.317980 per ms 
05:48:40.590 16  switches: flows:  115265 116378 114808 115403 115329 117392 114594 113604 112935 111362 112310 110445 110758 110100 109969 111171  total = 30.146680 per ms 
05:49:40.690 16  switches: flows:  106097 105584 105111 104279 104220 105169 105172 103090 102467 101181 102632 98652 100282 100937 99927 100137  total = 27.369902 per ms 
05:50:40.790 16  switches: flows:  115233 113268 113167 112987 113399 114072 113180 113676 111489 110963 111240 111056 111942 111328 110876 108893  total = 29.896202 per ms 
05:51:40.890 16  switches: flows:  114824 112872 112524 111739 111422 112768 110695 112214 107984 108885 107488 107083 108984 108222 109080 106771  total = 29.343600 per ms 
05:52:40.991 16  switches: flows:  105172 103534 103489 103083 102477 103999 102589 102492 99338 102156 100261 99913 100385 99798 99138 99585  total = 27.078277 per ms 
05:53:41.091 16  switches: flows:  109928 105316 107314 108514 106663 103594 101848 102645 104728 101025 101529 104496 103776 98897 100031 101149  total = 27.644694 per ms 
05:54:41.191 16  switches: flows:  94564 94855 92733 92740 93342 95137 93837 93210 91779 91815 91220 90614 91172 91518 91599 91550  total = 24.653577 per ms 
05:55:41.292 16  switches: flows:  100596 100077 99563 100729 99029 98299 98327 98372 98163 98678 97350 98278 97110 96501 96035 95301  total = 26.163082 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24653.58/30146.68/27957.11/9482.59 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T05:55:41.437414" elapsed="0.000912"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-19T05:55:41.438789" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-07-19T05:55:41.438509" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-07-19T05:55:41.438456" elapsed="0.000519"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-19T05:55:41.439164" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-07-19T05:55:41.439093" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-07-19T05:55:41.439062" elapsed="0.000253"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-19T05:55:41.439385" elapsed="0.000028"/>
</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-07-19T05:55:41.444262" elapsed="0.000749"/>
</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-07-19T05:55:41.445320" elapsed="0.000329"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:55:41.445899" elapsed="0.000197"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-19T05:55:41.439953" elapsed="0.006239"/>
</kw>
<msg time="2026-07-19T05:55:41.446460" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</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-07-19T05:45:34.850029" elapsed="606.596482"/>
</kw>
<status status="PASS" start="2026-07-19T05:45:34.849705" elapsed="606.596909"/>
</branch>
<status status="PASS" start="2026-07-19T05:45:34.849351" elapsed="606.597309"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.447566" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:46:40.389 16  switches: flows:  101189 98611 98137 99505 98070 97695 101215 96996 96788 95906 95834 96929 95432 95321 96406 95488  total = 25.992033 per ms 
05:47:40.489 16  switches: flows:  114325 112938 112019 110194 112676 112332 112177 111782 108925 109909 108107 107378 107531 106717 107502 107504  total = 29.317980 per ms 
05:48:40.590 16  switches: flows:  115265 116378 114808 115403 115329 117392 114594 113604 112935 111362 112310 110445 110758 110100 109969 111171  total = 30.146680 per ms 
05:49:40.690 16  switches: flows:  106097 105584 105111 104279 104220 105169 105172 103090 102467 101181 102632 98652 100282 100937 99927 100137  total = 27.369902 per ms 
05:50:40.790 16  switches: flows:  115233 113268 113167 112987 113399 114072 113180 113676 111489 110963 111240 111056 111942 111328 110876 108893  total = 29.896202 per ms 
05:51:40.890 16  switches: flows:  114824 112872 112524 111739 111422 112768 110695 112214 107984 108885 107488 107083 108984 108222 109080 106771  total = 29.343600 per ms 
05:52:40.991 16  switches: flows:  105172 103534 103489 103083 102477 103999 102589 102492 99338 102156 100261 99913 100385 99798 99138 99585  total = 27.078277 per ms 
05:53:41.091 16  switches: flows:  109928 105316 107314 108514 106663 103594 101848 102645 104728 101025 101529 104496 103776 98897 100031 101149  total = 27.644694 per ms 
05:54:41.191 16  switches: flows:  94564 94855 92733 92740 93342 95137 93837 93210 91779 91815 91220 90614 91172 91518 91599 91550  total = 24.653577 per ms 
05:55:41.292 16  switches: flows:  100596 100077 99563 100729 99029 98299 98327 98372 98163 98678 97350 98278 97110 96501 96035 95301  total = 26.163082 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24653.58/30146.68/27957.11/9482.59 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T05:55:41.446963" elapsed="0.000757"/>
</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-07-19T05:55:41.448020" elapsed="0.000826"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-19T05:55:41.449428" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-19T05:55:41.449547" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24653.58/30146.68/27957.11/9482.59 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-07-19T05:55:41.449101" elapsed="0.000478"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-19T05:55:41.450111" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24653.58/30146.68/27957.11/9482.59 | 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-07-19T05:55:41.449779" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.453677" 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-07-19T05:55:41.450371" elapsed="0.003390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.456661" level="INFO">24653.58/30146.68/27957.11/9482.59</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T05:55:41.453975" elapsed="0.002765"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-19T05:55:41.459325" 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-07-19T05:55:41.456911" elapsed="0.002445"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-19T05:55:41.461938" level="INFO">@{result_value_list} = [ 24653.58 | 30146.68 | 27957.11 | 9482.59 ]</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-07-19T05:55:41.459591" elapsed="0.002377"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.462513" level="INFO">Length is 4.</msg>
<msg time="2026-07-19T05:55:41.462633" 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-07-19T05:55:41.462131" elapsed="0.000534"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.467968" level="INFO">min :: 24653.58</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-07-19T05:55:41.463177" elapsed="0.004868"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-19T05:55:41.463003" elapsed="0.005091"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.473094" level="INFO">max :: 30146.68</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-07-19T05:55:41.468373" elapsed="0.004783"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-19T05:55:41.468197" elapsed="0.004996"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.477951" level="INFO">avg :: 27957.11</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-07-19T05:55:41.473440" elapsed="0.004579"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-19T05:55:41.473305" elapsed="0.004750"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.483043" level="INFO">stdev :: 9482.59</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-07-19T05:55:41.478342" elapsed="0.004763"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-19T05:55:41.478157" elapsed="0.004983"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-19T05:55:41.462743" elapsed="0.020431"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.487349" level="INFO">${min} = 24653.58</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-07-19T05:55:41.483361" elapsed="0.004016"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.491766" level="INFO">${max} = 30146.68</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-07-19T05:55:41.487539" elapsed="0.004256"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.495870" level="INFO">${average} = 27957.11</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-07-19T05:55:41.491969" elapsed="0.003939"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.499987" level="INFO">${stdev} = 9482.59</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-07-19T05:55:41.496077" elapsed="0.003938"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.500591" level="INFO">${date} = 2026-07-19 05:55:41</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-19T05:55:41.500197" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.501279" level="INFO">CBench Result: 2026-07-19 05:55:41,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24653.58,30146.68,27957.11,9482.59</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-07-19T05:55:41.500809" elapsed="0.000533"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-19T05:55:41.502617" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-07-19T05:55:41.502055" elapsed="0.000652"/>
</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-07-19T05:55:41.502864" elapsed="0.000570"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-19T05:55:41.501534" elapsed="0.001979"/>
</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-07-19T05:45:34.848240" elapsed="606.655335"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.504067" 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-07-19T05:55:41.503728" elapsed="0.000398"/>
</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-07-19T05:55:41.504822" elapsed="0.000364"/>
</kw>
<status status="PASS" start="2026-07-19T05:55:41.504401" elapsed="0.000901"/>
</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-07-19T05:45:34.845283" elapsed="606.660070"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.506889" 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-07-19T05:55:41.506471" elapsed="0.000496"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.508323" 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-07-19T05:55:41.507974" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-07-19T05:55:41.508770" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-07-19T05:55:41.508508" elapsed="0.000321"/>
</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-07-19T05:55:41.511979" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-07-19T05:55:41.511685" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-07-19T05:55:41.511666" elapsed="0.000424"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-19T05:55:41.512499" 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-07-19T05:55:41.512685" 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-07-19T05:55:41.512272" elapsed="0.000461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.513327" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.104 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.47" 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-07-19T05:55:41.512884" elapsed="0.000503"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-19T05:55:41.513934" 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-07-19T05:55:41.513531" elapsed="0.000430"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-19T05:55:41.514887" level="INFO">Length is 0.</msg>
<msg time="2026-07-19T05:55:41.514978" 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-07-19T05:55:41.514554" elapsed="0.000448"/>
</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-07-19T05:55:41.515144" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-19T05:55:41.516347" level="INFO">Logging into '10.30.170.47:22' as 'jenkins'.</msg>
<msg time="2026-07-19T05:55:44.421790" 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 Sun Jul 19 05:55:43 UTC 2026

  System load:  0.93               Processes:             104
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.47
  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: Sun Jul 19 05:45:35 2026 from 10.30.170.110
[?2004h[jenkins@releng-00446-30-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-07-19T05:55:41.515982" elapsed="2.906209"/>
</kw>
<msg time="2026-07-19T05:55:44.422406" 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-07-19T05:55:41.515643" elapsed="2.906941"/>
</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-07-19T05:55:41.514164" elapsed="2.908665"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-19T05:55:44.423719" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.104 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-19T05:59:08.084025" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-07-19T05:59:08.084675" level="INFO">${stdout} = </msg>
<msg time="2026-07-19T05:59:08.084750" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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-07-19T05:55:44.423243" elapsed="203.661545"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:59:08.085126" elapsed="0.000675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:59:08.087314" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:56:49.541 16  switches: flows:  465851 458427 452349 454715 454947 468705 463948 444940 438944 447331 437921 450997 453399 443188 458514 454507  total = 120.811383 per ms 
05:57:49.642 16  switches: flows:  458146 465107 464811 463720 468079 464026 465236 451268 472490 453617 467050 475099 464765 459734 472797 460197  total = 123.560961 per ms 
05:58:49.746 16  switches: flows:  209144 229608 214482 221205 239041 217881 215453 218141 224491 208140 221106 219168 224836 229424 213450 215676  total = 58.586108 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T05:59:08.086097" elapsed="0.001474"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-19T05:59:08.087994" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-07-19T05:59:08.087734" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-07-19T05:59:08.087680" elapsed="0.000471"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-19T05:59:08.088342" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-07-19T05:59:08.088271" elapsed="0.000136"/>
</branch>
<status status="NOT RUN" start="2026-07-19T05:59:08.088244" elapsed="0.000195"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-19T05:59:08.088487" elapsed="0.000020"/>
</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-07-19T05:59:08.092483" elapsed="0.000580"/>
</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-07-19T05:59:08.093392" elapsed="0.000280"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T05:59:08.093873" elapsed="0.000164"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-19T05:59:08.088997" elapsed="0.005124"/>
</kw>
<msg time="2026-07-19T05:59:08.094382" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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-07-19T05:55:41.509250" elapsed="206.585176"/>
</kw>
<status status="PASS" start="2026-07-19T05:55:41.508857" elapsed="206.585642"/>
</branch>
<status status="PASS" start="2026-07-19T05:55:41.508483" elapsed="206.586059"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:59:08.095300" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:56:49.541 16  switches: flows:  465851 458427 452349 454715 454947 468705 463948 444940 438944 447331 437921 450997 453399 443188 458514 454507  total = 120.811383 per ms 
05:57:49.642 16  switches: flows:  458146 465107 464811 463720 468079 464026 465236 451268 472490 453617 467050 475099 464765 459734 472797 460197  total = 123.560961 per ms 
05:58:49.746 16  switches: flows:  209144 229608 214482 221205 239041 217881 215453 218141 224491 208140 221106 219168 224836 229424 213450 215676  total = 58.586108 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T05:59:08.094786" elapsed="0.000615"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-07-19T05:59:08.096312" level="FAIL">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:56:49.541 16  switches: flows:  465851 458427 452349 454715 454947 468705 463948 444940 438944 447331 437921 450997 453399 443188 458514 454507  total = 120.811383 per ms 
05:57:49.642 16  switches: flows:  458146 465107 464811 463720 468079 464026 465236 451268 472490 453617 467050 475099 464765 459734 472797 460197  total = 123.560961 per ms 
05:58:49.746 16  switches: flows:  209144 229608 214482 221205 239041 217881 215453 218141 224491 208140 221106 219168 224836 229424 213450 215676  total = 58.586108 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</msg>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-07-19T05:59:08.095615" elapsed="0.000988">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:56:49.541 16  switches: flows:  465851 458427 452349 454715 454947 468705 463948 444940 438944 447331 437921 450997 453399 443188 458514 454507  total = 120.811383 per ms 
05:57:49.642 16  switches: flows:  458146 465107 464811 463720 468079 464026 465236 451268 472490 453617 467050 475099 464765 459734 472797 460197  total = 123.560961 per ms 
05:58:49.746 16  switches: flows:  209144 229608 214482 221205 239041 217881 215453 218141 224491 208140 221106 219168 224836 229424 213450 215676  total = 58.586108 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</status>
</kw>
<kw name="Get Lines Containing String" owner="String">
<var>${result_line}</var>
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Returns lines of the given ``string`` that contain the ``pattern``.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.096872" elapsed="0.000033"/>
</kw>
<kw name="Split String" owner="String">
<var>@{results_list}</var>
<arg>${result_line}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.097118" elapsed="0.000029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${results_list[5]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.097467" elapsed="0.000031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.097694" elapsed="0.000030"/>
</kw>
<kw name="Split String" owner="String">
<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="NOT RUN" start="2026-07-19T05:59:08.097925" elapsed="0.000031"/>
</kw>
<kw name="Split String" owner="String">
<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="NOT RUN" start="2026-07-19T05:59:08.098164" elapsed="0.000030"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<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="NOT RUN" start="2026-07-19T05:59:08.098460" elapsed="0.000032"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.098889" elapsed="0.000030"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-07-19T05:59:08.098715" elapsed="0.000250"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="NOT RUN" start="2026-07-19T05:59:08.098586" elapsed="0.000423"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-07-19T05:59:08.099254" elapsed="0.000032"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-07-19T05:59:08.099494" elapsed="0.000030"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-07-19T05:59:08.099731" elapsed="0.000030"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<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="NOT RUN" start="2026-07-19T05:59:08.099968" elapsed="0.000031"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.100240" elapsed="0.000032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>CBench Result: ${date},${cbench_args},${min},${max},${average},${stdev}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.100474" elapsed="0.000031"/>
</kw>
<kw name="Log Results And Determine Status">
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="NOT RUN" start="2026-07-19T05:59:08.100751" elapsed="0.000035"/>
</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="FAIL" start="2026-07-19T05:55:41.507385" elapsed="206.593646">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:56:49.541 16  switches: flows:  465851 458427 452349 454715 454947 468705 463948 444940 438944 447331 437921 450997 453399 443188 458514 454507  total = 120.811383 per ms 
05:57:49.642 16  switches: flows:  458146 465107 464811 463720 468079 464026 465236 451268 472490 453617 467050 475099 464765 459734 472797 460197  total = 123.560961 per ms 
05:58:49.746 16  switches: flows:  209144 229608 214482 221205 239041 217881 215453 218141 224491 208140 221106 219168 224836 229424 213450 215676  total = 58.586108 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-07-19T05:59:08.101296" elapsed="0.000031"/>
</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-07-19T05:59:08.102197" elapsed="0.000556"/>
</kw>
<status status="PASS" start="2026-07-19T05:59:08.101698" elapsed="0.001158"/>
</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="FAIL" start="2026-07-19T05:55:41.505778" elapsed="206.597136">'cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
05:56:49.541 16  switches: flows:  465851 458427 452349 454715 454947 468705 463948 444940 438944 447331 437921 450997 453399 443188 458514 454507  total = 120.811383 per ms 
05:57:49.642 16  switches: flows:  458146 465107 464811 463720 468079 464026 465236 451268 472490 453617 467050 475099 464765 459734 472797 460197  total = 123.560961 per ms 
05:58:49.746 16  switches: flows:  209144 229608 214482 221205 239041 217881 215453 218141 224491 208140 221106 219168 224836 229424 213450 215676  total = 58.586108 per ms 
controller msgbuf_read() = 0:   closed connection ... exiting' does not contain 'RESULT'</status>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:59:08.104971" 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-07-19T05:59:08.104362" elapsed="0.000708"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-07-19T05:59:08.107819" 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-07-19T05:59:08.106821" elapsed="0.001072"/>
</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-07-19T05:59:08.108401" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-07-19T05:59:08.108022" elapsed="0.000461"/>
</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-07-19T05:59:08.113745" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-07-19T05:59:08.113254" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-07-19T05:59:08.113187" elapsed="0.000696"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-07-19T05:59:08.114527" 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-07-19T05:59:08.114723" 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-07-19T05:59:08.114089" elapsed="0.000673"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T05:59:08.115627" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.104 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.47" 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-07-19T05:59:08.114960" elapsed="0.000754"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-07-19T05:59:08.116516" 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-07-19T05:59:08.115912" elapsed="0.000643"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-19T05:59:08.118112" level="INFO">Length is 0.</msg>
<msg time="2026-07-19T05:59:08.118285" 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-07-19T05:59:08.117616" elapsed="0.000707"/>
</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-07-19T05:59:08.118534" elapsed="0.000648"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-07-19T05:59:08.120468" level="INFO">Logging into '10.30.170.47:22' as 'jenkins'.</msg>
<msg time="2026-07-19T05:59:08.748540" 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 Sun Jul 19 05:59:08 UTC 2026

  System load:  0.22               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.47
  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: Sun Jul 19 05:55:44 2026 from 10.30.170.110
[?2004h[jenkins@releng-00446-30-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-07-19T05:59:08.119937" elapsed="0.628932"/>
</kw>
<msg time="2026-07-19T05:59:08.749007" 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-07-19T05:59:08.119423" elapsed="0.629716"/>
</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-07-19T05:59:08.116859" elapsed="0.632499"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-07-19T05:59:08.750331" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.104 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-07-19T06:09:14.818205" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-07-19T06:09:14.818696" level="INFO">${stdout} = </msg>
<msg time="2026-07-19T06:09:14.818768" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</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-07-19T05:59:08.749743" elapsed="606.069063"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T06:09:14.819172" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.821152" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
06:00:13.909 16  switches: flows:  109212 109197 109201 108876 109264 109710 103787 110287 105914 105715 106244 105414 104759 106070 106584 106245  total = 28.607983 per ms 
06:01:14.009 16  switches: flows:  118508 116689 115961 116503 117356 116261 111368 115380 114306 113522 114472 113312 111403 113116 113725 112038  total = 30.514369 per ms 
06:02:14.110 16  switches: flows:  112363 112730 113227 112408 112514 112719 107455 112274 109429 110504 111472 110197 108229 108041 111220 108486  total = 29.505193 per ms 
06:03:14.210 16  switches: flows:  117167 116413 118443 117484 117018 118111 112221 116838 115714 115630 115265 116308 113950 112815 115442 113171  total = 30.815035 per ms 
06:04:14.310 16  switches: flows:  119382 119632 119533 119317 118096 119207 112537 119720 115154 116020 117431 116698 116128 115489 113843 116138  total = 31.186667 per ms 
06:05:14.411 16  switches: flows:  119471 119317 118048 117765 117487 118452 115056 119920 114834 115035 116479 117103 114961 115697 116292 116428  total = 31.153725 per ms 
06:06:14.511 16  switches: flows:  121203 121457 120490 120732 121738 122483 116540 121894 118706 115872 119487 118319 116676 117072 117845 118408  total = 31.762309 per ms 
06:07:14.611 16  switches: flows:  121169 124791 122042 122767 122194 124274 117686 122722 120009 118459 120994 120946 119501 117493 120011 118842  total = 32.177926 per ms 
06:08:14.712 16  switches: flows:  119581 121636 120661 119501 119447 120467 116392 120893 117868 116655 119131 117045 118052 116206 115670 117003  total = 31.550768 per ms 
06:09:14.812 16  switches: flows:  119250 120334 118577 120387 119235 119273 115889 118943 117285 114268 116764 117284 116624 115032 114715 116300  total = 31.283799 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29505.19/32177.93/31105.53/10394.28 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T06:09:14.820456" elapsed="0.001018"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-07-19T06:09:14.821878" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-07-19T06:09:14.821630" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-07-19T06:09:14.821579" elapsed="0.000449"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-07-19T06:09:14.822169" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-07-19T06:09:14.822111" elapsed="0.000136"/>
</branch>
<status status="NOT RUN" start="2026-07-19T06:09:14.822088" elapsed="0.000190"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-07-19T06:09:14.822324" 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-07-19T06:09:14.826789" elapsed="0.000592"/>
</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-07-19T06:09:14.827659" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-07-19T06:09:14.828173" elapsed="0.000193"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-07-19T06:09:14.822814" elapsed="0.005646"/>
</kw>
<msg time="2026-07-19T06:09:14.828684" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</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-07-19T05:59:08.108987" elapsed="606.719741"/>
</kw>
<status status="PASS" start="2026-07-19T05:59:08.108524" elapsed="606.720286"/>
</branch>
<status status="PASS" start="2026-07-19T05:59:08.107986" elapsed="606.720862"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.829639" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.104: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.104. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
06:00:13.909 16  switches: flows:  109212 109197 109201 108876 109264 109710 103787 110287 105914 105715 106244 105414 104759 106070 106584 106245  total = 28.607983 per ms 
06:01:14.009 16  switches: flows:  118508 116689 115961 116503 117356 116261 111368 115380 114306 113522 114472 113312 111403 113116 113725 112038  total = 30.514369 per ms 
06:02:14.110 16  switches: flows:  112363 112730 113227 112408 112514 112719 107455 112274 109429 110504 111472 110197 108229 108041 111220 108486  total = 29.505193 per ms 
06:03:14.210 16  switches: flows:  117167 116413 118443 117484 117018 118111 112221 116838 115714 115630 115265 116308 113950 112815 115442 113171  total = 30.815035 per ms 
06:04:14.310 16  switches: flows:  119382 119632 119533 119317 118096 119207 112537 119720 115154 116020 117431 116698 116128 115489 113843 116138  total = 31.186667 per ms 
06:05:14.411 16  switches: flows:  119471 119317 118048 117765 117487 118452 115056 119920 114834 115035 116479 117103 114961 115697 116292 116428  total = 31.153725 per ms 
06:06:14.511 16  switches: flows:  121203 121457 120490 120732 121738 122483 116540 121894 118706 115872 119487 118319 116676 117072 117845 118408  total = 31.762309 per ms 
06:07:14.611 16  switches: flows:  121169 124791 122042 122767 122194 124274 117686 122722 120009 118459 120994 120946 119501 117493 120011 118842  total = 32.177926 per ms 
06:08:14.712 16  switches: flows:  119581 121636 120661 119501 119447 120467 116392 120893 117868 116655 119131 117045 118052 116206 115670 117003  total = 31.550768 per ms 
06:09:14.812 16  switches: flows:  119250 120334 118577 120387 119235 119273 115889 118943 117285 114268 116764 117284 116624 115032 114715 116300  total = 31.283799 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29505.19/32177.93/31105.53/10394.28 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T06:09:14.829095" elapsed="0.000655"/>
</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-07-19T06:09:14.830003" elapsed="0.000608"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-07-19T06:09:14.831256" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-07-19T06:09:14.831392" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29505.19/32177.93/31105.53/10394.28 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-07-19T06:09:14.830882" elapsed="0.000555"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-19T06:09:14.832120" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29505.19/32177.93/31105.53/10394.28 | 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-07-19T06:09:14.831703" elapsed="0.000466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.835419" 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-07-19T06:09:14.832416" elapsed="0.003070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.838027" level="INFO">29505.19/32177.93/31105.53/10394.28</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-07-19T06:09:14.835638" elapsed="0.002448"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-19T06:09:14.840739" 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-07-19T06:09:14.838261" elapsed="0.002511"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-07-19T06:09:14.843589" level="INFO">@{result_value_list} = [ 29505.19 | 32177.93 | 31105.53 | 10394.28 ]</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-07-19T06:09:14.841022" elapsed="0.002595"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.844133" level="INFO">Length is 4.</msg>
<msg time="2026-07-19T06:09:14.844264" 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-07-19T06:09:14.843778" elapsed="0.000516"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.849820" level="INFO">min :: 29505.19</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-07-19T06:09:14.844775" elapsed="0.005117"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-07-19T06:09:14.844611" elapsed="0.005326"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.855534" level="INFO">max :: 32177.93</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-07-19T06:09:14.850241" elapsed="0.005365"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-07-19T06:09:14.850050" elapsed="0.005600"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.865704" level="INFO">avg :: 31105.53</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-07-19T06:09:14.855928" elapsed="0.009955"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-07-19T06:09:14.855759" elapsed="0.010230"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.873290" level="INFO">stdev :: 10394.28</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-07-19T06:09:14.867200" elapsed="0.006173"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-07-19T06:09:14.866279" elapsed="0.007131"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-07-19T06:09:14.844376" elapsed="0.029068"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.877406" level="INFO">${min} = 29505.19</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-07-19T06:09:14.873627" elapsed="0.003809"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.881338" level="INFO">${max} = 32177.93</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-07-19T06:09:14.877596" elapsed="0.003771"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.885256" level="INFO">${average} = 31105.53</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-07-19T06:09:14.881526" elapsed="0.003758"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.889159" level="INFO">${stdev} = 10394.28</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-07-19T06:09:14.885460" elapsed="0.003731"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.889797" level="INFO">${date} = 2026-07-19 06:09:14</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-07-19T06:09:14.889387" elapsed="0.000437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.890405" level="INFO">CBench Result: 2026-07-19 06:09:14,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29505.19,32177.93,31105.53,10394.28</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-07-19T06:09:14.889974" elapsed="0.000489"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-07-19T06:09:14.891734" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-chromium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-chromium/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-07-19T06:09:14.891153" elapsed="0.000654"/>
</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-07-19T06:09:14.891964" elapsed="0.000520"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-07-19T06:09:14.890647" elapsed="0.001909"/>
</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-07-19T05:59:08.105700" elapsed="606.786920"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.893115" 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-07-19T06:09:14.892785" elapsed="0.000388"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-07-19T06:09:14.894535" 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-07-19T06:09:14.894023" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-07-19T06:09:14.894814" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-07-19T06:09:14.894651" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-07-19T06:09:14.894627" elapsed="0.000284"/>
</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-07-19T06:09:14.895063" 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-07-19T06:09:14.895241" 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-07-19T06:09:14.895403" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-07-19T06:09:14.895608" elapsed="0.000021"/>
</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-07-19T06:09:14.895758" elapsed="0.000019"/>
</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-07-19T06:09:14.895902" 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-07-19T06:09:14.896044" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-07-19T06:09:14.896279" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-07-19T06:09:14.896125" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-07-19T06:09:14.896108" 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-07-19T06:09:14.893668" elapsed="0.002738"/>
</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-07-19T05:59:08.103616" elapsed="606.792837"/>
</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="FAIL" start="2026-07-19T05:45:31.821110" elapsed="1423.075963"/>
</suite>
<statistics>
<total>
<stat pass="2" fail="1" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="2" fail="1" skip="0">cbench</stat>
<stat pass="2" fail="0" skip="0">latency</stat>
<stat pass="0" fail="1" skip="0">throughput</stat>
</tag>
<suite>
<stat name="openflowplugin-cbench.txt" id="s1" pass="2" fail="1" skip="0">openflowplugin-cbench.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
