<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-09-11T00:45:25.945450" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-cbench.txt" source="/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/test/csit/suites/openflowplugin/Performance/010_Cbench.robot">
<kw name="Cbench Suite Setup" type="SETUP">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-09-11T00:45:26.484731" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-09-11T00:45:26.484589" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-09-11T00:45:26.484558" elapsed="0.000271"/>
</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-09-11T00:45:26.484962" elapsed="0.000551"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-11T00:45:26.485940" level="INFO">Logging into '10.30.170.122:8101' as 'karaf'.</msg>
<msg time="2026-09-11T00:45:27.339165" 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-09-11T00:45:26.485670" elapsed="0.853845"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-11T00:45:27.388669" 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-09-11T00:45:27.339850" elapsed="0.048931"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-11T00:45:27.390770" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-11T00:45:27.390879" 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-09-11T00:45:27.389019" elapsed="0.001888"/>
</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-09-11T00:45:27.391056" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T00:45:27.391492" elapsed="0.000225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:45:27.392200" 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-09-11T00:45:27.391858" elapsed="0.000394"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-11T00:45:27.392309" elapsed="0.000062"/>
</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.122
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-11T00:45:26.484221" elapsed="0.908291"/>
</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-09-11T00:45:26.480683" elapsed="0.911898"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-11T00:45:27.393177" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${latency_results_file}</arg>
<arg>LATENCY_MIN,LATENCY_MAX,LATENCY_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-11T00:45:27.392761" elapsed="0.000471"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-11T00:45:27.393732" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${throughput_results_file}</arg>
<arg>THROUGHPUT_MIN,THROUGHPUT_MAX,THROUGHPUT_AVERAGE\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-11T00:45:27.393488" elapsed="0.000308"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-11T00:45:27.394315" 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-09-11T00:45:27.393939" elapsed="0.000416"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-11T00:45:27.394911" 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-09-11T00:45:27.394545" elapsed="0.000407"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-11T00:45:27.395473" 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-09-11T00:45:27.395088" elapsed="0.000411"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-11T00:45:27.395938" 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-09-11T00:45:27.395647" elapsed="0.000330"/>
</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-09-11T00:45:27.396256" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-11T00:45:27.396057" elapsed="0.000249"/>
</branch>
<branch type="ELSE">
<kw name="Verify File Exists On Remote System" owner="Utils">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-11T00:45:27.400459" 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-09-11T00:45:27.400052" elapsed="0.000433"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-11T00:45:27.401479" level="INFO">Length is 0.</msg>
<msg time="2026-09-11T00:45:27.401860" 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-09-11T00:45:27.400993" elapsed="0.000891"/>
</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-09-11T00:45:27.402057" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-11T00:45:27.403392" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-09-11T00:45:27.904444" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 11 00:44:56 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


[?2004h[jenkins@releng-63164-395-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-09-11T00:45:27.402908" elapsed="0.501741"/>
</kw>
<msg time="2026-09-11T00:45:27.904737" 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-09-11T00:45:27.402586" elapsed="0.502237"/>
</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-09-11T00:45:27.400676" elapsed="0.504257"/>
</kw>
<kw name="File Should Exist" owner="SSHLibrary">
<msg time="2026-09-11T00:45:27.915448" 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-09-11T00:45:27.905126" elapsed="0.011853"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T00:45:27.917260" elapsed="0.000490"/>
</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-09-11T00:45:27.399585" elapsed="0.518260"/>
</kw>
<status status="PASS" start="2026-09-11T00:45:27.396411" elapsed="0.521485"/>
</branch>
<status status="PASS" start="2026-09-11T00:45:27.396033" elapsed="0.521909"/>
</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-09-11T00:45:27.918153" elapsed="0.000694"/>
</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-09-11T00:45:27.925113" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-09-11T00:45:27.924920" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-09-11T00:45:27.924880" elapsed="0.000350"/>
</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-09-11T00:45:27.931484" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-09-11T00:45:27.931266" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-09-11T00:45:27.931237" elapsed="0.000343"/>
</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-09-11T00:45:27.931775" elapsed="0.000961"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-11T00:45:27.933296" level="INFO">Logging into '10.30.170.122:8101' as 'karaf'.</msg>
<msg time="2026-09-11T00:45:28.202180" 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-09-11T00:45:27.932940" elapsed="0.269411"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.291162" 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-09-11T00:45:28.202623" elapsed="0.088675"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.335657" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-11T00:45:28.335948" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-09-11T00:45:28.291562" elapsed="0.044418"/>
</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-09-11T00:45:28.336185" elapsed="0.000272"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T00:45:28.336602" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:45:28.337226" level="INFO">[?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                                    x OpenDaylight :: Openflow Plugin :: Drop Test
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T00:45:28.336929" elapsed="0.000347"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-11T00:45:28.337335" elapsed="0.000049"/>
</return>
<msg time="2026-09-11T00:45:28.337541" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-openflowplugin-drop-test[0m                                    x 0.21.5           x x        x Started x [31;1modl-openflowplugin-drop-test[0m                     ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.122
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-11T00:45:27.930551" elapsed="0.407020"/>
</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-09-11T00:45:28.337704" elapsed="0.000457"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-11T00:45:28.338206" elapsed="0.000127"/>
</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-09-11T00:45:27.924453" elapsed="0.413993"/>
</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-09-11T00:45:28.341925" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-09-11T00:45:28.341803" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-09-11T00:45:28.341782" elapsed="0.000206"/>
</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-09-11T00:45:28.342107" elapsed="0.000429"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.342896" level="INFO">Logging into '10.30.170.122:8101' as 'karaf'.</msg>
<msg time="2026-09-11T00:45:28.569643" 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-09-11T00:45:28.342667" elapsed="0.227143"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.597275" 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-09-11T00:45:28.570071" elapsed="0.027272"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.599197" level="INFO">[?1l&gt;[?2004lDropAllFlows transitions to on
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-09-11T00:45:28.599302" 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-09-11T00:45:28.597497" elapsed="0.001845"/>
</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-09-11T00:45:28.599484" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T00:45:28.599791" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:45:28.600461" 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-09-11T00:45:28.600127" elapsed="0.000382"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-09-11T00:45:28.600558" elapsed="0.000053"/>
</return>
<arg>dropallpacketsrpc on</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.122
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-09-11T00:45:28.341513" elapsed="0.259205"/>
</kw>
<status status="PASS" start="2026-09-11T00:45:26.478522" elapsed="2.122254"/>
</kw>
<test id="s1-t1" name="Cbench Latency Test" line="37">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:45:28.603058" 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-09-11T00:45:28.601628" elapsed="0.001492"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-11T00:45:28.604436" 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-09-11T00:45:28.604089" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${cbench_system}&quot; == &quot;localhost&quot;">
<kw name="Run" owner="OperatingSystem">
<var>${output}</var>
<arg>${cbench_executable} -c ${ODL_SYSTEM_IP} ${cbench_args}</arg>
<doc>_This keyword is considered deprecated. Use the
[http://robotframework.org/robotframework/latest/libraries/Process.html|
Process] library instead._</doc>
<status status="NOT RUN" start="2026-09-11T00:45:28.604770" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-11T00:45:28.604550" elapsed="0.000272"/>
</branch>
<branch type="ELSE">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-09-11T00:45:28.607516" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-11T00:45:28.607263" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-09-11T00:45:28.607246" elapsed="0.000344"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.607891" 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-09-11T00:45:28.608003" 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-09-11T00:45:28.607707" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:45:28.608628" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.122 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.131" 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-09-11T00:45:28.608161" elapsed="0.000528"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.609246" 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-09-11T00:45:28.608821" elapsed="0.000449"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-11T00:45:28.610103" level="INFO">Length is 0.</msg>
<msg time="2026-09-11T00:45:28.610183" 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-09-11T00:45:28.609811" elapsed="0.000393"/>
</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-09-11T00:45:28.610342" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.611439" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-09-11T00:45:28.987568" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 11 00:44:56 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Fri Sep 11 00:45:27 2026 from 10.30.170.159
[?2004h[jenkins@releng-63164-395-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-09-11T00:45:28.611102" elapsed="0.376666"/>
</kw>
<msg time="2026-09-11T00:45:28.987853" 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-09-11T00:45:28.610793" elapsed="0.377143"/>
</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-09-11T00:45:28.609481" elapsed="0.378567"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-11T00:45:28.988570" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.122 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-11T00:55:35.142848" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-11T00:55:35.143491" level="INFO">${stdout} = </msg>
<msg time="2026-09-11T00:55:35.143589" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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-09-11T00:45:28.988257" elapsed="606.155399"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T00:55:35.144083" elapsed="0.000713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.145853" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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.122. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:46:34.232 16  switches: flows:  75727 76146 74778 73331 74379 73608 73963 73842 71097 71289 71634 69827 71047 70691 70464 71348  total = 19.386183 per ms 
00:47:34.332 16  switches: flows:  81222 81106 80724 78435 79433 78395 77465 76800 76013 75821 76583 75105 76345 75212 73986 74932  total = 20.591880 per ms 
00:48:34.432 16  switches: flows:  84924 84336 83215 83201 82465 81868 82674 80817 78590 78909 79225 80038 80042 79170 78743 78396  total = 21.574204 per ms 
00:49:34.533 16  switches: flows:  79682 78439 77189 76546 76744 76492 76061 75916 74134 74009 73810 73074 74924 73501 72119 74331  total = 20.082669 per ms 
00:50:34.634 16  switches: flows:  87815 86142 85491 84521 84886 85119 84058 83545 81123 81277 81176 81379 82840 80792 80039 80460  total = 22.140775 per ms 
00:51:34.734 16  switches: flows:  86258 85693 83706 82936 83518 81911 83942 82216 80729 80437 80265 78892 80500 78989 78707 80004  total = 21.775387 per ms 
00:52:34.834 16  switches: flows:  85429 83417 82626 81097 82840 81664 82354 80984 78909 78785 79170 78278 79696 78560 77733 78452  total = 21.464078 per ms 
00:53:34.934 16  switches: flows:  90553 88976 87662 87063 85349 85754 86723 85335 82646 81991 84452 84168 82520 83728 81749 82362  total = 22.646032 per ms 
00:54:35.034 16  switches: flows:  84505 83590 81076 80463 81462 80323 81550 78413 76714 77063 78249 77365 78523 78800 76649 77697  total = 21.172027 per ms 
00:55:35.135 16  switches: flows:  89849 89854 87361 86936 88339 84421 85958 83798 82266 82948 83645 83096 84714 82685 81818 83903  total = 22.655360 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 20082.67/22655.36/21566.93/7235.52 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T00:55:35.145121" elapsed="0.001012"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-11T00:55:35.146703" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-09-11T00:55:35.146375" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-09-11T00:55:35.146287" elapsed="0.000608"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-11T00:55:35.147078" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-09-11T00:55:35.147008" elapsed="0.000148"/>
</branch>
<status status="NOT RUN" start="2026-09-11T00:55:35.146979" elapsed="0.000218"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-11T00:55:35.147260" elapsed="0.000025"/>
</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-09-11T00:55:35.153804" elapsed="0.001021"/>
</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-09-11T00:55:35.155245" elapsed="0.000519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T00:55:35.156093" elapsed="0.000236"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-11T00:55:35.147923" elapsed="0.008546"/>
</kw>
<msg time="2026-09-11T00:55:35.156833" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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-09-11T00:45:28.605134" elapsed="606.551758"/>
</kw>
<status status="PASS" start="2026-09-11T00:45:28.604847" elapsed="606.552142"/>
</branch>
<status status="PASS" start="2026-09-11T00:45:28.604529" elapsed="606.552512"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.158047" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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.122. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:46:34.232 16  switches: flows:  75727 76146 74778 73331 74379 73608 73963 73842 71097 71289 71634 69827 71047 70691 70464 71348  total = 19.386183 per ms 
00:47:34.332 16  switches: flows:  81222 81106 80724 78435 79433 78395 77465 76800 76013 75821 76583 75105 76345 75212 73986 74932  total = 20.591880 per ms 
00:48:34.432 16  switches: flows:  84924 84336 83215 83201 82465 81868 82674 80817 78590 78909 79225 80038 80042 79170 78743 78396  total = 21.574204 per ms 
00:49:34.533 16  switches: flows:  79682 78439 77189 76546 76744 76492 76061 75916 74134 74009 73810 73074 74924 73501 72119 74331  total = 20.082669 per ms 
00:50:34.634 16  switches: flows:  87815 86142 85491 84521 84886 85119 84058 83545 81123 81277 81176 81379 82840 80792 80039 80460  total = 22.140775 per ms 
00:51:34.734 16  switches: flows:  86258 85693 83706 82936 83518 81911 83942 82216 80729 80437 80265 78892 80500 78989 78707 80004  total = 21.775387 per ms 
00:52:34.834 16  switches: flows:  85429 83417 82626 81097 82840 81664 82354 80984 78909 78785 79170 78278 79696 78560 77733 78452  total = 21.464078 per ms 
00:53:34.934 16  switches: flows:  90553 88976 87662 87063 85349 85754 86723 85335 82646 81991 84452 84168 82520 83728 81749 82362  total = 22.646032 per ms 
00:54:35.034 16  switches: flows:  84505 83590 81076 80463 81462 80323 81550 78413 76714 77063 78249 77365 78523 78800 76649 77697  total = 21.172027 per ms 
00:55:35.135 16  switches: flows:  89849 89854 87361 86936 88339 84421 85958 83798 82266 82948 83645 83096 84714 82685 81818 83903  total = 22.655360 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 20082.67/22655.36/21566.93/7235.52 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T00:55:35.157369" elapsed="0.000827"/>
</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-09-11T00:55:35.158539" elapsed="0.000735"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-11T00:55:35.160075" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-11T00:55:35.160273" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 20082.67/22655.36/21566.93/7235.52 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-09-11T00:55:35.159636" elapsed="0.000707"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T00:55:35.161197" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 20082.67/22655.36/21566.93/7235.52 | 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-09-11T00:55:35.160671" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.166356" 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-09-11T00:55:35.161589" elapsed="0.004909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.171464" level="INFO">20082.67/22655.36/21566.93/7235.52</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T00:55:35.166807" elapsed="0.004771"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T00:55:35.176662" 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-09-11T00:55:35.171877" elapsed="0.004859"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T00:55:35.181995" level="INFO">@{result_value_list} = [ 20082.67 | 22655.36 | 21566.93 | 7235.52 ]</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-09-11T00:55:35.177271" elapsed="0.004767"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.182851" level="INFO">Length is 4.</msg>
<msg time="2026-09-11T00:55:35.182985" 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-09-11T00:55:35.182337" elapsed="0.000680"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.190014" level="INFO">min :: 20082.67</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T00:55:35.183640" elapsed="0.006457"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-11T00:55:35.183454" elapsed="0.006690"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.196744" level="INFO">max :: 22655.36</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-09-11T00:55:35.190500" elapsed="0.006318"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-11T00:55:35.190272" elapsed="0.006591"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.202740" level="INFO">avg :: 21566.93</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T00:55:35.197152" elapsed="0.005660"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-11T00:55:35.196980" elapsed="0.005875"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.208666" level="INFO">stdev :: 7235.52</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-09-11T00:55:35.203138" elapsed="0.005599"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-11T00:55:35.202968" elapsed="0.005811"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-11T00:55:35.183112" elapsed="0.025708"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.213200" level="INFO">${min} = 20082.67</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-09-11T00:55:35.209022" elapsed="0.004202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.218185" level="INFO">${max} = 22655.36</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-09-11T00:55:35.213377" elapsed="0.004832"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.221821" level="INFO">${average} = 21566.93</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-09-11T00:55:35.218365" elapsed="0.003480"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.225460" level="INFO">${stdev} = 7235.52</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-09-11T00:55:35.221983" elapsed="0.003501"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.225958" level="INFO">${date} = 2026-09-11 00:55:35</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-11T00:55:35.225627" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.226521" level="INFO">CBench Result: 2026-09-11 00:55:35,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,20082.67,22655.36,21566.93,7235.52</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-09-11T00:55:35.226114" elapsed="0.000459"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-11T00:55:35.227555" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/latency.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-11T00:55:35.227136" elapsed="0.000480"/>
</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-09-11T00:55:35.227755" elapsed="0.000441"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-11T00:55:35.226708" elapsed="0.001547"/>
</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-09-11T00:45:28.603532" elapsed="606.624792"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.228770" 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-09-11T00:55:35.228477" elapsed="0.000351"/>
</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-09-11T00:55:35.229290" elapsed="0.000279"/>
</kw>
<status status="PASS" start="2026-09-11T00:55:35.229020" elapsed="0.000610"/>
</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-09-11T00:45:28.600917" elapsed="606.628749"/>
</test>
<test id="s1-t2" name="Cbench Throughput Test" line="51">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.230908" 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-09-11T00:55:35.230556" elapsed="0.000404"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.232085" 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-09-11T00:55:35.231790" elapsed="0.000334"/>
</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-09-11T00:55:35.232490" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-11T00:55:35.232195" elapsed="0.000349"/>
</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-09-11T00:55:35.235204" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-09-11T00:55:35.234982" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-09-11T00:55:35.234966" elapsed="0.000310"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-11T00:55:35.235623" 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-09-11T00:55:35.235731" 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-09-11T00:55:35.235410" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.236248" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.122 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.131" 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-09-11T00:55:35.235876" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-11T00:55:35.236813" 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-09-11T00:55:35.236457" elapsed="0.000379"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-11T00:55:35.237664" level="INFO">Length is 0.</msg>
<msg time="2026-09-11T00:55:35.237743" 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-09-11T00:55:35.237358" elapsed="0.000407"/>
</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-09-11T00:55:35.237890" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-11T00:55:35.238986" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-09-11T00:55:35.913455" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 11 00:55:35 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Fri Sep 11 00:45:28 2026 from 10.30.170.159
[?2004h[jenkins@releng-63164-395-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-09-11T00:55:35.238673" elapsed="0.674991"/>
</kw>
<msg time="2026-09-11T00:55:35.913749" 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-09-11T00:55:35.238335" elapsed="0.675505"/>
</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-09-11T00:55:35.237014" elapsed="0.676936"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-11T00:55:35.914484" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.122 -t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-11T01:05:41.995929" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-11T01:05:41.996520" level="INFO">${stdout} = </msg>
<msg time="2026-09-11T01:05:41.996613" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.122: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-09-11T00:55:35.914170" elapsed="606.082518"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T01:05:41.997140" elapsed="0.000680"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:41.998890" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.122: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.122. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:56:41.075 16  switches: flows:  480451 477702 481583 488600 481435 464418 474712 476782 473007 478886 485778 470420 484318 474098 485046 485913  total = 127.719150 per ms 
00:57:41.177 16  switches: flows:  510870 513450 518271 516350 513797 519055 515856 517972 517191 506381 511957 511824 516913 516667 515973 518465  total = 137.118815 per ms 
00:58:41.282 16  switches: flows:  545689 543891 543307 544584 542516 545562 543034 548813 537097 539882 547308 547712 550561 543478 547739 543987  total = 145.001592 per ms 
00:59:41.383 16  switches: flows:  587841 592043 591081 586844 583675 578766 584146 590876 587957 584244 583167 585343 584637 579734 589039 592785  total = 156.106518 per ms 
01:00:41.484 16  switches: flows:  586308 587971 583958 592043 585333 585065 586705 589024 589079 582044 590178 585414 584774 587622 594996 587504  total = 156.370600 per ms 
01:01:41.585 16  switches: flows:  603365 600258 600376 600764 605706 599149 602502 608786 604866 594092 602336 598300 599787 600664 602934 603520  total = 160.188983 per ms 
01:02:41.685 16  switches: flows:  637704 643053 644718 640602 642115 644267 644903 640388 634928 640900 641635 644280 637796 643050 645851 645822  total = 170.914104 per ms 
01:03:41.787 16  switches: flows:  642485 644546 648868 654374 645385 649193 652795 656482 642496 647538 644871 648152 651300 645430 652930 651943  total = 172.688696 per ms 
01:04:41.889 16  switches: flows:  645579 645791 647929 654548 648384 642932 657071 656109 646305 645822 655865 648624 645412 645749 658978 658577  total = 173.102211 per ms 
01:05:41.995 16  switches: flows:  648527 642882 648411 647469 651666 642604 645912 644532 651175 645891 644294 643884 644624 644061 647351 645885  total = 172.018764 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 137118.81/173102.21/160390.03/54870.25 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T01:05:41.998151" elapsed="0.001045"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-11T01:05:41.999726" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-09-11T01:05:41.999383" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-09-11T01:05:41.999333" elapsed="0.000580"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-11T01:05:42.000091" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-09-11T01:05:42.000021" elapsed="0.000147"/>
</branch>
<status status="NOT RUN" start="2026-09-11T01:05:41.999993" elapsed="0.000215"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-11T01:05:42.000266" elapsed="0.000026"/>
</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-09-11T01:05:42.005376" elapsed="0.000709"/>
</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-09-11T01:05:42.006374" elapsed="0.000363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T01:05:42.006996" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-11T01:05:42.000926" elapsed="0.006374"/>
</kw>
<msg time="2026-09-11T01:05:42.007600" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.122: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-09-11T00:55:35.232850" elapsed="606.774802"/>
</kw>
<status status="PASS" start="2026-09-11T00:55:35.232569" elapsed="606.775178"/>
</branch>
<status status="PASS" start="2026-09-11T00:55:35.232171" elapsed="606.775622"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.008691" level="INFO">cbench: controller benchmarking tool
   running in mode 'throughput'
   connecting to controller at 10.30.170.122: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.122. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
00:56:41.075 16  switches: flows:  480451 477702 481583 488600 481435 464418 474712 476782 473007 478886 485778 470420 484318 474098 485046 485913  total = 127.719150 per ms 
00:57:41.177 16  switches: flows:  510870 513450 518271 516350 513797 519055 515856 517972 517191 506381 511957 511824 516913 516667 515973 518465  total = 137.118815 per ms 
00:58:41.282 16  switches: flows:  545689 543891 543307 544584 542516 545562 543034 548813 537097 539882 547308 547712 550561 543478 547739 543987  total = 145.001592 per ms 
00:59:41.383 16  switches: flows:  587841 592043 591081 586844 583675 578766 584146 590876 587957 584244 583167 585343 584637 579734 589039 592785  total = 156.106518 per ms 
01:00:41.484 16  switches: flows:  586308 587971 583958 592043 585333 585065 586705 589024 589079 582044 590178 585414 584774 587622 594996 587504  total = 156.370600 per ms 
01:01:41.585 16  switches: flows:  603365 600258 600376 600764 605706 599149 602502 608786 604866 594092 602336 598300 599787 600664 602934 603520  total = 160.188983 per ms 
01:02:41.685 16  switches: flows:  637704 643053 644718 640602 642115 644267 644903 640388 634928 640900 641635 644280 637796 643050 645851 645822  total = 170.914104 per ms 
01:03:41.787 16  switches: flows:  642485 644546 648868 654374 645385 649193 652795 656482 642496 647538 644871 648152 651300 645430 652930 651943  total = 172.688696 per ms 
01:04:41.889 16  switches: flows:  645579 645791 647929 654548 648384 642932 657071 656109 646305 645822 655865 648624 645412 645749 658978 658577  total = 173.102211 per ms 
01:05:41.995 16  switches: flows:  648527 642882 648411 647469 651666 642604 645912 644532 651175 645891 644294 643884 644624 644061 647351 645885  total = 172.018764 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 137118.81/173102.21/160390.03/54870.25 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T01:05:42.008066" elapsed="0.000775"/>
</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-09-11T01:05:42.009130" elapsed="0.000773"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-11T01:05:42.010690" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-11T01:05:42.010865" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 137118.81/173102.21/160390.03/54870.25 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-09-11T01:05:42.010219" elapsed="0.000693"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T01:05:42.011764" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 137118.81/173102.21/160390.03/54870.25 | 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-09-11T01:05:42.011211" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.016769" 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-09-11T01:05:42.012102" elapsed="0.004780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.021821" level="INFO">137118.81/173102.21/160390.03/54870.25</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T01:05:42.017176" elapsed="0.004765"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T01:05:42.026931" 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-09-11T01:05:42.022242" elapsed="0.004746"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T01:05:42.030842" level="INFO">@{result_value_list} = [ 137118.81 | 173102.21 | 160390.03 | 54870.25 ]</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-09-11T01:05:42.027394" elapsed="0.003485"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.031536" level="INFO">Length is 4.</msg>
<msg time="2026-09-11T01:05:42.031652" 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-09-11T01:05:42.031086" elapsed="0.000597"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.038528" level="INFO">min :: 137118.81</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-09-11T01:05:42.032210" elapsed="0.006395"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-11T01:05:42.032016" elapsed="0.006636"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.045300" level="INFO">max :: 173102.21</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-09-11T01:05:42.038944" elapsed="0.006431"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-11T01:05:42.038772" elapsed="0.006680"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.051669" level="INFO">avg :: 160390.03</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-09-11T01:05:42.045746" elapsed="0.005998"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-11T01:05:42.045572" elapsed="0.006217"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.058004" level="INFO">stdev :: 54870.25</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-09-11T01:05:42.052077" elapsed="0.006001"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-11T01:05:42.051904" elapsed="0.006218"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-11T01:05:42.031769" elapsed="0.026395"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.063669" level="INFO">${min} = 137118.81</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-09-11T01:05:42.058376" elapsed="0.005330"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.069095" level="INFO">${max} = 173102.21</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-09-11T01:05:42.063916" elapsed="0.005215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.074513" level="INFO">${average} = 160390.03</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-09-11T01:05:42.069335" elapsed="0.005213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.078791" level="INFO">${stdev} = 54870.25</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-09-11T01:05:42.074751" elapsed="0.004064"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.079314" level="INFO">${date} = 2026-09-11 01:05:42</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-11T01:05:42.078961" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.079883" level="INFO">CBench Result: 2026-09-11 01:05:42,-t -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,137118.81,173102.21,160390.03,54870.25</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-09-11T01:05:42.079512" elapsed="0.000422"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-11T01:05:42.080915" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/throughput.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-11T01:05:42.080517" elapsed="0.000459"/>
</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-09-11T01:05:42.081113" elapsed="0.000450"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-11T01:05:42.080071" elapsed="0.001550"/>
</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-09-11T00:55:35.231253" elapsed="606.850422"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.082095" 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-09-11T01:05:42.081808" elapsed="0.000337"/>
</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-09-11T01:05:42.082630" elapsed="0.000236"/>
</kw>
<status status="PASS" start="2026-09-11T01:05:42.082334" elapsed="0.000595"/>
</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-09-11T00:55:35.229936" elapsed="606.853027"/>
</test>
<test id="s1-t3" name="Rerun Latency Test To Check Bug 6176" line="65">
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.084377" 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-09-11T01:05:42.084033" elapsed="0.000422"/>
</kw>
<kw name="Run Cbench And Log Results">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.085762" 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-09-11T01:05:42.085463" elapsed="0.000828"/>
</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-09-11T01:05:42.086643" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-11T01:05:42.086406" elapsed="0.000291"/>
</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-09-11T01:05:42.089532" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-09-11T01:05:42.089280" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-09-11T01:05:42.089263" elapsed="0.000341"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-09-11T01:05:42.089897" 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-09-11T01:05:42.090001" 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-09-11T01:05:42.089722" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.090548" level="INFO">Attempting to execute command "/usr/local/bin/cbench -c 10.30.170.122 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633" on remote system "10.30.170.131" 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-09-11T01:05:42.090144" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-09-11T01:05:42.091102" 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-09-11T01:05:42.090728" elapsed="0.000397"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-11T01:05:42.091981" level="INFO">Length is 0.</msg>
<msg time="2026-09-11T01:05:42.092059" 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-09-11T01:05:42.091701" elapsed="0.000379"/>
</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-09-11T01:05:42.092206" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-09-11T01:05:42.093294" level="INFO">Logging into '10.30.170.131:22' as 'jenkins'.</msg>
<msg time="2026-09-11T01:05:42.773086" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Fri Sep 11 01:05:42 UTC 2026

  System load:  0.38               Processes:             104
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.131
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

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

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


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


Last login: Fri Sep 11 00:55:35 2026 from 10.30.170.159
[?2004h[jenkins@releng-63164-395-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-09-11T01:05:42.092978" elapsed="0.680358"/>
</kw>
<msg time="2026-09-11T01:05:42.773483" 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-09-11T01:05:42.092659" elapsed="0.680934"/>
</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-09-11T01:05:42.091303" elapsed="0.682437"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-09-11T01:05:42.774483" level="INFO">Executing command '/usr/local/bin/cbench -c 10.30.170.122 -m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633'.</msg>
<msg time="2026-09-11T01:15:48.815963" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-09-11T01:15:48.816650" level="INFO">${stdout} = </msg>
<msg time="2026-09-11T01:15:48.816750" level="INFO">${stderr} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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-09-11T01:05:42.774028" elapsed="606.042798"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T01:15:48.817281" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.819342" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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.122. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:47.910 16  switches: flows:  90304 89200 88329 88019 88198 87392 86518 86764 83506 84069 84106 82116 83902 82452 82708 83019  total = 22.843367 per ms 
01:07:48.011 16  switches: flows:  90371 88109 87798 87839 87854 86277 84575 84903 81335 82138 82825 80336 80037 80329 80667 81619  total = 22.412779 per ms 
01:08:48.112 16  switches: flows:  97252 93554 93947 93464 95070 92795 90323 90687 87257 87813 88599 86454 87238 86182 87074 86655  total = 24.032594 per ms 
01:09:48.212 16  switches: flows:  90855 87784 88067 86800 89245 86789 84347 84532 81671 82164 81761 80467 82082 81280 81437 81257  total = 22.471449 per ms 
01:10:48.313 16  switches: flows:  92971 89424 89725 88522 90451 87383 86493 85429 83783 83327 83666 83051 82777 81179 84674 82761  total = 22.888745 per ms 
01:11:48.414 16  switches: flows:  91997 89046 89797 87523 89407 87785 86035 85073 82854 83379 83586 83027 81764 81764 83290 82430  total = 22.774568 per ms 
01:12:48.514 16  switches: flows:  95003 92716 93473 92016 92988 92315 89592 89255 87930 87189 87657 85510 86575 85914 86681 87696  total = 23.835393 per ms 
01:13:48.615 16  switches: flows:  92808 91516 91756 91556 91000 91357 87918 88565 85151 86520 84654 84448 84442 84602 86394 86464  total = 23.446718 per ms 
01:14:48.716 16  switches: flows:  86661 85434 85672 84142 84285 83522 82034 82684 80606 80501 79798 79503 79758 79115 79741 81805  total = 21.884469 per ms 
01:15:48.817 16  switches: flows:  86520 86791 86194 83426 84129 83325 82624 82723 81255 81828 80817 80069 79912 80134 80853 81067  total = 21.991064 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 21884.47/24032.59/22859.75/7654.37 responses/s</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T01:15:48.818583" elapsed="0.001100"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="PASS" start="2026-09-11T01:15:48.820206" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-09-11T01:15:48.819878" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-09-11T01:15:48.819827" elapsed="0.000576"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-09-11T01:15:48.820635" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-09-11T01:15:48.820557" elapsed="0.000163"/>
</branch>
<status status="NOT RUN" start="2026-09-11T01:15:48.820523" elapsed="0.000243"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-09-11T01:15:48.820830" elapsed="0.000028"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-09-11T01:15:48.826826" elapsed="0.000756"/>
</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-09-11T01:15:48.827903" elapsed="0.000355"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-09-11T01:15:48.828571" elapsed="0.000212"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-09-11T01:15:48.821561" elapsed="0.007335"/>
</kw>
<msg time="2026-09-11T01:15:48.829187" level="INFO">${output} = cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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-09-11T01:05:42.087006" elapsed="606.742238"/>
</kw>
<status status="PASS" start="2026-09-11T01:05:42.086720" elapsed="606.742628"/>
</branch>
<status status="PASS" start="2026-09-11T01:05:42.086386" elapsed="606.743013"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.830389" level="INFO">cbench: controller benchmarking tool
   running in mode 'latency'
   connecting to controller at 10.30.170.122: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.122. So far 1 cbench instances have initialized their switches.  Waiting for other cbench-instances
Thread-0: Total switches from ALL cbench-instances initialized.
01:06:47.910 16  switches: flows:  90304 89200 88329 88019 88198 87392 86518 86764 83506 84069 84106 82116 83902 82452 82708 83019  total = 22.843367 per ms 
01:07:48.011 16  switches: flows:  90371 88109 87798 87839 87854 86277 84575 84903 81335 82138 82825 80336 80037 80329 80667 81619  total = 22.412779 per ms 
01:08:48.112 16  switches: flows:  97252 93554 93947 93464 95070 92795 90323 90687 87257 87813 88599 86454 87238 86182 87074 86655  total = 24.032594 per ms 
01:09:48.212 16  switches: flows:  90855 87784 88067 86800 89245 86789 84347 84532 81671 82164 81761 80467 82082 81280 81437 81257  total = 22.471449 per ms 
01:10:48.313 16  switches: flows:  92971 89424 89725 88522 90451 87383 86493 85429 83783 83327 83666 83051 82777 81179 84674 82761  total = 22.888745 per ms 
01:11:48.414 16  switches: flows:  91997 89046 89797 87523 89407 87785 86035 85073 82854 83379 83586 83027 81764 81764 83290 82430  total = 22.774568 per ms 
01:12:48.514 16  switches: flows:  95003 92716 93473 92016 92988 92315 89592 89255 87930 87189 87657 85510 86575 85914 86681 87696  total = 23.835393 per ms 
01:13:48.615 16  switches: flows:  92808 91516 91756 91556 91000 91357 87918 88565 85151 86520 84654 84448 84442 84602 86394 86464  total = 23.446718 per ms 
01:14:48.716 16  switches: flows:  86661 85434 85672 84142 84285 83522 82034 82684 80606 80501 79798 79503 79758 79115 79741 81805  total = 21.884469 per ms 
01:15:48.817 16  switches: flows:  86520 86791 86194 83426 84129 83325 82624 82723 81255 81828 80817 80069 79912 80134 80853 81067  total = 21.991064 per ms 
RESULT: 16 switches 9 tests min/max/avg/stdev = 21884.47/24032.59/22859.75/7654.37 responses/s</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T01:15:48.829741" elapsed="0.000841"/>
</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-09-11T01:15:48.830898" elapsed="0.000810"/>
</kw>
<kw name="Get Lines Containing String" owner="String">
<msg time="2026-09-11T01:15:48.832556" level="INFO">1 out of 23 lines matched.</msg>
<msg time="2026-09-11T01:15:48.832748" level="INFO">${result_line} = RESULT: 16 switches 9 tests min/max/avg/stdev = 21884.47/24032.59/22859.75/7654.37 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-09-11T01:15:48.832069" elapsed="0.000731"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T01:15:48.833716" level="INFO">@{results_list} = [ RESULT: | 16 | switches | 9 | tests | min/max/avg/stdev | = | 21884.47/24032.59/22859.75/7654.37 | 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-09-11T01:15:48.833149" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.839152" 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-09-11T01:15:48.834104" elapsed="0.005168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.844606" level="INFO">21884.47/24032.59/22859.75/7654.37</msg>
<arg>${results_list[7]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T01:15:48.839619" elapsed="0.005132"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T01:15:48.850057" 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-09-11T01:15:48.845093" elapsed="0.005024"/>
</kw>
<kw name="Split String" owner="String">
<msg time="2026-09-11T01:15:48.855517" level="INFO">@{result_value_list} = [ 21884.47 | 24032.59 | 22859.75 | 7654.37 ]</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-09-11T01:15:48.850554" elapsed="0.005022"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.856625" level="INFO">Length is 4.</msg>
<msg time="2026-09-11T01:15:48.856812" 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-09-11T01:15:48.855924" elapsed="0.000938"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.864843" level="INFO">min :: 21884.47</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-09-11T01:15:48.857685" elapsed="0.007228"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-09-11T01:15:48.857378" elapsed="0.007592"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.870972" level="INFO">max :: 24032.59</msg>
<arg>${result_name_list[${i}]} :: ${result_value_list[${i}]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-09-11T01:15:48.865242" elapsed="0.005805"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-09-11T01:15:48.865077" elapsed="0.006015"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.876878" level="INFO">avg :: 22859.75</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-09-11T01:15:48.871352" elapsed="0.005614"/>
</kw>
<var name="${i}">2</var>
<status status="PASS" start="2026-09-11T01:15:48.871194" elapsed="0.005816"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.882751" level="INFO">stdev :: 7654.37</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-09-11T01:15:48.877274" elapsed="0.005548"/>
</kw>
<var name="${i}">3</var>
<status status="PASS" start="2026-09-11T01:15:48.877113" elapsed="0.005751"/>
</iter>
<var>${i}</var>
<value>0</value>
<value>${num_stats}</value>
<status status="PASS" start="2026-09-11T01:15:48.857008" elapsed="0.025892"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.887895" level="INFO">${min} = 21884.47</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-09-11T01:15:48.883112" elapsed="0.004816"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.892934" level="INFO">${max} = 24032.59</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-09-11T01:15:48.888136" elapsed="0.004846"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.897977" level="INFO">${average} = 22859.75</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-09-11T01:15:48.893173" elapsed="0.004838"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.903041" level="INFO">${stdev} = 7654.37</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-09-11T01:15:48.898209" elapsed="0.004865"/>
</kw>
<kw name="Get Time" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.903790" level="INFO">${date} = 2026-09-11 01:15:48</msg>
<var>${date}</var>
<arg>d,m,s</arg>
<doc>Returns the given time in the requested format.</doc>
<status status="PASS" start="2026-09-11T01:15:48.903271" elapsed="0.000551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.904389" level="INFO">CBench Result: 2026-09-11 01:15:48,-m 60000 -M 100 -S 16 -l 10 -D 5000 -p 6633,21884.47,24032.59,22859.75,7654.37</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-09-11T01:15:48.904019" elapsed="0.000435"/>
</kw>
<kw name="Log Results And Determine Status">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-09-11T01:15:48.905410" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv"&gt;/w/workspace/openflowplugin-csit-1node-cbench-only-vanadium/bug.csv&lt;/a&gt;'.</msg>
<arg>${output_file}</arg>
<arg>${min},${max},${average}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-09-11T01:15:48.904999" elapsed="0.000491"/>
</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-09-11T01:15:48.905626" elapsed="0.000430"/>
</kw>
<arg>${min}</arg>
<arg>${max}</arg>
<arg>${average}</arg>
<arg>${average_threshold}</arg>
<arg>${output_filename}</arg>
<status status="PASS" start="2026-09-11T01:15:48.904577" elapsed="0.001537"/>
</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-09-11T01:05:42.084777" elapsed="606.821388"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.906589" 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-09-11T01:15:48.906294" elapsed="0.000346"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-09-11T01:15:48.908005" 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-09-11T01:15:48.907515" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-09-11T01:15:48.908240" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-09-11T01:15:48.908106" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-09-11T01:15:48.908086" elapsed="0.000236"/>
</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-09-11T01:15:48.908473" elapsed="0.000020"/>
</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-09-11T01:15:48.908614" elapsed="0.000018"/>
</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-09-11T01:15:48.908756" elapsed="0.000017"/>
</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-09-11T01:15:48.908891" elapsed="0.000017"/>
</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-09-11T01:15:48.909084" elapsed="0.000018"/>
</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-09-11T01:15:48.909214" elapsed="0.000017"/>
</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-09-11T01:15:48.909341" elapsed="0.000017"/>
</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-09-11T01:15:48.909562" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-09-11T01:15:48.909411" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-09-11T01:15:48.909396" elapsed="0.000237"/>
</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-09-11T01:15:48.907121" elapsed="0.002560"/>
</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-09-11T01:05:42.083495" elapsed="606.826232"/>
</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-09-11T00:45:25.947101" elapsed="1822.963149"/>
</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>
