<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-07T01:04:22.268712" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-10-07T01:04:22.752094" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-10-07T01:04:22.751950" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-10-07T01:04:22.751922" elapsed="0.000267"/>
</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-10-07T01:04:22.752356" elapsed="0.000439"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-07T01:04:22.753257" level="INFO">Logging into '10.30.170.80:8101' as 'karaf'.</msg>
<msg time="2026-10-07T01:04:23.494453" 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-10-07T01:04:22.753004" elapsed="0.741614"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-07T01:04:23.542947" 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-10-07T01:04:23.494915" elapsed="0.048096"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-07T01:04:23.547963" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-07T01:04:23.548089" 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-10-07T01:04:23.543196" elapsed="0.004922"/>
</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-10-07T01:04:23.548276" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:04:23.548624" elapsed="0.000223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:04:23.549378" 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-10-07T01:04:23.549051" elapsed="0.000378"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-07T01:04:23.549478" elapsed="0.000057"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.80
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-07T01:04:22.751631" elapsed="0.798023"/>
</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-10-07T01:04:22.749988" elapsed="0.799762"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-07T01:04:23.550282" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-10-07T01:04:23.549940" elapsed="0.000395"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-07T01:04:23.550754" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-10-07T01:04:23.550483" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-07T01:04:23.551415" 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-10-07T01:04:23.550982" elapsed="0.000459"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-07T01:04:23.551968" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-07T01:04:23.551640" elapsed="0.000367"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-07T01:04:23.552512" 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-10-07T01:04:23.552184" elapsed="0.000352"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-07T01:04:23.553015" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-07T01:04:23.552735" elapsed="0.000335"/>
</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-10-07T01:04:23.553339" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:04:23.553149" elapsed="0.000240"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-07T01:04:23.555526" 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-10-07T01:04:23.555183" elapsed="0.000368"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-07T01:04:23.556652" level="INFO">Length is 0.</msg>
<msg time="2026-10-07T01:04:23.556746" 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-10-07T01:04:23.556070" elapsed="0.000701"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-07T01:04:23.556908" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-07T01:04:23.558053" level="INFO">Logging into '10.30.170.59:22' as 'jenkins'.</msg>
<msg time="2026-10-07T01:04:24.026920" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Wed Oct  7 01:03:35 UTC 2026

  System load:  0.22               Processes:             111
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.59
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


[?2004h[jenkins@releng-48317-859-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-10-07T01:04:23.557799" elapsed="0.469222"/>
</kw>
<msg time="2026-10-07T01:04:24.027111" 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-10-07T01:04:23.557418" elapsed="0.469770"/>
</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-10-07T01:04:23.555751" elapsed="0.471531"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.037231" 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-10-07T01:04:24.027451" elapsed="0.012013"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:04:24.039727" elapsed="0.000371"/>
</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-10-07T01:04:23.554681" elapsed="0.485501"/>
</kw>
<status status="PASS" start="2026-10-07T01:04:23.553455" elapsed="0.486773"/>
</branch>
<status status="PASS" start="2026-10-07T01:04:23.553125" elapsed="0.487141"/>
</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-10-07T01:04:24.040497" elapsed="0.000592"/>
</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-10-07T01:04:24.043657" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-07T01:04:24.043525" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-10-07T01:04:24.043495" elapsed="0.000284"/>
</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-10-07T01:04:24.045824" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-10-07T01:04:24.045679" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-10-07T01:04:24.045655" elapsed="0.000259"/>
</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-10-07T01:04:24.046148" elapsed="0.000486"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.047226" level="INFO">Logging into '10.30.170.80:8101' as 'karaf'.</msg>
<msg time="2026-10-07T01:04:24.247240" 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-10-07T01:04:24.046925" elapsed="0.200411"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.335600" 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-10-07T01:04:24.247513" elapsed="0.088154"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.339467" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           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-10-07T01:04:24.339638" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           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-10-07T01:04:24.335844" elapsed="0.003824"/>
</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-10-07T01:04:24.339824" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:04:24.340161" elapsed="0.000186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:04:24.340817" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           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-10-07T01:04:24.340529" elapsed="0.000340"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-07T01:04:24.340911" elapsed="0.000041"/>
</return>
<msg time="2026-10-07T01:04:24.341091" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.4           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.80
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-07T01:04:24.045287" elapsed="0.295834"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-07T01:04:24.341275" elapsed="0.000499"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-07T01:04:24.341822" elapsed="0.000031"/>
</return>
<arg>odl-openflowplugin-drop-test</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-10-07T01:04:24.043183" elapsed="0.298751"/>
</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-10-07T01:04:24.343592" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-07T01:04:24.343494" elapsed="0.000141"/>
</branch>
<status status="PASS" start="2026-10-07T01:04:24.343474" elapsed="0.000183"/>
</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-10-07T01:04:24.343833" elapsed="0.000357"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.344561" level="INFO">Logging into '10.30.170.80:8101' as 'karaf'.</msg>
<msg time="2026-10-07T01:04:24.510161" 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-10-07T01:04:24.344363" elapsed="0.165883"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.531583" 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-10-07T01:04:24.510413" elapsed="0.021230"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.533604" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-07T01:04:24.533708" 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-10-07T01:04:24.531813" elapsed="0.001924"/>
</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-10-07T01:04:24.533872" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:04:24.534201" elapsed="0.000156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:04:24.534806" 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-10-07T01:04:24.534531" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-07T01:04:24.534896" elapsed="0.000036"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.80
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-10-07T01:04:24.343227" elapsed="0.191786"/>
</kw>
<status status="PASS" start="2026-10-07T01:04:22.748089" elapsed="1.786997"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:04:24.536856" 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-10-07T01:04:24.535934" elapsed="0.000984"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-07T01:04:24.538263" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-07T01:04:24.537933" elapsed="0.000370"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-07T01:04:24.538584" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:04:24.538370" elapsed="0.000266"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-07T01:04:24.539739" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:04:24.539504" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-10-07T01:04:24.539486" elapsed="0.000329"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.540232" 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-10-07T01:04:24.540345" 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-10-07T01:04:24.539995" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:04:24.540898" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.80 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.59" 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-10-07T01:04:24.540545" elapsed="0.000408"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.541537" 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-10-07T01:04:24.541132" elapsed="0.000429"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-07T01:04:24.542419" level="INFO">Length is 0.</msg>
<msg time="2026-10-07T01:04:24.542499" 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-10-07T01:04:24.542120" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-07T01:04:24.542656" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.543797" level="INFO">Logging into '10.30.170.59:22' as 'jenkins'.</msg>
<msg time="2026-10-07T01:04:24.907395" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Wed Oct  7 01:03:35 UTC 2026

  System load:  0.22               Processes:             111
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.59
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Wed Oct  7 01:04:23 2026 from 10.30.170.243
[?2004h[jenkins@releng-48317-859-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-10-07T01:04:24.543514" elapsed="0.364059"/>
</kw>
<msg time="2026-10-07T01:04:24.907655" 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-10-07T01:04:24.543146" elapsed="0.364618"/>
</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-10-07T01:04:24.541760" elapsed="0.366125"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-07T01:04:24.908439" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.80 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-07T01:14:31.058495" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-07T01:14:31.059221" level="INFO">${stdout} = </msg>
<msg time="2026-10-07T01:14:31.059318" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-07T01:04:24.908161" elapsed="606.151212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:14:31.059904" elapsed="0.000722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.061910" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.80. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:05:30.125 16  switches: flows:  99842 100203 98832 101219 100075 98943 97084 96674 96186 95098 95229 97476 94706 95389 98103 97011  total = 26.034500 per ms 
01:06:30.226 16  switches: flows:  107233 106400 104405 106085 105078 102611 102770 101656 102332 100901 99890 102440 101436 100025 103145 102643  total = 27.438339 per ms 
01:07:30.327 16  switches: flows:  105961 106989 104124 106443 105549 101738 102873 101854 100897 98531 99913 102614 100268 99105 101808 101097  total = 27.283874 per ms 
01:08:30.428 16  switches: flows:  107284 109037 104232 106604 103824 103662 101254 100990 100533 99953 101695 101497 100245 100394 103836 101445  total = 27.395706 per ms 
01:09:30.529 16  switches: flows:  107723 108416 105822 108526 104588 103428 106955 102906 103539 101331 103258 100949 102341 100481 104332 99372  total = 27.686592 per ms 
01:10:30.629 16  switches: flows:  107867 107321 105729 105897 102904 104446 105156 102736 101683 99908 104110 101662 102013 102922 101131 99445  total = 27.536214 per ms 
01:11:30.730 16  switches: flows:  106033 108275 102940 101276 100308 101145 102610 101443 99552 97858 102721 99029 99913 100192 98939 97500  total = 26.950576 per ms 
01:12:30.831 16  switches: flows:  109214 108775 105279 103402 102607 102552 102771 104612 101548 102072 103203 101744 101154 102232 101133 99828  total = 27.489541 per ms 
01:13:30.931 16  switches: flows:  103954 103373 101822 100202 98222 100763 99610 100110 97153 95981 100989 98109 98999 98328 98385 94698  total = 26.467457 per ms 
01:14:31.032 16  switches: flows:  99043 100686 98055 96493 95694 95420 96090 97287 93895 91690 99296 94547 95652 94127 95392 92498  total = 25.555103 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25555.10/27686.59/27089.27/9052.68 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:14:31.061161" elapsed="0.001041"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-07T01:14:31.062638" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-10-07T01:14:31.062391" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-10-07T01:14:31.062324" elapsed="0.000548"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-07T01:14:31.063091" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-10-07T01:14:31.063015" elapsed="0.000160"/>
</branch>
<status status="NOT RUN" start="2026-10-07T01:14:31.062981" elapsed="0.000238"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-07T01:14:31.063285" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-07T01:14:31.064875" elapsed="0.000678"/>
</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-10-07T01:14:31.065979" elapsed="0.000328"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:14:31.066589" elapsed="0.000234"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-07T01:14:31.063981" elapsed="0.002950"/>
</kw>
<msg time="2026-10-07T01:14:31.067175" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-07T01:04:24.538988" elapsed="606.528242"/>
</kw>
<status status="PASS" start="2026-10-07T01:04:24.538663" elapsed="606.528664"/>
</branch>
<status status="PASS" start="2026-10-07T01:04:24.538351" elapsed="606.529024"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.068444" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.80. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:05:30.125 16  switches: flows:  99842 100203 98832 101219 100075 98943 97084 96674 96186 95098 95229 97476 94706 95389 98103 97011  total = 26.034500 per ms 
01:06:30.226 16  switches: flows:  107233 106400 104405 106085 105078 102611 102770 101656 102332 100901 99890 102440 101436 100025 103145 102643  total = 27.438339 per ms 
01:07:30.327 16  switches: flows:  105961 106989 104124 106443 105549 101738 102873 101854 100897 98531 99913 102614 100268 99105 101808 101097  total = 27.283874 per ms 
01:08:30.428 16  switches: flows:  107284 109037 104232 106604 103824 103662 101254 100990 100533 99953 101695 101497 100245 100394 103836 101445  total = 27.395706 per ms 
01:09:30.529 16  switches: flows:  107723 108416 105822 108526 104588 103428 106955 102906 103539 101331 103258 100949 102341 100481 104332 99372  total = 27.686592 per ms 
01:10:30.629 16  switches: flows:  107867 107321 105729 105897 102904 104446 105156 102736 101683 99908 104110 101662 102013 102922 101131 99445  total = 27.536214 per ms 
01:11:30.730 16  switches: flows:  106033 108275 102940 101276 100308 101145 102610 101443 99552 97858 102721 99029 99913 100192 98939 97500  total = 26.950576 per ms 
01:12:30.831 16  switches: flows:  109214 108775 105279 103402 102607 102552 102771 104612 101548 102072 103203 101744 101154 102232 101133 99828  total = 27.489541 per ms 
01:13:30.931 16  switches: flows:  103954 103373 101822 100202 98222 100763 99610 100110 97153 95981 100989 98109 98999 98328 98385 94698  total = 26.467457 per ms 
01:14:31.032 16  switches: flows:  99043 100686 98055 96493 95694 95420 96090 97287 93895 91690 99296 94547 95652 94127 95392 92498  total = 25.555103 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 25555.10/27686.59/27089.27/9052.68 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:14:31.067828" elapsed="0.000770"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-07T01:14:31.068994" elapsed="0.000773"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-07T01:14:31.070592" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-07T01:14:31.070809" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 25555.10/27686.59/27089.27/9052.68 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-10-07T01:14:31.070172" elapsed="0.000690"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:14:31.071768" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 25555.10/27686.59/27089.27/9052.68 | 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-10-07T01:14:31.071234" elapsed="0.000593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.073069" 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-10-07T01:14:31.072309" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.074334" level="INFO">25555.10/27686.59/27089.27/9052.68</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:14:31.073585" elapsed="0.000861"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:14:31.075462" 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-10-07T01:14:31.074821" elapsed="0.000696"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:14:31.076623" level="INFO">@{result_value_list} = [ 25555.10 | 27686.59 | 27089.27 | 9052.68 ]</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-10-07T01:14:31.075985" elapsed="0.000694"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.077722" level="INFO">Length is 4.</msg>
<msg time="2026-10-07T01:14:31.077901" 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-10-07T01:14:31.077090" elapsed="0.000882"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.079790" level="INFO">min :: 25555.10</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-10-07T01:14:31.078845" elapsed="0.001059"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-07T01:14:31.078437" elapsed="0.001555"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.081544" level="INFO">max :: 27686.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-10-07T01:14:31.080539" elapsed="0.001117"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-07T01:14:31.080173" elapsed="0.001583"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.083272" level="INFO">avg :: 27089.27</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-10-07T01:14:31.082328" elapsed="0.001056"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-07T01:14:31.081939" elapsed="0.001513"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.084990" level="INFO">stdev :: 9052.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-10-07T01:14:31.084054" elapsed="0.001049"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-07T01:14:31.083633" elapsed="0.001538"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-07T01:14:31.078100" elapsed="0.007136"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.086471" level="INFO">${min} = 25555.10</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:14:31.085580" elapsed="0.000945"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.087804" level="INFO">${max} = 27686.59</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:14:31.086899" elapsed="0.000962"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.089101" level="INFO">${average} = 27089.27</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:14:31.088212" elapsed="0.000943"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.090356" level="INFO">${stdev} = 9052.68</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:14:31.089482" elapsed="0.000927"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.091582" level="INFO">${date} = 2026-10-07 01:14:31</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-07T01:14:31.090847" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.092836" level="INFO">CBench Result: 2026-10-07 01:14:31,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,25555.10,27686.59,27089.27,9052.68</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-10-07T01:14:31.092095" elapsed="0.000872"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-07T01:14:31.095206" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-10-07T01:14:31.094159" elapsed="0.001185"/>
</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-10-07T01:14:31.095728" elapsed="0.000873"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-07T01:14:31.093239" elapsed="0.003526"/>
</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-10-07T01:04:24.537394" elapsed="606.559494"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.097885" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-07T01:14:31.097226" elapsed="0.000870"/>
</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-10-07T01:14:31.099247" elapsed="0.000748"/>
</kw>
<status status="PASS" start="2026-10-07T01:14:31.098552" elapsed="0.001588"/>
</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-10-07T01:04:24.535220" elapsed="606.564991"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.102188" 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-10-07T01:14:31.101679" elapsed="0.000581"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.103829" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-07T01:14:31.103358" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-07T01:14:31.104556" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:14:31.104217" elapsed="0.000415"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-07T01:14:31.106135" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:14:31.105820" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-10-07T01:14:31.105797" elapsed="0.000446"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-07T01:14:31.106762" 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-10-07T01:14:31.106911" 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-10-07T01:14:31.106492" elapsed="0.000476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.107654" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.80 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.59" 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-10-07T01:14:31.107207" elapsed="0.000572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-07T01:14:31.108463" 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-10-07T01:14:31.108017" elapsed="0.000479"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-07T01:14:31.109655" level="INFO">Length is 0.</msg>
<msg time="2026-10-07T01:14:31.109786" 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-10-07T01:14:31.109266" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-07T01:14:31.110018" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-07T01:14:31.111527" level="INFO">Logging into '10.30.170.59:22' as 'jenkins'.</msg>
<msg time="2026-10-07T01:14:31.734668" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Wed Oct  7 01:14:31 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Wed Oct  7 01:04:24 2026 from 10.30.170.243
[?2004h[jenkins@releng-48317-859-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-10-07T01:14:31.111162" elapsed="0.623709"/>
</kw>
<msg time="2026-10-07T01:14:31.734952" 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-10-07T01:14:31.110629" elapsed="0.624423"/>
</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-10-07T01:14:31.108769" elapsed="0.626391"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-07T01:14:31.735668" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.80 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-07T01:24:37.793480" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-07T01:24:37.794132" level="INFO">${stdout} = </msg>
<msg time="2026-10-07T01:24:37.794229" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.80: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-10-07T01:14:31.735410" elapsed="606.058871"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:24:37.794771" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.796643" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.80. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:15:36.850 16  switches: flows:  464936 461288 451281 464402 458538 466553 465041 466952 457738 464647 460769 456018 468406 452770 461488 450933  total = 122.862667 per ms 
01:16:36.951 16  switches: flows:  464408 461873 462481 466439 462352 469621 468192 474170 459987 461026 460241 464578 465203 466402 468186 470900  total = 123.892839 per ms 
01:17:37.053 16  switches: flows:  486914 487117 485881 484383 487710 483245 488924 487018 488728 489150 487296 479828 492230 487729 490542 484389  total = 129.633264 per ms 
01:18:37.155 16  switches: flows:  471120 465341 470960 468229 462362 468824 469801 467767 463888 468583 466600 468337 463640 466403 471721 463472  total = 124.408961 per ms 
01:19:37.256 16  switches: flows:  505379 507140 505297 506229 502634 507681 511517 503864 499881 506235 502379 506915 505520 502973 507196 501300  total = 134.476109 per ms 
01:20:37.358 16  switches: flows:  518813 517488 521758 521089 516226 518408 517328 516896 522763 517581 520563 519061 523244 521555 516056 514366  total = 138.153493 per ms 
01:21:37.461 16  switches: flows:  526207 525620 525389 527491 530002 524966 516293 523165 532095 528827 518829 520574 526663 530600 524189 523241  total = 139.832833 per ms 
01:22:37.566 16  switches: flows:  470301 465696 461249 460716 455582 462571 462899 462937 466048 465407 465017 459991 464236 465331 461183 463298  total = 123.323870 per ms 
01:23:37.667 16  switches: flows:  504128 508025 507787 513043 505273 507592 506929 502879 508770 511066 509979 506151 509136 511288 506334 503911  total = 135.144854 per ms 
01:24:37.768 16  switches: flows:  562084 563719 567164 566322 557412 566710 567582 562998 563586 558906 556089 561961 563775 567154 560361 562670  total = 149.889167 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 123323.87/149889.17/133195.04/45175.65 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:24:37.795954" elapsed="0.001021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-07T01:24:37.797388" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-10-07T01:24:37.797141" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-10-07T01:24:37.797092" elapsed="0.000493"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-07T01:24:37.797809" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-07T01:24:37.797731" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-10-07T01:24:37.797667" elapsed="0.000290"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-07T01:24:37.798020" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-07T01:24:37.799610" elapsed="0.000703"/>
</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-10-07T01:24:37.800685" elapsed="0.000376"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:24:37.801342" elapsed="0.000209"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-07T01:24:37.798684" elapsed="0.002974"/>
</kw>
<msg time="2026-10-07T01:24:37.801940" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.80: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-10-07T01:14:31.105110" elapsed="606.696887"/>
</kw>
<status status="PASS" start="2026-10-07T01:14:31.104664" elapsed="606.697430"/>
</branch>
<status status="PASS" start="2026-10-07T01:14:31.104189" elapsed="606.697953"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.803186" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.80. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:15:36.850 16  switches: flows:  464936 461288 451281 464402 458538 466553 465041 466952 457738 464647 460769 456018 468406 452770 461488 450933  total = 122.862667 per ms 
01:16:36.951 16  switches: flows:  464408 461873 462481 466439 462352 469621 468192 474170 459987 461026 460241 464578 465203 466402 468186 470900  total = 123.892839 per ms 
01:17:37.053 16  switches: flows:  486914 487117 485881 484383 487710 483245 488924 487018 488728 489150 487296 479828 492230 487729 490542 484389  total = 129.633264 per ms 
01:18:37.155 16  switches: flows:  471120 465341 470960 468229 462362 468824 469801 467767 463888 468583 466600 468337 463640 466403 471721 463472  total = 124.408961 per ms 
01:19:37.256 16  switches: flows:  505379 507140 505297 506229 502634 507681 511517 503864 499881 506235 502379 506915 505520 502973 507196 501300  total = 134.476109 per ms 
01:20:37.358 16  switches: flows:  518813 517488 521758 521089 516226 518408 517328 516896 522763 517581 520563 519061 523244 521555 516056 514366  total = 138.153493 per ms 
01:21:37.461 16  switches: flows:  526207 525620 525389 527491 530002 524966 516293 523165 532095 528827 518829 520574 526663 530600 524189 523241  total = 139.832833 per ms 
01:22:37.566 16  switches: flows:  470301 465696 461249 460716 455582 462571 462899 462937 466048 465407 465017 459991 464236 465331 461183 463298  total = 123.323870 per ms 
01:23:37.667 16  switches: flows:  504128 508025 507787 513043 505273 507592 506929 502879 508770 511066 509979 506151 509136 511288 506334 503911  total = 135.144854 per ms 
01:24:37.768 16  switches: flows:  562084 563719 567164 566322 557412 566710 567582 562998 563586 558906 556089 561961 563775 567154 560361 562670  total = 149.889167 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 123323.87/149889.17/133195.04/45175.65 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:24:37.802540" elapsed="0.000799"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-07T01:24:37.803684" elapsed="0.000778"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-07T01:24:37.805301" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-07T01:24:37.805485" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 123323.87/149889.17/133195.04/45175.65 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-10-07T01:24:37.804865" elapsed="0.000670"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:24:37.806436" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 123323.87/149889.17/133195.04/45175.65 | 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-10-07T01:24:37.805938" elapsed="0.000555"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.807645" 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-10-07T01:24:37.806951" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.808984" level="INFO">123323.87/149889.17/133195.04/45175.65</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:24:37.808224" elapsed="0.000877"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:24:37.810153" 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-10-07T01:24:37.809444" elapsed="0.000766"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:24:37.811310" level="INFO">@{result_value_list} = [ 123323.87 | 149889.17 | 133195.04 | 45175.65 ]</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-10-07T01:24:37.810626" elapsed="0.000740"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.812389" level="INFO">Length is 4.</msg>
<msg time="2026-10-07T01:24:37.812570" 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-10-07T01:24:37.811735" elapsed="0.000886"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.814445" level="INFO">min :: 123323.87</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-10-07T01:24:37.813494" elapsed="0.001064"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-07T01:24:37.813121" elapsed="0.001505"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.816170" level="INFO">max :: 149889.17</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-10-07T01:24:37.815219" elapsed="0.001062"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-07T01:24:37.814837" elapsed="0.001513"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.817903" level="INFO">avg :: 133195.04</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-10-07T01:24:37.816938" elapsed="0.001081"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-07T01:24:37.816522" elapsed="0.001564"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.819568" level="INFO">stdev :: 45175.65</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-10-07T01:24:37.818623" elapsed="0.001055"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-07T01:24:37.818256" elapsed="0.001523"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-07T01:24:37.812771" elapsed="0.007069"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.821166" level="INFO">${min} = 123323.87</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:24:37.820224" elapsed="0.000996"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.822485" level="INFO">${max} = 149889.17</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:24:37.821575" elapsed="0.000963"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.823941" level="INFO">${average} = 133195.04</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:24:37.823031" elapsed="0.000965"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.825223" level="INFO">${stdev} = 45175.65</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:24:37.824326" elapsed="0.000951"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.826483" level="INFO">${date} = 2026-10-07 01:24:37</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-07T01:24:37.825679" elapsed="0.000857"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.827750" level="INFO">CBench Result: 2026-10-07 01:24:37,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,123323.87,149889.17,133195.04,45175.65</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-10-07T01:24:37.826991" elapsed="0.000876"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-07T01:24:37.829794" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-07T01:24:37.829054" elapsed="0.000899"/>
</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-10-07T01:24:37.830303" elapsed="0.001214"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-07T01:24:37.828149" elapsed="0.003501"/>
</kw>
<arg>-t -m ${duration_in_ms} -M ${num_of_unique_macs} -S ${switch_count} -l ${loops} -D ${start_delay} -p ${of_port}</arg>
<arg>${throughput_threshold}</arg>
<arg>${throughput_results_file}</arg>
<status status="PASS" start="2026-10-07T01:14:31.102654" elapsed="606.729151"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.832809" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-07T01:24:37.832142" elapsed="0.000804"/>
</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-10-07T01:24:37.834145" elapsed="0.000621"/>
</kw>
<status status="PASS" start="2026-10-07T01:24:37.833353" elapsed="0.001614"/>
</kw>
<doc>cbench executed in throughput mode (-t). Test parameters have defaults, but can be overridden
on the pybot command line</doc>
<tag>cbench</tag>
<tag>throughput</tag>
<timeout value="15 minutes"/>
<status status="PASS" start="2026-10-07T01:14:31.100845" elapsed="606.734198"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.837146" 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-10-07T01:24:37.836474" elapsed="0.000746"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.839238" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-07T01:24:37.838722" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="NOT RUN" start="2026-10-07T01:24:37.840001" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:24:37.839637" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-07T01:24:37.841546" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:24:37.841245" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-10-07T01:24:37.841221" elapsed="0.000426"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-07T01:24:37.842186" 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-10-07T01:24:37.842332" 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-10-07T01:24:37.841953" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.843136" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.80 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.59" 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-10-07T01:24:37.842606" elapsed="0.000605"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-07T01:24:37.843919" 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-10-07T01:24:37.843435" elapsed="0.000519"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-07T01:24:37.845159" level="INFO">Length is 0.</msg>
<msg time="2026-10-07T01:24:37.845269" 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-10-07T01:24:37.844684" elapsed="0.000616"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-07T01:24:37.845485" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-07T01:24:37.847192" level="INFO">Logging into '10.30.170.59:22' as 'jenkins'.</msg>
<msg time="2026-10-07T01:24:38.473995" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Wed Oct  7 01:24:38 UTC 2026

  System load:  0.44               Processes:             107
  Usage of /:   19.9% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.59
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Wed Oct  7 01:14:31 2026 from 10.30.170.243
[?2004h[jenkins@releng-48317-859-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-10-07T01:24:37.846672" elapsed="0.627498"/>
</kw>
<msg time="2026-10-07T01:24:38.474251" 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-10-07T01:24:37.846170" elapsed="0.628160"/>
</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-10-07T01:24:37.844205" elapsed="0.630230"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-07T01:24:38.475001" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.80 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-07T01:34:44.553789" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-07T01:34:44.554400" level="INFO">${stdout} = </msg>
<msg time="2026-10-07T01:34:44.554496" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-07T01:24:38.474706" elapsed="606.079843"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:34:44.555030" elapsed="0.000662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.556937" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.80. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:25:43.624 16  switches: flows:  94192 94924 93479 92289 94136 96803 95035 96043 90883 94195 93180 93353 96150 94617 97200 93567  total = 25.167433 per ms 
01:26:43.724 16  switches: flows:  96391 97226 92322 94307 91968 98826 96007 95477 91398 93040 96194 92339 98733 95792 96829 94591  total = 25.315064 per ms 
01:27:43.824 16  switches: flows:  93531 92876 89412 90375 88617 96262 90794 92982 88883 90088 92234 87756 94404 88724 90052 92649  total = 24.286797 per ms 
01:28:43.925 16  switches: flows:  96742 93877 93559 92021 91281 99463 94802 94891 92131 94447 93905 90814 96639 92518 94877 95930  total = 25.089752 per ms 
01:29:44.025 16  switches: flows:  99011 98778 97156 94913 94994 103087 98163 100320 92622 97121 99860 93443 99529 98095 100967 102024  total = 26.124443 per ms 
01:30:44.125 16  switches: flows:  103484 100660 100712 100987 98490 104825 100897 102610 97543 97598 104347 98528 101408 100112 101808 102996  total = 26.905163 per ms 
01:31:44.225 16  switches: flows:  101756 101532 97281 98488 96590 101860 99855 99685 95497 98846 101087 99418 98230 100398 103585 98856  total = 26.505030 per ms 
01:32:44.326 16  switches: flows:  100060 100809 98213 99495 96601 107008 98602 99527 95801 98974 98155 98943 100182 99246 98214 98569  total = 26.429197 per ms 
01:33:44.426 16  switches: flows:  100720 96624 98733 98284 96730 103615 98263 95362 94398 97381 99419 96216 98087 95669 95727 97851  total = 26.007900 per ms 
01:34:44.526 16  switches: flows:  96649 94113 94995 94902 92579 96827 94471 94751 92271 94969 92986 92528 94515 91247 91658 95645  total = 25.043304 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24286.80/26905.16/25745.18/8619.44 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:34:44.556217" elapsed="0.001004"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-07T01:34:44.557628" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-10-07T01:34:44.557385" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-10-07T01:34:44.557338" elapsed="0.000521"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-07T01:34:44.558045" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-10-07T01:34:44.557972" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-10-07T01:34:44.557940" elapsed="0.000256"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-07T01:34:44.558258" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-07T01:34:44.559861" elapsed="0.000668"/>
</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-10-07T01:34:44.560933" elapsed="0.000356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-07T01:34:44.561569" elapsed="0.000232"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-07T01:34:44.558946" elapsed="0.002964"/>
</kw>
<msg time="2026-10-07T01:34:44.562158" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-07T01:24:37.840507" elapsed="606.721706"/>
</kw>
<status status="PASS" start="2026-10-07T01:24:37.840110" elapsed="606.722199"/>
</branch>
<status status="PASS" start="2026-10-07T01:24:37.839605" elapsed="606.722752"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.563385" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.80:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.80. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:25:43.624 16  switches: flows:  94192 94924 93479 92289 94136 96803 95035 96043 90883 94195 93180 93353 96150 94617 97200 93567  total = 25.167433 per ms 
01:26:43.724 16  switches: flows:  96391 97226 92322 94307 91968 98826 96007 95477 91398 93040 96194 92339 98733 95792 96829 94591  total = 25.315064 per ms 
01:27:43.824 16  switches: flows:  93531 92876 89412 90375 88617 96262 90794 92982 88883 90088 92234 87756 94404 88724 90052 92649  total = 24.286797 per ms 
01:28:43.925 16  switches: flows:  96742 93877 93559 92021 91281 99463 94802 94891 92131 94447 93905 90814 96639 92518 94877 95930  total = 25.089752 per ms 
01:29:44.025 16  switches: flows:  99011 98778 97156 94913 94994 103087 98163 100320 92622 97121 99860 93443 99529 98095 100967 102024  total = 26.124443 per ms 
01:30:44.125 16  switches: flows:  103484 100660 100712 100987 98490 104825 100897 102610 97543 97598 104347 98528 101408 100112 101808 102996  total = 26.905163 per ms 
01:31:44.225 16  switches: flows:  101756 101532 97281 98488 96590 101860 99855 99685 95497 98846 101087 99418 98230 100398 103585 98856  total = 26.505030 per ms 
01:32:44.326 16  switches: flows:  100060 100809 98213 99495 96601 107008 98602 99527 95801 98974 98155 98943 100182 99246 98214 98569  total = 26.429197 per ms 
01:33:44.426 16  switches: flows:  100720 96624 98733 98284 96730 103615 98263 95362 94398 97381 99419 96216 98087 95669 95727 97851  total = 26.007900 per ms 
01:34:44.526 16  switches: flows:  96649 94113 94995 94902 92579 96827 94471 94751 92271 94969 92986 92528 94515 91247 91658 95645  total = 25.043304 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24286.80/26905.16/25745.18/8619.44 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:34:44.562780" elapsed="0.000755"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-07T01:34:44.563911" elapsed="0.000869"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-07T01:34:44.565598" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-07T01:34:44.565814" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24286.80/26905.16/25745.18/8619.44 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-10-07T01:34:44.565186" elapsed="0.000681"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:34:44.566784" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24286.80/26905.16/25745.18/8619.44 | 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-10-07T01:34:44.566244" elapsed="0.000599"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.568000" 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-10-07T01:34:44.567277" elapsed="0.000858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.569265" level="INFO">24286.80/26905.16/25745.18/8619.44</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:34:44.568538" elapsed="0.000840"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:34:44.570396" 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-10-07T01:34:44.569750" elapsed="0.000701"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-07T01:34:44.571538" level="INFO">@{result_value_list} = [ 24286.80 | 26905.16 | 25745.18 | 8619.44 ]</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-10-07T01:34:44.570894" elapsed="0.000700"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.572588" level="INFO">Length is 4.</msg>
<msg time="2026-10-07T01:34:44.572793" 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-10-07T01:34:44.571962" elapsed="0.000882"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.574623" level="INFO">min :: 24286.80</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-10-07T01:34:44.573678" elapsed="0.001089"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-07T01:34:44.573307" elapsed="0.001530"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.576349" level="INFO">max :: 26905.16</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-10-07T01:34:44.575400" elapsed="0.001061"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-07T01:34:44.575010" elapsed="0.001518"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.578028" level="INFO">avg :: 25745.18</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-07T01:34:44.577112" elapsed="0.001051"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-07T01:34:44.576693" elapsed="0.001538"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.579746" level="INFO">stdev :: 8619.44</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-10-07T01:34:44.578795" elapsed="0.001067"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-07T01:34:44.578395" elapsed="0.001536"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-07T01:34:44.572963" elapsed="0.007027"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.581307" level="INFO">${min} = 24286.80</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:34:44.580349" elapsed="0.001022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.582626" level="INFO">${max} = 26905.16</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:34:44.581760" elapsed="0.000919"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.583974" level="INFO">${average} = 25745.18</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:34:44.583043" elapsed="0.000986"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.585398" level="INFO">${stdev} = 8619.44</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-07T01:34:44.584495" elapsed="0.000956"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.586642" level="INFO">${date} = 2026-10-07 01:34:44</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-10-07T01:34:44.585912" elapsed="0.000782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.587916" level="INFO">CBench Result: 2026-10-07 01:34:44,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24286.80,26905.16,25745.18,8619.44</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-10-07T01:34:44.587177" elapsed="0.000849"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-07T01:34:44.589988" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/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-10-07T01:34:44.589218" elapsed="0.000934"/>
</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-10-07T01:34:44.590506" elapsed="0.001256"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-07T01:34:44.588309" elapsed="0.003590"/>
</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-10-07T01:24:37.837670" elapsed="606.754348"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.593012" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-07T01:34:44.592362" elapsed="0.000792"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-07T01:34:44.595654" 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-10-07T01:34:44.594660" elapsed="0.001091"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-10-07T01:34:44.596182" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-10-07T01:34:44.595904" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-07T01:34:44.595866" elapsed="0.000489"/>
</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-10-07T01:34:44.596666" elapsed="0.000076"/>
</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-10-07T01:34:44.597041" elapsed="0.000061"/>
</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-10-07T01:34:44.597432" elapsed="0.000040"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-07T01:34:44.597792" elapsed="0.000042"/>
</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-10-07T01:34:44.598261" elapsed="0.000043"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="NOT RUN" start="2026-10-07T01:34:44.598590" elapsed="0.000041"/>
</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-10-07T01:34:44.599025" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds The given `tags` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-10-07T01:34:44.599534" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-10-07T01:34:44.599218" elapsed="0.000396"/>
</branch>
<status status="NOT RUN" start="2026-10-07T01:34:44.599183" elapsed="0.000462"/>
</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-10-07T01:34:44.593899" elapsed="0.005826"/>
</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-10-07T01:24:37.835606" elapsed="606.764178"/>
</test>
<doc>Cbench Latency and Throughput tests can be run from an external
cbench.
If cbench is run with a medium number of switches or higher (e.g. 32+)
the normal openflow operations seem to break.
BUG: https://bugs.opendaylight.org/show_bug.cgi?id=2897</doc>
<status status="PASS" start="2026-10-07T01:04:22.270254" elapsed="1822.330092"/>
</suite>
<statistics>
<total>
<stat pass="3" fail="0" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="3" fail="0" skip="0">cbench</stat>
<stat pass="2" fail="0" skip="0">latency</stat>
<stat pass="1" fail="0" skip="0">throughput</stat>
</tag>
<suite>
<stat name="openflowplugin-cbench.txt" id="s1" pass="3" fail="0" skip="0">openflowplugin-cbench.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
