<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-09T00:48:01.512642" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/test/csit/suites/openflowplugin/Performance/010_Cbench.robot">
<kw name="Cbench Suite Setup" type="SETUP">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-09T00:48:01.989999" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-09T00:48:01.989864" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-10-09T00:48:01.989834" elapsed="0.000264"/>
</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-09T00:48:01.990271" elapsed="0.000417"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-09T00:48:01.991158" level="INFO">Logging into '10.30.171.36:8101' as 'karaf'.</msg>
<msg time="2026-10-09T00:48:02.829846" 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-09T00:48:01.990901" elapsed="0.839136"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-09T00:48:02.880528" 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-09T00:48:02.830317" elapsed="0.050283"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-09T00:48:02.882408" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-09T00:48:02.882518" 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-09T00:48:02.880799" elapsed="0.001747"/>
</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-09T00:48:02.882715" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T00:48:02.883083" elapsed="0.000215"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:48:02.883843" 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-09T00:48:02.883488" elapsed="0.000405"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-09T00:48:02.883943" elapsed="0.000092"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.36
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-09T00:48:01.989546" elapsed="0.894623"/>
</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-09T00:48:01.987926" elapsed="0.896303"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-09T00:48:02.884798" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-09T00:48:02.884421" elapsed="0.000431"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-09T00:48:02.885234" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-09T00:48:02.885018" elapsed="0.000269"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-09T00:48:02.885896" 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-09T00:48:02.885455" elapsed="0.000467"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-09T00:48:02.886448" 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-09T00:48:02.886141" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-09T00:48:02.887034" 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-09T00:48:02.886672" elapsed="0.000388"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-09T00:48:02.887525" 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-09T00:48:02.887243" elapsed="0.000321"/>
</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-09T00:48:02.887851" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-09T00:48:02.887645" elapsed="0.000256"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-09T00:48:02.890045" 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-09T00:48:02.889677" elapsed="0.000400"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-09T00:48:02.891184" level="INFO">Length is 0.</msg>
<msg time="2026-10-09T00:48:02.891263" 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-09T00:48:02.890565" elapsed="0.000721"/>
</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-09T00:48:02.891424" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-09T00:48:02.892526" level="INFO">Logging into '10.30.170.105:22' as 'jenkins'.</msg>
<msg time="2026-10-09T00:48:03.415954" 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 Fri Oct  9 00:47:32 UTC 2026

  System load:  0.19               Processes:             113
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.105
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


[?2004h[jenkins@releng-63164-421-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-09T00:48:02.892288" elapsed="0.523839"/>
</kw>
<msg time="2026-10-09T00:48:03.416219" 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-09T00:48:02.891910" elapsed="0.524399"/>
</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-09T00:48:02.890263" elapsed="0.526161"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-10-09T00:48:03.427900" 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-09T00:48:03.416643" elapsed="0.012887"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T00:48:03.429733" elapsed="0.000460"/>
</kw>
<arg>${cbench_system}</arg>
<arg>${cbench_executable}</arg>
<doc>Will create connection with public key and will PASS if the given ${file} exists,
otherwise will FAIL</doc>
<status status="PASS" start="2026-10-09T00:48:02.889225" elapsed="0.541027"/>
</kw>
<status status="PASS" start="2026-10-09T00:48:02.887974" elapsed="0.542314"/>
</branch>
<status status="PASS" start="2026-10-09T00:48:02.887621" elapsed="0.542700"/>
</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-09T00:48:03.430492" elapsed="0.000516"/>
</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-09T00:48:03.432963" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-10-09T00:48:03.432857" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-10-09T00:48:03.432833" elapsed="0.000234"/>
</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-09T00:48:03.434524" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-09T00:48:03.434433" elapsed="0.000135"/>
</branch>
<status status="PASS" start="2026-10-09T00:48:03.434415" elapsed="0.000174"/>
</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-09T00:48:03.434758" elapsed="0.000392"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-09T00:48:03.435534" level="INFO">Logging into '10.30.171.36:8101' as 'karaf'.</msg>
<msg time="2026-10-09T00:48:03.714238" 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-09T00:48:03.435333" elapsed="0.278998"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-09T00:48:03.789587" 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-09T00:48:03.714505" elapsed="0.075145"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-09T00:48:03.838023" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-09T00:48:03.838176" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-10-09T00:48:03.789819" elapsed="0.048387"/>
</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-09T00:48:03.838344" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T00:48:03.838654" elapsed="0.000166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:48:03.839277" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T00:48:03.839007" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-09T00:48:03.839371" elapsed="0.000041"/>
</return>
<msg time="2026-10-09T00:48:03.839526" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.36
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-09T00:48:03.434146" elapsed="0.405409"/>
</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-09T00:48:03.839718" elapsed="0.000482"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-09T00:48:03.840247" elapsed="0.000029"/>
</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-09T00:48:03.432546" elapsed="0.407807"/>
</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-09T00:48:03.841918" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-09T00:48:03.841817" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-10-09T00:48:03.841797" elapsed="0.000205"/>
</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-09T00:48:03.842159" elapsed="0.000352"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-10-09T00:48:03.842895" level="INFO">Logging into '10.30.171.36:8101' as 'karaf'.</msg>
<msg time="2026-10-09T00:48:04.074400" 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-09T00:48:03.842681" elapsed="0.231797"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-09T00:48:04.097551" 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-09T00:48:04.074627" elapsed="0.022979"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-10-09T00:48:04.099881" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-10-09T00:48:04.099970" 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-09T00:48:04.097772" elapsed="0.002239"/>
</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-09T00:48:04.100144" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T00:48:04.100441" elapsed="0.000140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:48:04.101022" 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-09T00:48:04.100766" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-09T00:48:04.101110" elapsed="0.000032"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.36
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-09T00:48:03.841538" elapsed="0.259681"/>
</kw>
<status status="PASS" start="2026-10-09T00:48:01.986062" elapsed="2.115210"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:48:04.102916" 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-09T00:48:04.102102" elapsed="0.000875"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-09T00:48:04.104330" 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-09T00:48:04.104007" elapsed="0.000363"/>
</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-09T00:48:04.104646" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-09T00:48:04.104437" elapsed="0.000280"/>
</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-09T00:48:04.105787" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-09T00:48:04.105555" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-10-09T00:48:04.105537" elapsed="0.000326"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-09T00:48:04.106237" 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-09T00:48:04.106349" 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-09T00:48:04.106054" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:48:04.106895" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.36 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.105" 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-09T00:48:04.106545" elapsed="0.000405"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-09T00:48:04.107513" 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-09T00:48:04.107131" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-09T00:48:04.108378" level="INFO">Length is 0.</msg>
<msg time="2026-10-09T00:48:04.108459" 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-09T00:48:04.108094" elapsed="0.000387"/>
</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-09T00:48:04.108613" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-09T00:48:04.109727" level="INFO">Logging into '10.30.170.105:22' as 'jenkins'.</msg>
<msg time="2026-10-09T00:48:04.501666" 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 Fri Oct  9 00:47:32 UTC 2026

  System load:  0.19               Processes:             113
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.105
  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: Fri Oct  9 00:48:03 2026 from 10.30.171.53
[?2004h[jenkins@releng-63164-421-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-09T00:48:04.109451" elapsed="0.392325"/>
</kw>
<msg time="2026-10-09T00:48:04.501833" 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-09T00:48:04.109093" elapsed="0.392807"/>
</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-09T00:48:04.107734" elapsed="0.394246"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-09T00:48:04.502366" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.36 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-09T00:58:10.656567" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-09T00:58:10.657105" level="INFO">${stdout} = </msg>
<msg time="2026-10-09T00:58:10.657206" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36: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-09T00:48:04.502182" elapsed="606.155080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T00:58:10.657652" elapsed="0.000705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.659529" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.36. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:49:09.738 16  switches: flows:  95058 94574 96849 94853 96729 93671 95135 93725 93284 92660 93459 93058 93139 93614 93165 92834  total = 25.096783 per ms 
00:50:09.838 16  switches: flows:  104376 101703 103236 101665 104009 100384 104458 103082 100986 101325 101384 102928 98777 101461 102127 100320  total = 27.158323 per ms 
00:51:09.940 16  switches: flows:  99718 99793 100732 98201 101950 99488 101873 99284 97068 97777 97673 100206 99410 98967 98546 96072  total = 26.401901 per ms 
00:52:10.040 16  switches: flows:  102563 102254 100633 100538 101778 99523 102959 100004 98467 100175 97347 100571 97144 99910 97641 96764  total = 26.593465 per ms 
00:53:10.141 16  switches: flows:  104223 103676 104871 102295 105955 103425 106755 106220 99673 101391 100383 103918 101308 103488 101435 100165  total = 27.440559 per ms 
00:54:10.241 16  switches: flows:  102875 102489 102643 99369 101527 100872 103171 101983 99523 99171 98328 100399 98263 100282 98429 97282  total = 26.732166 per ms 
00:55:10.342 16  switches: flows:  104039 105443 103921 102021 105222 102662 105044 103613 99795 102523 100313 102818 100858 101552 100484 99870  total = 27.290754 per ms 
00:56:10.443 16  switches: flows:  105652 104908 103839 104509 106292 102635 106563 105258 100752 103934 102133 104634 102042 103305 101541 100777  total = 27.600169 per ms 
00:57:10.543 16  switches: flows:  102645 102302 103942 100240 105336 101740 107019 104341 99338 101380 100483 103567 99871 103660 100774 100069  total = 27.232985 per ms 
00:58:10.644 16  switches: flows:  104386 103359 105429 102329 105603 101793 104667 104236 102531 101439 100202 106254 102698 104280 100930 100682  total = 27.467777 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26401.90/27600.17/27102.01/9042.84 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T00:58:10.658803" elapsed="0.000998"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-09T00:58:10.660299" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-10-09T00:58:10.659974" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-10-09T00:58:10.659925" elapsed="0.000573"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-09T00:58:10.660689" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-09T00:58:10.660615" elapsed="0.000156"/>
</branch>
<status status="NOT RUN" start="2026-10-09T00:58:10.660583" elapsed="0.000232"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-09T00:58:10.660880" elapsed="0.000027"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-09T00:58:10.662481" elapsed="0.000713"/>
</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-09T00:58:10.663566" elapsed="0.000325"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T00:58:10.664225" elapsed="0.000203"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-09T00:58:10.661563" elapsed="0.002973"/>
</kw>
<msg time="2026-10-09T00:58:10.664763" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36: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-09T00:48:04.105065" elapsed="606.559755"/>
</kw>
<status status="PASS" start="2026-10-09T00:48:04.104744" elapsed="606.560172"/>
</branch>
<status status="PASS" start="2026-10-09T00:48:04.104418" elapsed="606.560548"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.666047" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.36. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:49:09.738 16  switches: flows:  95058 94574 96849 94853 96729 93671 95135 93725 93284 92660 93459 93058 93139 93614 93165 92834  total = 25.096783 per ms 
00:50:09.838 16  switches: flows:  104376 101703 103236 101665 104009 100384 104458 103082 100986 101325 101384 102928 98777 101461 102127 100320  total = 27.158323 per ms 
00:51:09.940 16  switches: flows:  99718 99793 100732 98201 101950 99488 101873 99284 97068 97777 97673 100206 99410 98967 98546 96072  total = 26.401901 per ms 
00:52:10.040 16  switches: flows:  102563 102254 100633 100538 101778 99523 102959 100004 98467 100175 97347 100571 97144 99910 97641 96764  total = 26.593465 per ms 
00:53:10.141 16  switches: flows:  104223 103676 104871 102295 105955 103425 106755 106220 99673 101391 100383 103918 101308 103488 101435 100165  total = 27.440559 per ms 
00:54:10.241 16  switches: flows:  102875 102489 102643 99369 101527 100872 103171 101983 99523 99171 98328 100399 98263 100282 98429 97282  total = 26.732166 per ms 
00:55:10.342 16  switches: flows:  104039 105443 103921 102021 105222 102662 105044 103613 99795 102523 100313 102818 100858 101552 100484 99870  total = 27.290754 per ms 
00:56:10.443 16  switches: flows:  105652 104908 103839 104509 106292 102635 106563 105258 100752 103934 102133 104634 102042 103305 101541 100777  total = 27.600169 per ms 
00:57:10.543 16  switches: flows:  102645 102302 103942 100240 105336 101740 107019 104341 99338 101380 100483 103567 99871 103660 100774 100069  total = 27.232985 per ms 
00:58:10.644 16  switches: flows:  104386 103359 105429 102329 105603 101793 104667 104236 102531 101439 100202 106254 102698 104280 100930 100682  total = 27.467777 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 26401.90/27600.17/27102.01/9042.84 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T00:58:10.665412" elapsed="0.000802"/>
</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-09T00:58:10.666583" elapsed="0.000817"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-09T00:58:10.668235" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-09T00:58:10.668421" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 26401.90/27600.17/27102.01/9042.84 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-09T00:58:10.667768" elapsed="0.000713"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T00:58:10.669407" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 26401.90/27600.17/27102.01/9042.84 | 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-09T00:58:10.668874" elapsed="0.000591"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.670697" 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-09T00:58:10.669933" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.671949" level="INFO">26401.90/27600.17/27102.01/9042.84</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T00:58:10.671269" elapsed="0.000842"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T00:58:10.673116" 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-09T00:58:10.672448" elapsed="0.000725"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T00:58:10.674278" level="INFO">@{result_value_list} = [ 26401.90 | 27600.17 | 27102.01 | 9042.84 ]</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-09T00:58:10.673591" elapsed="0.000744"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.675330" level="INFO">Length is 4.</msg>
<msg time="2026-10-09T00:58:10.675507" 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-09T00:58:10.674670" elapsed="0.000888"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.677577" level="INFO">min :: 26401.90</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-09T00:58:10.676456" elapsed="0.001241"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-09T00:58:10.676056" elapsed="0.001712"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.679318" level="INFO">max :: 27600.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-09T00:58:10.678367" elapsed="0.001068"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-09T00:58:10.677950" elapsed="0.001553"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.681031" level="INFO">avg :: 27102.01</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-09T00:58:10.680096" elapsed="0.001053"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-09T00:58:10.679681" elapsed="0.001536"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.682699" level="INFO">stdev :: 9042.84</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-09T00:58:10.681764" elapsed="0.001048"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-09T00:58:10.681401" elapsed="0.001478"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-09T00:58:10.675681" elapsed="0.007264"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.684223" level="INFO">${min} = 26401.90</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-09T00:58:10.683335" elapsed="0.000942"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.685470" level="INFO">${max} = 27600.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-09T00:58:10.684606" elapsed="0.000916"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.686752" level="INFO">${average} = 27102.01</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-09T00:58:10.685845" elapsed="0.000959"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.688083" level="INFO">${stdev} = 9042.84</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-09T00:58:10.687212" elapsed="0.000929"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.689291" level="INFO">${date} = 2026-10-09 00:58:10</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-09T00:58:10.688542" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.690663" level="INFO">CBench Result: 2026-10-09 00:58:10,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,26401.90,27600.17,27102.01,9042.84</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-09T00:58:10.689752" elapsed="0.001026"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-09T00:58:10.693079" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-09T00:58:10.691946" elapsed="0.001272"/>
</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-09T00:58:10.693569" elapsed="0.001043"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-09T00:58:10.691085" elapsed="0.003657"/>
</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-09T00:48:04.103350" elapsed="606.591510"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.695875" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-09T00:58:10.695256" elapsed="0.000830"/>
</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-09T00:58:10.697193" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-10-09T00:58:10.696505" elapsed="0.001375"/>
</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-09T00:48:04.101398" elapsed="606.596555"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.700754" 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-09T00:58:10.700320" elapsed="0.000507"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.702356" 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-09T00:58:10.701909" elapsed="0.000502"/>
</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-09T00:58:10.702826" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-09T00:58:10.702543" elapsed="0.000357"/>
</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-09T00:58:10.704390" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-09T00:58:10.704093" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-10-09T00:58:10.704068" elapsed="0.000424"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-09T00:58:10.704973" 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-09T00:58:10.705177" 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-09T00:58:10.704733" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.705891" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.36 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.105" 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-09T00:58:10.705447" elapsed="0.000517"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-09T00:58:10.706654" 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-09T00:58:10.706215" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-09T00:58:10.707823" level="INFO">Length is 0.</msg>
<msg time="2026-10-09T00:58:10.707931" 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-09T00:58:10.707446" elapsed="0.000516"/>
</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-09T00:58:10.708263" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-09T00:58:10.709768" level="INFO">Logging into '10.30.170.105:22' as 'jenkins'.</msg>
<msg time="2026-10-09T00:58:11.328135" 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 Fri Oct  9 00:58:10 UTC 2026

  System load:  1.01               Processes:             103
  Usage of /:   20.4% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.105
  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: Fri Oct  9 00:48:04 2026 from 10.30.171.53
[?2004h[jenkins@releng-63164-421-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-09T00:58:10.709397" elapsed="0.618914"/>
</kw>
<msg time="2026-10-09T00:58:11.328395" 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-09T00:58:10.708862" elapsed="0.619619"/>
</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-09T00:58:10.706934" elapsed="0.621655"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-09T00:58:11.329133" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.36 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-09T01:08:17.404228" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-09T01:08:17.404841" level="INFO">${stdout} = </msg>
<msg time="2026-10-09T01:08:17.404959" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.36: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-09T00:58:11.328828" elapsed="606.076239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T01:08:17.405644" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.407731" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.36:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.36. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:59:16.479 16  switches: flows:  665963 658625 663327 668629 650099 645118 649970 648691 655652 647502 656162 652599 666502 658589 658009 651924  total = 174.956017 per ms 
01:00:16.580 16  switches: flows:  693406 694421 704878 697302 711685 701268 698850 700462 698389 702950 708701 690562 699465 702106 700832 700167  total = 186.443739 per ms 
01:01:16.683 16  switches: flows:  607039 604720 606378 603376 611730 605613 604583 600990 611687 611724 615105 608130 608128 609566 606344 612168  total = 161.848670 per ms 
01:02:16.783 16  switches: flows:  653197 659795 654587 647071 660167 652071 657358 656430 663217 663207 660482 648613 660790 658127 657380 655391  total = 174.837845 per ms 
01:03:16.885 16  switches: flows:  685090 692971 679849 686139 685825 678923 680529 682851 688716 686882 681981 687933 680727 687032 686692 684304  total = 182.300970 per ms 
01:04:16.986 16  switches: flows:  670777 676495 678572 693277 684931 680538 684309 680811 669284 686546 689732 692242 675995 674436 684636 686751  total = 181.517305 per ms 
01:05:17.087 16  switches: flows:  695842 696599 703569 703627 702477 697749 697680 705431 692407 706540 705724 694567 703500 697919 697201 704240  total = 186.436663 per ms 
01:06:17.189 16  switches: flows:  698967 711304 710521 701160 702819 711647 709103 701679 711050 707878 714998 702359 707909 703680 714436 716036  total = 188.441551 per ms 
01:07:17.291 16  switches: flows:  678369 677523 687719 680682 678784 686001 680047 683307 680102 678545 677632 685631 685215 683275 690382 673722  total = 181.477279 per ms 
01:08:17.393 16  switches: flows:  642740 657208 658274 650607 655855 658714 655750 648852 646097 663445 659793 656384 659723 664874 657095 652135  total = 174.497411 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 161848.67/188441.55/179755.71/60426.23 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:08:17.406891" elapsed="0.001178"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-09T01:08:17.408567" elapsed="0.000093"/>
</return>
<status status="PASS" start="2026-10-09T01:08:17.408246" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-10-09T01:08:17.408195" elapsed="0.000606"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-09T01:08:17.409038" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-10-09T01:08:17.408925" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-10-09T01:08:17.408891" elapsed="0.000290"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-09T01:08:17.409248" elapsed="0.000030"/>
</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-09T01:08:17.411026" elapsed="0.000778"/>
</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-09T01:08:17.412287" elapsed="0.000378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T01:08:17.412965" elapsed="0.000256"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-09T01:08:17.409969" elapsed="0.003364"/>
</kw>
<msg time="2026-10-09T01:08:17.413601" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.36: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-09T00:58:10.703368" elapsed="606.710294"/>
</kw>
<status status="PASS" start="2026-10-09T00:58:10.702933" elapsed="606.710835"/>
</branch>
<status status="PASS" start="2026-10-09T00:58:10.702517" elapsed="606.711303"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.414923" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.171.36:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.36. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:59:16.479 16  switches: flows:  665963 658625 663327 668629 650099 645118 649970 648691 655652 647502 656162 652599 666502 658589 658009 651924  total = 174.956017 per ms 
01:00:16.580 16  switches: flows:  693406 694421 704878 697302 711685 701268 698850 700462 698389 702950 708701 690562 699465 702106 700832 700167  total = 186.443739 per ms 
01:01:16.683 16  switches: flows:  607039 604720 606378 603376 611730 605613 604583 600990 611687 611724 615105 608130 608128 609566 606344 612168  total = 161.848670 per ms 
01:02:16.783 16  switches: flows:  653197 659795 654587 647071 660167 652071 657358 656430 663217 663207 660482 648613 660790 658127 657380 655391  total = 174.837845 per ms 
01:03:16.885 16  switches: flows:  685090 692971 679849 686139 685825 678923 680529 682851 688716 686882 681981 687933 680727 687032 686692 684304  total = 182.300970 per ms 
01:04:16.986 16  switches: flows:  670777 676495 678572 693277 684931 680538 684309 680811 669284 686546 689732 692242 675995 674436 684636 686751  total = 181.517305 per ms 
01:05:17.087 16  switches: flows:  695842 696599 703569 703627 702477 697749 697680 705431 692407 706540 705724 694567 703500 697919 697201 704240  total = 186.436663 per ms 
01:06:17.189 16  switches: flows:  698967 711304 710521 701160 702819 711647 709103 701679 711050 707878 714998 702359 707909 703680 714436 716036  total = 188.441551 per ms 
01:07:17.291 16  switches: flows:  678369 677523 687719 680682 678784 686001 680047 683307 680102 678545 677632 685631 685215 683275 690382 673722  total = 181.477279 per ms 
01:08:17.393 16  switches: flows:  642740 657208 658274 650607 655855 658714 655750 648852 646097 663445 659793 656384 659723 664874 657095 652135  total = 174.497411 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 161848.67/188441.55/179755.71/60426.23 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:08:17.414277" elapsed="0.000843"/>
</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-09T01:08:17.415522" elapsed="0.000799"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-09T01:08:17.417202" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-09T01:08:17.417393" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 161848.67/188441.55/179755.71/60426.23 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-09T01:08:17.416741" elapsed="0.000706"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T01:08:17.418392" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 161848.67/188441.55/179755.71/60426.23 | 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-09T01:08:17.417845" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.419700" 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-09T01:08:17.418911" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.421056" level="INFO">161848.67/188441.55/179755.71/60426.23</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:08:17.420282" elapsed="0.000897"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T01:08:17.422410" 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-09T01:08:17.421560" elapsed="0.000969"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T01:08:17.423894" level="INFO">@{result_value_list} = [ 161848.67 | 188441.55 | 179755.71 | 60426.23 ]</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-09T01:08:17.423146" elapsed="0.000809"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.425068" level="INFO">Length is 4.</msg>
<msg time="2026-10-09T01:08:17.425257" 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-09T01:08:17.424347" elapsed="0.000962"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.427325" level="INFO">min :: 161848.67</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-09T01:08:17.426308" elapsed="0.001137"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-09T01:08:17.425854" elapsed="0.001693"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.429174" level="INFO">max :: 188441.55</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-09T01:08:17.428160" elapsed="0.001160"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-09T01:08:17.427738" elapsed="0.001663"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.431045" level="INFO">avg :: 179755.71</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-09T01:08:17.430036" elapsed="0.001133"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-09T01:08:17.429609" elapsed="0.001631"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.432847" level="INFO">stdev :: 60426.23</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:08:17.431850" elapsed="0.001114"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-09T01:08:17.431424" elapsed="0.001644"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-09T01:08:17.425440" elapsed="0.007697"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.434572" level="INFO">${min} = 161848.67</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-09T01:08:17.433535" elapsed="0.001096"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.435922" level="INFO">${max} = 188441.55</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-09T01:08:17.435021" elapsed="0.000957"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.437295" level="INFO">${average} = 179755.71</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-09T01:08:17.436367" elapsed="0.000985"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.438688" level="INFO">${stdev} = 60426.23</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-09T01:08:17.437732" elapsed="0.001014"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.440392" level="INFO">${date} = 2026-10-09 01:08:17</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-09T01:08:17.439329" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.441789" level="INFO">CBench Result: 2026-10-09 01:08:17,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,161848.67,188441.55,179755.71,60426.23</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-09T01:08:17.440959" elapsed="0.000952"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-09T01:08:17.444306" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-09T01:08:17.443255" elapsed="0.001214"/>
</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-09T01:08:17.444881" elapsed="0.001432"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-09T01:08:17.442235" elapsed="0.004214"/>
</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-09T00:58:10.701249" elapsed="606.745376"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.447666" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-09T01:08:17.446946" elapsed="0.000838"/>
</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-09T01:08:17.448893" elapsed="0.000584"/>
</kw>
<status status="PASS" start="2026-10-09T01:08:17.448223" elapsed="0.001422"/>
</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-09T00:58:10.698839" elapsed="606.750880"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.452249" 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-09T01:08:17.451541" elapsed="0.000822"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.454916" 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-09T01:08:17.454185" elapsed="0.000849"/>
</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-09T01:08:17.455748" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-09T01:08:17.455266" elapsed="0.000602"/>
</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-09T01:08:17.458252" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-09T01:08:17.457750" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-10-09T01:08:17.457713" elapsed="0.000703"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-09T01:08:17.459271" 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-09T01:08:17.459536" 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-09T01:08:17.458831" elapsed="0.000762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.460787" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.171.36 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.105" 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-09T01:08:17.459973" elapsed="0.000933"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-09T01:08:17.462063" 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-09T01:08:17.461297" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-09T01:08:17.464138" level="INFO">Length is 0.</msg>
<msg time="2026-10-09T01:08:17.464311" 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-09T01:08:17.463459" elapsed="0.000901"/>
</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-09T01:08:17.464674" elapsed="0.000731"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-09T01:08:17.467293" level="INFO">Logging into '10.30.170.105:22' as 'jenkins'.</msg>
<msg time="2026-10-09T01:08:18.126634" 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 Fri Oct  9 01:08:17 UTC 2026

  System load:  0.48               Processes:             104
  Usage of /:   20.4% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.105
  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: Fri Oct  9 00:58:11 2026 from 10.30.171.53
[?2004h[jenkins@releng-63164-421-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-09T01:08:17.466665" elapsed="0.660178"/>
</kw>
<msg time="2026-10-09T01:08:18.126936" 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-09T01:08:17.465804" elapsed="0.661233"/>
</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-09T01:08:17.462647" elapsed="0.664505"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-09T01:08:18.127708" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.171.36 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-10-09T01:18:24.159233" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-09T01:18:24.159901" level="INFO">${stdout} = </msg>
<msg time="2026-10-09T01:18:24.160031" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36: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-09T01:08:18.127412" elapsed="606.032676"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T01:18:24.160611" elapsed="0.000713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.162586" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.36. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:09:23.246 16  switches: flows:  104402 105032 103347 102891 102491 102315 101297 101583 98147 98937 99240 100112 99546 100064 98108 99499  total = 26.950183 per ms 
01:10:23.346 16  switches: flows:  102799 103440 102284 100387 100500 101225 98934 100837 96339 97696 97266 97313 99057 96236 96577 96877  total = 26.418707 per ms 
01:11:23.446 16  switches: flows:  102695 105193 101652 100037 99213 100386 98913 102044 96676 97646 96120 98341 98667 97018 97163 95541  total = 26.411007 per ms 
01:12:23.546 16  switches: flows:  103265 102886 100290 99381 98856 99233 97853 102620 94878 96516 95131 98593 98814 96410 96797 93726  total = 26.210420 per ms 
01:13:23.646 16  switches: flows:  98874 97653 97715 97922 96030 96845 96562 97191 91479 92773 92407 96637 96104 94107 94472 93029  total = 25.454193 per ms 
01:14:23.746 16  switches: flows:  100845 97778 99350 96322 97270 97233 94924 99290 92426 93302 91746 96008 96896 95445 95611 93377  total = 25.587682 per ms 
01:15:23.847 16  switches: flows:  98863 96346 95604 96124 93447 95966 93029 97370 90889 91548 90693 93144 95006 93279 93042 91522  total = 25.056047 per ms 
01:16:23.947 16  switches: flows:  98933 97092 97469 97199 95532 98564 94290 98769 94094 96575 91525 94800 98947 94385 96114 93361  total = 25.584769 per ms 
01:17:24.047 16  switches: flows:  97265 94923 96765 94584 93408 94523 92686 94811 91623 93153 91067 94203 95865 92327 91285 91383  total = 24.956211 per ms 
01:18:24.147 16  switches: flows:  97056 95812 95251 94736 95149 95534 93734 94569 90099 92734 89292 91919 95904 93084 92050 91724  total = 24.935841 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24935.84/26418.71/25623.88/8559.93 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:18:24.161801" elapsed="0.001101"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-10-09T01:18:24.163405" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-10-09T01:18:24.163128" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-10-09T01:18:24.163077" elapsed="0.000529"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-10-09T01:18:24.163791" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-09T01:18:24.163720" elapsed="0.000151"/>
</branch>
<status status="NOT RUN" start="2026-10-09T01:18:24.163689" elapsed="0.000250"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-09T01:18:24.164029" elapsed="0.000030"/>
</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-09T01:18:24.165689" elapsed="0.000732"/>
</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-09T01:18:24.166795" elapsed="0.000392"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-09T01:18:24.167466" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-09T01:18:24.164692" elapsed="0.003085"/>
</kw>
<msg time="2026-10-09T01:18:24.168067" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36: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-09T01:08:17.456619" elapsed="606.711509"/>
</kw>
<status status="PASS" start="2026-10-09T01:08:17.455922" elapsed="606.712304"/>
</branch>
<status status="PASS" start="2026-10-09T01:08:17.455221" elapsed="606.713057"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.169492" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.171.36:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.171.36. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:09:23.246 16  switches: flows:  104402 105032 103347 102891 102491 102315 101297 101583 98147 98937 99240 100112 99546 100064 98108 99499  total = 26.950183 per ms 
01:10:23.346 16  switches: flows:  102799 103440 102284 100387 100500 101225 98934 100837 96339 97696 97266 97313 99057 96236 96577 96877  total = 26.418707 per ms 
01:11:23.446 16  switches: flows:  102695 105193 101652 100037 99213 100386 98913 102044 96676 97646 96120 98341 98667 97018 97163 95541  total = 26.411007 per ms 
01:12:23.546 16  switches: flows:  103265 102886 100290 99381 98856 99233 97853 102620 94878 96516 95131 98593 98814 96410 96797 93726  total = 26.210420 per ms 
01:13:23.646 16  switches: flows:  98874 97653 97715 97922 96030 96845 96562 97191 91479 92773 92407 96637 96104 94107 94472 93029  total = 25.454193 per ms 
01:14:23.746 16  switches: flows:  100845 97778 99350 96322 97270 97233 94924 99290 92426 93302 91746 96008 96896 95445 95611 93377  total = 25.587682 per ms 
01:15:23.847 16  switches: flows:  98863 96346 95604 96124 93447 95966 93029 97370 90889 91548 90693 93144 95006 93279 93042 91522  total = 25.056047 per ms 
01:16:23.947 16  switches: flows:  98933 97092 97469 97199 95532 98564 94290 98769 94094 96575 91525 94800 98947 94385 96114 93361  total = 25.584769 per ms 
01:17:24.047 16  switches: flows:  97265 94923 96765 94584 93408 94523 92686 94811 91623 93153 91067 94203 95865 92327 91285 91383  total = 24.956211 per ms 
01:18:24.147 16  switches: flows:  97056 95812 95251 94736 95149 95534 93734 94569 90099 92734 89292 91919 95904 93084 92050 91724  total = 24.935841 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 24935.84/26418.71/25623.88/8559.93 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:18:24.168754" elapsed="0.000907"/>
</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-09T01:18:24.170054" elapsed="0.000736"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-10-09T01:18:24.171711" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-10-09T01:18:24.171921" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 24935.84/26418.71/25623.88/8559.93 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-09T01:18:24.171263" elapsed="0.000711"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T01:18:24.172845" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 24935.84/26418.71/25623.88/8559.93 | 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-09T01:18:24.172362" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.174117" 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-09T01:18:24.173360" elapsed="0.000870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.175365" level="INFO">24935.84/26418.71/25623.88/8559.93</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:18:24.174626" elapsed="0.000850"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T01:18:24.176517" 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-09T01:18:24.175835" elapsed="0.000736"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-10-09T01:18:24.177763" level="INFO">@{result_value_list} = [ 24935.84 | 26418.71 | 25623.88 | 8559.93 ]</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-09T01:18:24.177059" elapsed="0.000764"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.178831" level="INFO">Length is 4.</msg>
<msg time="2026-10-09T01:18:24.179057" 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-09T01:18:24.178223" elapsed="0.000886"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.181012" level="INFO">min :: 24935.84</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-09T01:18:24.180065" elapsed="0.001063"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-10-09T01:18:24.179626" elapsed="0.001569"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.182688" level="INFO">max :: 26418.71</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-09T01:18:24.181727" elapsed="0.001073"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-10-09T01:18:24.181366" elapsed="0.001501"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.184518" level="INFO">avg :: 25623.88</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:18:24.183451" elapsed="0.001187"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-10-09T01:18:24.183088" elapsed="0.001620"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.186252" level="INFO">stdev :: 8559.93</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-09T01:18:24.185294" elapsed="0.001069"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-10-09T01:18:24.184897" elapsed="0.001532"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-10-09T01:18:24.179237" elapsed="0.007252"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.187746" level="INFO">${min} = 24935.84</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-09T01:18:24.186865" elapsed="0.000935"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.189093" level="INFO">${max} = 26418.71</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-09T01:18:24.188197" elapsed="0.000951"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.190363" level="INFO">${average} = 25623.88</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-09T01:18:24.189471" elapsed="0.000947"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.191655" level="INFO">${stdev} = 8559.93</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-09T01:18:24.190741" elapsed="0.000968"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.192906" level="INFO">${date} = 2026-10-09 01:18:24</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-09T01:18:24.192180" elapsed="0.000780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.194202" level="INFO">CBench Result: 2026-10-09 01:18:24,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,24935.84,26418.71,25623.88,8559.93</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-09T01:18:24.193403" elapsed="0.000910"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-09T01:18:24.196448" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-09T01:18:24.195549" elapsed="0.001140"/>
</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-09T01:18:24.197136" elapsed="0.000965"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-10-09T01:18:24.194585" elapsed="0.003650"/>
</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-09T01:08:17.453016" elapsed="606.745338"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.199327" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-09T01:18:24.198668" elapsed="0.000773"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-09T01:18:24.202448" 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-09T01:18:24.201438" elapsed="0.001066"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-10-09T01:18:24.202923" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-10-09T01:18:24.202659" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-10-09T01:18:24.202617" elapsed="0.000523"/>
</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-09T01:18:24.203452" elapsed="0.000043"/>
</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-09T01:18:24.203784" elapsed="0.000042"/>
</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-09T01:18:24.204214" elapsed="0.000042"/>
</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-09T01:18:24.204539" elapsed="0.000025"/>
</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-09T01:18:24.204812" elapsed="0.000027"/>
</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-09T01:18:24.205060" elapsed="0.000036"/>
</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-09T01:18:24.205342" elapsed="0.000026"/>
</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-09T01:18:24.205632" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-10-09T01:18:24.205448" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-10-09T01:18:24.205426" elapsed="0.000300"/>
</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-09T01:18:24.200600" elapsed="0.005191"/>
</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-09T01:08:17.450330" elapsed="606.755518"/>
</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-09T00:48:01.514212" elapsed="1822.692230"/>
</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>
