<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-08-03T01:53:48.586033" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/test/csit/suites/openflowplugin/Performance/010_Cbench.robot">
<kw name="Cbench Suite Setup" type="SETUP">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-08-03T01:53:49.200432" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-08-03T01:53:49.200269" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-08-03T01:53:49.200235" elapsed="0.000304"/>
</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-08-03T01:53:49.200721" elapsed="0.000552"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-03T01:53:49.201781" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-08-03T01:53:49.979715" 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-08-03T01:53:49.201453" elapsed="0.778457"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-03T01:53:50.031608" 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-08-03T01:53:49.980214" elapsed="0.051503"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-03T01:53:50.053058" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-03T01:53:50.053373" 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-08-03T01:53:50.031925" elapsed="0.021520"/>
</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-08-03T01:53:50.053856" elapsed="0.000645"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T01:53:50.054960" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T01:53:50.055851" 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-08-03T01:53:50.055458" elapsed="0.000453"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-03T01:53:50.055966" elapsed="0.000059"/>
</return>
<arg>log:set ${log_level}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.159
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-03T01:53:49.199849" elapsed="0.856308"/>
</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-08-03T01:53:49.195964" elapsed="0.860260"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-03T01:53:50.056864" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-03T01:53:50.056430" elapsed="0.000497"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-03T01:53:50.057390" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-03T01:53:50.057101" elapsed="0.000364"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-03T01:53:50.058169" 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-08-03T01:53:50.057632" elapsed="0.000570"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-03T01:53:50.058841" level="INFO">${duration_in_ms} = 60000</msg>
<arg>${duration_in_ms}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-03T01:53:50.058382" elapsed="0.000509"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-03T01:53:50.059455" 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-08-03T01:53:50.059058" elapsed="0.000425"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-03T01:53:50.059999" level="INFO">${test_timeout} = 900.0</msg>
<arg>${test_timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-03T01:53:50.059653" elapsed="0.000389"/>
</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-08-03T01:53:50.060360" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-03T01:53:50.060134" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-03T01:53:50.065313" 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-08-03T01:53:50.064816" elapsed="0.000526"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-03T01:53:50.066492" level="INFO">Length is 0.</msg>
<msg time="2026-08-03T01:53:50.066578" 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-08-03T01:53:50.065947" elapsed="0.000656"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-03T01:53:50.066801" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-03T01:53:50.068454" level="INFO">Logging into '10.30.170.134:22' as 'jenkins'.</msg>
<msg time="2026-08-03T01:53:50.803529" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Aug  3 01:53:50 UTC 2026

  System load:  0.05               Processes:             112
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.134
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-48317-799-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-08-03T01:53:50.067909" elapsed="0.735803"/>
</kw>
<msg time="2026-08-03T01:53:50.803833" 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-08-03T01:53:50.067534" elapsed="0.736400"/>
</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-08-03T01:53:50.065559" elapsed="0.738523"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-08-03T01:53:50.811153" 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-08-03T01:53:50.804297" elapsed="0.008689"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T01:53:50.813310" elapsed="0.000450"/>
</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-08-03T01:53:50.064254" elapsed="0.749653"/>
</kw>
<status status="PASS" start="2026-08-03T01:53:50.060774" elapsed="0.753189"/>
</branch>
<status status="PASS" start="2026-08-03T01:53:50.060107" elapsed="0.753910"/>
</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-08-03T01:53:50.814301" elapsed="0.000800"/>
</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-08-03T01:53:50.821564" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-08-03T01:53:50.821387" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-08-03T01:53:50.821350" elapsed="0.000324"/>
</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-08-03T01:53:50.825975" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-08-03T01:53:50.825829" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-08-03T01:53:50.825749" elapsed="0.000298"/>
</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-08-03T01:53:50.826190" elapsed="0.000458"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-03T01:53:50.827106" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-08-03T01:53:51.042634" 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-08-03T01:53:50.826823" elapsed="0.216006"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.142546" 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-08-03T01:53:51.043127" elapsed="0.100422"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.157390" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-03T01:53:51.157742" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-08-03T01:53:51.143918" elapsed="0.013864"/>
</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-08-03T01:53:51.158048" elapsed="0.000291"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T01:53:51.158519" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T01:53:51.159367" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T01:53:51.158975" elapsed="0.000460"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-03T01:53:51.159496" elapsed="0.000059"/>
</return>
<msg time="2026-08-03T01:53:51.159763" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.20.2           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.159
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-03T01:53:50.825383" elapsed="0.334420"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-03T01:53:51.159989" elapsed="0.000714"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-03T01:53:51.160768" elapsed="0.000038"/>
</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-08-03T01:53:50.820913" elapsed="0.340010"/>
</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-08-03T01:53:51.165569" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-08-03T01:53:51.165410" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-08-03T01:53:51.165382" elapsed="0.000299"/>
</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-08-03T01:53:51.165869" elapsed="0.000744"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.167129" level="INFO">Logging into '10.30.170.159:8101' as 'karaf'.</msg>
<msg time="2026-08-03T01:53:51.336038" 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-08-03T01:53:51.166818" elapsed="0.169391"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.370436" 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-08-03T01:53:51.336463" elapsed="0.034045"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.372710" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-08-03T01:53:51.372822" 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-08-03T01:53:51.370946" elapsed="0.001910"/>
</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-08-03T01:53:51.373004" elapsed="0.000408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T01:53:51.373614" elapsed="0.000221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T01:53:51.374313" 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-08-03T01:53:51.373982" elapsed="0.000383"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-08-03T01:53:51.374421" elapsed="0.000057"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.159
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-08-03T01:53:51.165020" elapsed="0.209581"/>
</kw>
<status status="PASS" start="2026-08-03T01:53:49.193793" elapsed="2.180873"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T01:53:51.376991" 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-08-03T01:53:51.375542" elapsed="0.001520"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-03T01:53:51.378916" level="INFO">${output_filename} = latency.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-03T01:53:51.378526" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-03T01:53:51.379302" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-08-03T01:53:51.379046" elapsed="0.000319"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-03T01:53:51.382701" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-08-03T01:53:51.382397" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-08-03T01:53:51.382376" elapsed="0.000447"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.383181" 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-08-03T01:53:51.383306" 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-08-03T01:53:51.382967" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T01:53:51.383930" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.159 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.134" 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-08-03T01:53:51.383478" elapsed="0.000512"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.384606" 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-08-03T01:53:51.384134" elapsed="0.000498"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-03T01:53:51.385627" level="INFO">Length is 0.</msg>
<msg time="2026-08-03T01:53:51.385736" 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-08-03T01:53:51.385239" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-03T01:53:51.385918" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.387193" level="INFO">Logging into '10.30.170.134:22' as 'jenkins'.</msg>
<msg time="2026-08-03T01:53:51.771495" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Aug  3 01:53:50 UTC 2026

  System load:  0.05               Processes:             112
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.134
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Aug  3 01:53:50 2026 from 10.30.171.214
[?2004h[jenkins@releng-48317-799-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-08-03T01:53:51.386826" elapsed="0.384899"/>
</kw>
<msg time="2026-08-03T01:53:51.771815" 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-08-03T01:53:51.386429" elapsed="0.385476"/>
</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-08-03T01:53:51.384855" elapsed="0.387184"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-03T01:53:51.772612" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.159 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-03T02:03:57.885330" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-03T02:03:57.886326" level="INFO">${stdout} = </msg>
<msg time="2026-08-03T02:03:57.886402" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-03T01:53:51.772281" elapsed="606.114164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T02:03:57.886833" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.888729" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.159. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:54:56.988 16  switches: flows:  101306 100284 101466 99893 97357 100233 101841 99517 97561 95938 99069 97879 97019 97705 99374 98333  total = 26.412917 per ms 
01:55:57.088 16  switches: flows:  112777 113304 113381 111623 110396 111051 111302 110878 109248 108062 109371 107414 109942 108617 108612 109496  total = 29.375481 per ms 
01:56:57.188 16  switches: flows:  116284 119055 118603 116877 115831 117061 115910 115489 113174 113356 114976 112235 115983 112825 114376 112831  total = 30.696548 per ms 
01:57:57.289 16  switches: flows:  117982 118037 120390 118723 115202 116564 117581 118512 115097 112433 114692 114228 115799 112602 114164 115364  total = 30.904575 per ms 
01:58:57.389 16  switches: flows:  117905 118518 118965 119597 115933 116888 116180 116787 114678 112457 113853 114475 116680 113357 115128 114405  total = 30.878547 per ms 
01:59:57.489 16  switches: flows:  115834 117547 115924 117325 113766 114655 115336 115316 112800 112265 110813 112557 115634 110590 112578 112164  total = 30.367729 per ms 
02:00:57.589 16  switches: flows:  118167 119686 118773 119791 115898 117983 117326 118051 114187 113426 115447 115003 116141 113499 114045 114075  total = 30.973268 per ms 
02:01:57.689 16  switches: flows:  106108 106578 107535 106347 104109 105786 104969 106699 103254 102284 102983 102220 104091 102784 102278 103501  total = 27.812304 per ms 
02:02:57.790 16  switches: flows:  117319 118758 119834 115311 117287 117001 118045 116955 113225 113204 114629 112577 113119 113545 111568 113204  total = 30.708424 per ms 
02:03:57.890 16  switches: flows:  117965 118808 118618 118020 117131 116884 117159 117205 113568 111898 114581 113677 114013 113539 112128 112504  total = 30.743661 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27812.30/30973.27/30273.39/10139.00 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:03:57.887654" elapsed="0.001347"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-03T02:03:57.889361" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-08-03T02:03:57.889144" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-08-03T02:03:57.889103" elapsed="0.000404"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-03T02:03:57.889651" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-08-03T02:03:57.889595" elapsed="0.000141"/>
</branch>
<status status="NOT RUN" start="2026-08-03T02:03:57.889572" elapsed="0.000197"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-03T02:03:57.889820" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-03T02:03:57.893904" elapsed="0.000597"/>
</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-08-03T02:03:57.894763" elapsed="0.000295"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T02:03:57.895263" elapsed="0.000158"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-03T02:03:57.890408" elapsed="0.005095"/>
</kw>
<msg time="2026-08-03T02:03:57.895732" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-03T01:53:51.379887" elapsed="606.515889"/>
</kw>
<status status="PASS" start="2026-08-03T01:53:51.379463" elapsed="606.516389"/>
</branch>
<status status="PASS" start="2026-08-03T01:53:51.379021" elapsed="606.516870"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.896611" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.159. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:54:56.988 16  switches: flows:  101306 100284 101466 99893 97357 100233 101841 99517 97561 95938 99069 97879 97019 97705 99374 98333  total = 26.412917 per ms 
01:55:57.088 16  switches: flows:  112777 113304 113381 111623 110396 111051 111302 110878 109248 108062 109371 107414 109942 108617 108612 109496  total = 29.375481 per ms 
01:56:57.188 16  switches: flows:  116284 119055 118603 116877 115831 117061 115910 115489 113174 113356 114976 112235 115983 112825 114376 112831  total = 30.696548 per ms 
01:57:57.289 16  switches: flows:  117982 118037 120390 118723 115202 116564 117581 118512 115097 112433 114692 114228 115799 112602 114164 115364  total = 30.904575 per ms 
01:58:57.389 16  switches: flows:  117905 118518 118965 119597 115933 116888 116180 116787 114678 112457 113853 114475 116680 113357 115128 114405  total = 30.878547 per ms 
01:59:57.489 16  switches: flows:  115834 117547 115924 117325 113766 114655 115336 115316 112800 112265 110813 112557 115634 110590 112578 112164  total = 30.367729 per ms 
02:00:57.589 16  switches: flows:  118167 119686 118773 119791 115898 117983 117326 118051 114187 113426 115447 115003 116141 113499 114045 114075  total = 30.973268 per ms 
02:01:57.689 16  switches: flows:  106108 106578 107535 106347 104109 105786 104969 106699 103254 102284 102983 102220 104091 102784 102278 103501  total = 27.812304 per ms 
02:02:57.790 16  switches: flows:  117319 118758 119834 115311 117287 117001 118045 116955 113225 113204 114629 112577 113119 113545 111568 113204  total = 30.708424 per ms 
02:03:57.890 16  switches: flows:  117965 118808 118618 118020 117131 116884 117159 117205 113568 111898 114581 113677 114013 113539 112128 112504  total = 30.743661 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 27812.30/30973.27/30273.39/10139.00 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:03:57.896128" elapsed="0.000620"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-03T02:03:57.896976" elapsed="0.000560"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-03T02:03:57.898246" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-03T02:03:57.898353" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 27812.30/30973.27/30273.39/10139.00 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-08-03T02:03:57.897805" elapsed="0.000573"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:03:57.898834" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 27812.30/30973.27/30273.39/10139.00 | 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-08-03T02:03:57.898540" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.901617" 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-08-03T02:03:57.899016" elapsed="0.002670"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.904538" level="INFO">27812.30/30973.27/30273.39/10139.00</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:03:57.901890" elapsed="0.002721"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:03:57.907289" 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-08-03T02:03:57.904842" elapsed="0.002483"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:03:57.910186" level="INFO">@{result_value_list} = [ 27812.30 | 30973.27 | 30273.39 | 10139.00 ]</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-08-03T02:03:57.907678" elapsed="0.002541"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.910865" level="INFO">Length is 4.</msg>
<msg time="2026-08-03T02:03:57.910963" 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-08-03T02:03:57.910418" elapsed="0.000571"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.916143" level="INFO">min :: 27812.30</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-08-03T02:03:57.911489" elapsed="0.004724"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-03T02:03:57.911345" elapsed="0.004914"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.921004" level="INFO">max :: 30973.27</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:03:57.916532" elapsed="0.004541"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-03T02:03:57.916375" elapsed="0.004739"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.926224" level="INFO">avg :: 30273.39</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-08-03T02:03:57.921380" elapsed="0.004926"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-03T02:03:57.921224" elapsed="0.005131"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.931265" level="INFO">stdev :: 10139.00</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-08-03T02:03:57.926678" elapsed="0.004655"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-03T02:03:57.926487" elapsed="0.004887"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-03T02:03:57.911106" elapsed="0.020304"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.935660" level="INFO">${min} = 27812.30</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:03:57.931604" elapsed="0.004105"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.940099" level="INFO">${max} = 30973.27</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:03:57.935909" elapsed="0.004221"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.944218" level="INFO">${average} = 30273.39</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:03:57.940308" elapsed="0.003943"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.948353" level="INFO">${stdev} = 10139.00</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:03:57.944439" elapsed="0.003946"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.949000" level="INFO">${date} = 2026-08-03 02:03:57</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-03T02:03:57.948580" elapsed="0.000447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.949624" level="INFO">CBench Result: 2026-08-03 02:03:57,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,27812.30,30973.27,30273.39,10139.00</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-08-03T02:03:57.949185" elapsed="0.000499"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-03T02:03:57.950935" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-03T02:03:57.950397" elapsed="0.000609"/>
</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-08-03T02:03:57.951163" elapsed="0.000497"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-03T02:03:57.949867" elapsed="0.001878"/>
</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-08-03T01:53:51.377600" elapsed="606.574210"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.952296" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-03T02:03:57.951964" elapsed="0.000391"/>
</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-08-03T02:03:57.952911" elapsed="0.000273"/>
</kw>
<status status="PASS" start="2026-08-03T02:03:57.952582" elapsed="0.000673"/>
</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-08-03T01:53:51.374846" elapsed="606.578447"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.954852" 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-08-03T02:03:57.954329" elapsed="0.000588"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.956280" level="INFO">${output_filename} = throughput.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-03T02:03:57.955907" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-03T02:03:57.956787" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-08-03T02:03:57.956482" elapsed="0.000376"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-03T02:03:57.959991" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-08-03T02:03:57.959718" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-08-03T02:03:57.959677" elapsed="0.000398"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-03T02:03:57.960479" 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-08-03T02:03:57.960611" 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-08-03T02:03:57.960221" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.961256" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.159 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.134" 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-08-03T02:03:57.960795" elapsed="0.000521"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-03T02:03:57.961889" 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-08-03T02:03:57.961461" elapsed="0.000454"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-03T02:03:57.962927" level="INFO">Length is 0.</msg>
<msg time="2026-08-03T02:03:57.963033" 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-08-03T02:03:57.962574" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-03T02:03:57.963221" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-03T02:03:57.964484" level="INFO">Logging into '10.30.170.134:22' as 'jenkins'.</msg>
<msg time="2026-08-03T02:03:59.036099" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Aug  3 02:03:58 UTC 2026

  System load:  1.0                Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.134
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Aug  3 01:53:51 2026 from 10.30.171.214
[?2004h[jenkins@releng-48317-799-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-08-03T02:03:57.964112" elapsed="1.072175"/>
</kw>
<msg time="2026-08-03T02:03:59.036371" 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-08-03T02:03:57.963741" elapsed="1.072716"/>
</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-08-03T02:03:57.962178" elapsed="1.074405"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-03T02:03:59.037113" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.159 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-03T02:14:06.391440" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-03T02:14:06.391837" level="INFO">${stdout} = </msg>
<msg time="2026-08-03T02:14:06.391895" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.159: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-08-03T02:03:59.036816" elapsed="607.355111"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T02:14:06.392234" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.393381" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.159. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:05:04.173 16  switches: flows:  572546 573236 577324 567206 576175 588210 580941 570644 560228 558951 565390 582607 564117 554317 561503 581530  total = 152.248750 per ms 
02:06:04.274 16  switches: flows:  578162 573496 566445 582993 576019 580347 579195 580207 574188 585827 580352 579160 583029 582328 573225 579862  total = 153.988244 per ms 
02:07:04.376 16  switches: flows:  570960 576600 562431 539927 563779 558827 562001 561759 578695 568740 560770 567576 573980 579287 574722 567061  total = 150.861764 per ms 
02:08:04.477 16  switches: flows:  576657 579056 582728 577740 580342 582453 586823 583626 574439 583369 581202 587144 590396 587573 579785 579745  total = 154.956777 per ms 
02:09:04.580 16  switches: flows:  583414 578276 583660 580294 577745 584394 584858 576463 579545 576390 578855 580388 588954 573093 580223 579825  total = 154.509853 per ms 
02:10:04.682 16  switches: flows:  578719 574102 577091 571591 575852 578091 571596 582606 575893 578685 573710 576901 576991 568199 574573 581748  total = 153.347032 per ms 
02:11:04.791 16  switches: flows:  593512 596209 605359 606912 606320 606664 600522 609582 604695 594838 600789 600054 606704 597962 600485 606571  total = 160.331056 per ms 
02:12:06.194 16  switches: flows:  597849 600800 605244 599683 597364 605377 602346 609129 597187 600468 603608 599682 599035 609120 600147 599723  total = 156.783214 per ms 
02:13:06.296 16  switches: flows:  592328 595308 595637 597476 592523 594840 598010 595085 592402 595105 597845 598116 597854 593637 597700 597802  total = 158.593765 per ms 
02:14:06.398 16  switches: flows:  565247 570511 573112 566109 580241 584031 576403 563421 572114 577272 567249 577735 569216 574166 566160 579526  total = 152.451844 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 150861.76/160331.06/155091.51/51774.54 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:14:06.392940" elapsed="0.000628"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-03T02:14:06.393879" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-08-03T02:14:06.393678" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-08-03T02:14:06.393646" elapsed="0.000353"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-03T02:14:06.394117" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-08-03T02:14:06.394068" elapsed="0.000102"/>
</branch>
<status status="NOT RUN" start="2026-08-03T02:14:06.394049" elapsed="0.000147"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-03T02:14:06.394233" elapsed="0.000016"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-03T02:14:06.397419" elapsed="0.000431"/>
</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-08-03T02:14:06.398032" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T02:14:06.398414" elapsed="0.000128"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-03T02:14:06.394637" elapsed="0.003970"/>
</kw>
<msg time="2026-08-03T02:14:06.398779" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.159: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-08-03T02:03:57.957230" elapsed="608.441581"/>
</kw>
<status status="PASS" start="2026-08-03T02:03:57.956893" elapsed="608.441977"/>
</branch>
<status status="PASS" start="2026-08-03T02:03:57.956458" elapsed="608.442439"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.399414" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.159. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:05:04.173 16  switches: flows:  572546 573236 577324 567206 576175 588210 580941 570644 560228 558951 565390 582607 564117 554317 561503 581530  total = 152.248750 per ms 
02:06:04.274 16  switches: flows:  578162 573496 566445 582993 576019 580347 579195 580207 574188 585827 580352 579160 583029 582328 573225 579862  total = 153.988244 per ms 
02:07:04.376 16  switches: flows:  570960 576600 562431 539927 563779 558827 562001 561759 578695 568740 560770 567576 573980 579287 574722 567061  total = 150.861764 per ms 
02:08:04.477 16  switches: flows:  576657 579056 582728 577740 580342 582453 586823 583626 574439 583369 581202 587144 590396 587573 579785 579745  total = 154.956777 per ms 
02:09:04.580 16  switches: flows:  583414 578276 583660 580294 577745 584394 584858 576463 579545 576390 578855 580388 588954 573093 580223 579825  total = 154.509853 per ms 
02:10:04.682 16  switches: flows:  578719 574102 577091 571591 575852 578091 571596 582606 575893 578685 573710 576901 576991 568199 574573 581748  total = 153.347032 per ms 
02:11:04.791 16  switches: flows:  593512 596209 605359 606912 606320 606664 600522 609582 604695 594838 600789 600054 606704 597962 600485 606571  total = 160.331056 per ms 
02:12:06.194 16  switches: flows:  597849 600800 605244 599683 597364 605377 602346 609129 597187 600468 603608 599682 599035 609120 600147 599723  total = 156.783214 per ms 
02:13:06.296 16  switches: flows:  592328 595308 595637 597476 592523 594840 598010 595085 592402 595105 597845 598116 597854 593637 597700 597802  total = 158.593765 per ms 
02:14:06.398 16  switches: flows:  565247 570511 573112 566109 580241 584031 576403 563421 572114 577272 567249 577735 569216 574166 566160 579526  total = 152.451844 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 150861.76/160331.06/155091.51/51774.54 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:14:06.399071" elapsed="0.000434"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-03T02:14:06.399701" elapsed="0.000442"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-03T02:14:06.400659" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-03T02:14:06.400786" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 150861.76/160331.06/155091.51/51774.54 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-08-03T02:14:06.400384" elapsed="0.000431"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:14:06.401312" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 150861.76/160331.06/155091.51/51774.54 | 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-08-03T02:14:06.401001" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.404318" 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-08-03T02:14:06.401521" elapsed="0.002867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.407365" level="INFO">150861.76/160331.06/155091.51/51774.54</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:14:06.404567" elapsed="0.002866"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:14:06.410409" 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-08-03T02:14:06.407616" elapsed="0.002827"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:14:06.413786" level="INFO">@{result_value_list} = [ 150861.76 | 160331.06 | 155091.51 | 51774.54 ]</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-08-03T02:14:06.410728" elapsed="0.003096"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.414457" level="INFO">Length is 4.</msg>
<msg time="2026-08-03T02:14:06.414563" 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-08-03T02:14:06.414039" elapsed="0.000552"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.421044" level="INFO">min :: 150861.76</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-08-03T02:14:06.415114" elapsed="0.006001"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-03T02:14:06.414945" elapsed="0.006212"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.427032" level="INFO">max :: 160331.06</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-08-03T02:14:06.421437" elapsed="0.005667"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-03T02:14:06.421271" elapsed="0.005878"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.433062" level="INFO">avg :: 155091.51</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-08-03T02:14:06.427420" elapsed="0.005713"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-03T02:14:06.427257" elapsed="0.005919"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.439108" level="INFO">stdev :: 51774.54</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-08-03T02:14:06.433450" elapsed="0.005728"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-03T02:14:06.433284" elapsed="0.005938"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-03T02:14:06.414699" elapsed="0.024561"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.444146" level="INFO">${min} = 150861.76</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:14:06.439467" elapsed="0.004710"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.449074" level="INFO">${max} = 160331.06</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:14:06.444413" elapsed="0.004693"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.453970" level="INFO">${average} = 155091.51</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:14:06.449302" elapsed="0.004700"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.458856" level="INFO">${stdev} = 51774.54</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:14:06.454201" elapsed="0.004686"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.459514" level="INFO">${date} = 2026-08-03 02:14:06</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-03T02:14:06.459088" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.460229" level="INFO">CBench Result: 2026-08-03 02:14:06,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,150861.76,160331.06,155091.51,51774.54</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-08-03T02:14:06.459745" elapsed="0.000576"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-03T02:14:06.461617" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-03T02:14:06.461110" elapsed="0.000604"/>
</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-08-03T02:14:06.461901" elapsed="0.000564"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-03T02:14:06.460515" elapsed="0.002030"/>
</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-08-03T02:03:57.955278" elapsed="608.507341"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.463201" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-03T02:14:06.462821" elapsed="0.000447"/>
</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-08-03T02:14:06.463905" elapsed="0.000311"/>
</kw>
<status status="PASS" start="2026-08-03T02:14:06.463522" elapsed="0.000870"/>
</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-08-03T02:03:57.953616" elapsed="608.510827"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.465878" 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-08-03T02:14:06.465411" elapsed="0.000535"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.467389" level="INFO">${output_filename} = bug.csv</msg>
<arg>${output_filename}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-08-03T02:14:06.467005" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-08-03T02:14:06.467950" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-08-03T02:14:06.467594" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-08-03T02:14:06.471793" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-08-03T02:14:06.471476" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-08-03T02:14:06.471453" elapsed="0.000435"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-08-03T02:14:06.472323" 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-08-03T02:14:06.472468" 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-08-03T02:14:06.472051" elapsed="0.000449"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.473171" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.159 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.134" 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-08-03T02:14:06.472662" elapsed="0.000578"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-08-03T02:14:06.473899" 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-08-03T02:14:06.473410" elapsed="0.000520"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-03T02:14:06.475009" level="INFO">Length is 0.</msg>
<msg time="2026-08-03T02:14:06.475111" 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-08-03T02:14:06.474617" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-03T02:14:06.475309" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-08-03T02:14:06.476755" level="INFO">Logging into '10.30.170.134:22' as 'jenkins'.</msg>
<msg time="2026-08-03T02:14:07.880104" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

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

 System information as of Mon Aug  3 02:14:06 UTC 2026

  System load:  0.29               Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.134
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Mon Aug  3 02:03:58 2026 from 10.30.171.214
[?2004h[jenkins@releng-48317-799-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-08-03T02:14:06.476322" elapsed="1.403974"/>
</kw>
<msg time="2026-08-03T02:14:07.880380" 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-08-03T02:14:06.475888" elapsed="1.404571"/>
</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-08-03T02:14:06.474177" elapsed="1.406398"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-08-03T02:14:07.881124" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.159 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-08-03T02:24:13.926312" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-08-03T02:24:13.939477" level="INFO">${stdout} = </msg>
<msg time="2026-08-03T02:24:13.939685" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-08-03T02:14:07.880807" elapsed="606.058949"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T02:24:13.944572" elapsed="0.003317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.950774" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.159. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:15:13.017 16  switches: flows:  117574 120849 119857 119850 119561 119626 119628 116652 116384 119305 119653 118550 116219 117671 118945 117977  total = 31.638350 per ms 
02:16:13.118 16  switches: flows:  116681 118486 117009 114743 119245 115389 118344 114790 116161 117672 118310 115899 113965 117341 117311 118976  total = 31.120097 per ms 
02:17:13.218 16  switches: flows:  116382 114467 115558 114848 118799 113396 117674 113535 115761 116734 115570 116433 113246 117323 114714 116095  total = 30.790835 per ms 
02:18:13.318 16  switches: flows:  114908 114945 115476 114696 117053 114424 116993 113021 114950 116693 114368 116647 112236 116288 113876 116213  total = 30.661923 per ms 
02:19:13.419 16  switches: flows:  114450 114540 114028 113890 116206 112965 115264 111946 113671 115582 114740 114421 111967 115821 111269 113760  total = 30.357954 per ms 
02:20:13.519 16  switches: flows:  112487 112797 112352 112784 116334 112651 115461 111794 112276 113486 112244 112800 110332 115031 110819 114115  total = 30.079164 per ms 
02:21:13.619 16  switches: flows:  112705 112241 113062 112038 114292 111414 114367 111672 111288 112674 112514 110985 110066 112897 111127 113466  total = 29.896732 per ms 
02:22:13.720 16  switches: flows:  120412 117909 119451 120343 118801 118910 118594 116037 114674 118647 118346 115144 116846 113616 115117 117977  total = 31.294745 per ms 
02:23:13.820 16  switches: flows:  120944 118860 118555 120900 117978 122428 119825 118476 114647 119641 119953 117657 118400 117047 118023 119743  total = 31.665097 per ms 
02:24:13.921 16  switches: flows:  122743 119001 116923 121255 116920 121290 122130 115939 115386 119719 118728 115986 118237 115852 115406 118586  total = 31.515554 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29896.73/31665.10/30820.23/10290.45 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:24:13.948990" elapsed="0.003602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-08-03T02:24:13.953165" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-08-03T02:24:13.952870" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-08-03T02:24:13.952809" elapsed="0.000526"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-08-03T02:24:13.953473" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-08-03T02:24:13.953420" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-08-03T02:24:13.953397" elapsed="0.000165"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-08-03T02:24:13.953604" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-08-03T02:24:13.959536" elapsed="0.000663"/>
</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-08-03T02:24:13.960434" elapsed="0.000875"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-08-03T02:24:13.961510" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-08-03T02:24:13.954718" elapsed="0.007061"/>
</kw>
<msg time="2026-08-03T02:24:13.962000" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 10...</msg>
<var>${output}</var>
<arg>${cbench_system}</arg>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<arg>prompt_timeout=${test_timeout}</arg>
<arg>return_stdout=False</arg>
<arg>return_stderr=True</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-08-03T02:14:06.468466" elapsed="607.493574"/>
</kw>
<status status="PASS" start="2026-08-03T02:14:06.468055" elapsed="607.494057"/>
</branch>
<status status="PASS" start="2026-08-03T02:14:06.467565" elapsed="607.494596"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.962992" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.159:6633 
   faking 16 switches with 1 threads :: 10 tests each; 60000 ms per test
   with 100 unique source MACs per switch
   learning destination mac addresses before the test
   starting test with 5000 ms delay after features_reply
   ignoring first 1 "warmup" and last 0 "cooldown" loops
   debugging info is off
Master Thread: Creating thread-0! 
Thread-0: All switches initialized. Running at node 10.30.170.159. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
02:15:13.017 16  switches: flows:  117574 120849 119857 119850 119561 119626 119628 116652 116384 119305 119653 118550 116219 117671 118945 117977  total = 31.638350 per ms 
02:16:13.118 16  switches: flows:  116681 118486 117009 114743 119245 115389 118344 114790 116161 117672 118310 115899 113965 117341 117311 118976  total = 31.120097 per ms 
02:17:13.218 16  switches: flows:  116382 114467 115558 114848 118799 113396 117674 113535 115761 116734 115570 116433 113246 117323 114714 116095  total = 30.790835 per ms 
02:18:13.318 16  switches: flows:  114908 114945 115476 114696 117053 114424 116993 113021 114950 116693 114368 116647 112236 116288 113876 116213  total = 30.661923 per ms 
02:19:13.419 16  switches: flows:  114450 114540 114028 113890 116206 112965 115264 111946 113671 115582 114740 114421 111967 115821 111269 113760  total = 30.357954 per ms 
02:20:13.519 16  switches: flows:  112487 112797 112352 112784 116334 112651 115461 111794 112276 113486 112244 112800 110332 115031 110819 114115  total = 30.079164 per ms 
02:21:13.619 16  switches: flows:  112705 112241 113062 112038 114292 111414 114367 111672 111288 112674 112514 110985 110066 112897 111127 113466  total = 29.896732 per ms 
02:22:13.720 16  switches: flows:  120412 117909 119451 120343 118801 118910 118594 116037 114674 118647 118346 115144 116846 113616 115117 117977  total = 31.294745 per ms 
02:23:13.820 16  switches: flows:  120944 118860 118555 120900 117978 122428 119825 118476 114647 119641 119953 117657 118400 117047 118023 119743  total = 31.665097 per ms 
02:24:13.921 16  switches: flows:  122743 119001 116923 121255 116920 121290 122130 115939 115386 119719 118728 115986 118237 115852 115406 118586  total = 31.515554 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 29896.73/31665.10/30820.23/10290.45 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:24:13.962425" elapsed="0.000678"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>RESULT</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-08-03T02:24:13.963308" elapsed="0.000616"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-08-03T02:24:13.964956" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-08-03T02:24:13.965090" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 29896.73/31665.10/30820.23/10290.45 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-08-03T02:24:13.964130" elapsed="0.000994"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:24:13.966133" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 29896.73/31665.10/30820.23/10290.45 | 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-08-03T02:24:13.965326" elapsed="0.000837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.969056" 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-08-03T02:24:13.966327" elapsed="0.002806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.971872" level="INFO">29896.73/31665.10/30820.23/10290.45</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:24:13.969347" elapsed="0.002603"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:24:13.974597" 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-08-03T02:24:13.972178" elapsed="0.002452"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-08-03T02:24:13.977360" level="INFO">@{result_value_list} = [ 29896.73 | 31665.10 | 30820.23 | 10290.45 ]</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-08-03T02:24:13.974975" elapsed="0.002414"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.978036" level="INFO">Length is 4.</msg>
<msg time="2026-08-03T02:24:13.978133" 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-08-03T02:24:13.977592" elapsed="0.000567"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.983229" level="INFO">min :: 29896.73</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-08-03T02:24:13.978602" elapsed="0.004708"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-08-03T02:24:13.978461" elapsed="0.004895"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.988165" level="INFO">max :: 31665.10</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-08-03T02:24:13.983658" elapsed="0.004570"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-08-03T02:24:13.983478" elapsed="0.004788"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.992906" level="INFO">avg :: 30820.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-08-03T02:24:13.988491" elapsed="0.004475"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-08-03T02:24:13.988353" elapsed="0.004650"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:13.997651" level="INFO">stdev :: 10290.45</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-08-03T02:24:13.993223" elapsed="0.004522"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-08-03T02:24:13.993091" elapsed="0.004692"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-08-03T02:24:13.978240" elapsed="0.019575"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.001937" level="INFO">${min} = 29896.73</msg>
<var>${min}</var>
<arg>${result_value_list[${0}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:24:13.997994" elapsed="0.003971"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.005932" level="INFO">${max} = 31665.10</msg>
<var>${max}</var>
<arg>${result_value_list[${1}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:24:14.002126" elapsed="0.003834"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.010015" level="INFO">${average} = 30820.23</msg>
<var>${average}</var>
<arg>${result_value_list[${2}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:24:14.006119" elapsed="0.003923"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.014003" level="INFO">${stdev} = 10290.45</msg>
<var>${stdev}</var>
<arg>${result_value_list[${3}]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-08-03T02:24:14.010199" elapsed="0.003831"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.014575" level="INFO">${date} = 2026-08-03 02:24:14</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-08-03T02:24:14.014200" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.015189" level="INFO">CBench Result: 2026-08-03 02:24:14,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,29896.73,31665.10,30820.23,10290.45</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-08-03T02:24:14.014772" elapsed="0.000476"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-08-03T02:24:14.018826" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-titanium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-08-03T02:24:14.015946" elapsed="0.003060"/>
</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-08-03T02:24:14.019328" elapsed="0.000748"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-08-03T02:24:14.015426" elapsed="0.004732"/>
</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-08-03T02:14:06.466333" elapsed="607.553896"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.020794" level="INFO">Slept 0 seconds.</msg>
<arg>${test_delay}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-08-03T02:24:14.020395" elapsed="0.000459"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-08-03T02:24:14.023165" 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-08-03T02:24:14.022194" elapsed="0.001000"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-08-03T02:24:14.023455" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-08-03T02:24:14.023289" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-08-03T02:24:14.023261" elapsed="0.000301"/>
</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-08-03T02:24:14.023736" elapsed="0.000023"/>
</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-08-03T02:24:14.023924" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-08-03T02:24:14.024090" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-08-03T02:24:14.024802" elapsed="0.000033"/>
</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-08-03T02:24:14.024971" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-08-03T02:24:14.025188" elapsed="0.000021"/>
</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-08-03T02:24:14.025339" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-08-03T02:24:14.025567" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-08-03T02:24:14.025424" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-08-03T02:24:14.025406" elapsed="0.000239"/>
</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-08-03T02:24:14.021802" elapsed="0.003921"/>
</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-08-03T02:14:06.464812" elapsed="607.560973"/>
</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-08-03T01:53:48.587888" elapsed="1825.442601"/>
</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>
