<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-07T09:49:16.558449" rpa="false" schemaversion="5">
<suite id="s1" name="bgpcep-throughpcep.txt" source="/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/suites/bgpcep/throughpcep">
<suite id="s1-s1" name="Cases" source="/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/suites/bgpcep/throughpcep/cases.robot">
<kw name="Initial Setup" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.114317" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.110061" elapsed="0.004324"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T09:49:17.109604" elapsed="0.004879"/>
</kw>
<kw name="Select_mock_machine_and_Download_PCC_Mock">
<kw name="Select_MOCK_Machine">
<if>
<branch type="IF" condition="'${USE_TOOLS_SYSTEM}' == 'False'">
<kw name="Pccmock_From_Odl_System">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.115962" level="INFO">${PCCMOCKVM_IP} = 10.30.170.224</msg>
<arg>${PCCMOCKVM_IP}</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.115558" elapsed="0.000453"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.116603" level="INFO">${PCCMOCKVM_PASSWORD} = </msg>
<arg>${PCCMOCKVM_PASSWORD}</arg>
<arg>${ODL_SYSTEM_PASSWORD}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.116184" elapsed="0.000466"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.117193" level="INFO">${PCCMOCKVM_PROMPT} = &gt;</msg>
<arg>${PCCMOCKVM_PROMPT}</arg>
<arg>${ODL_SYSTEM_PROMPT}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.116815" elapsed="0.000424"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.117836" level="INFO">${PCCMOCKVM_WORKSPACE} = /tmp</msg>
<arg>${PCCMOCKVM_WORKSPACE}</arg>
<arg>${ODL_SYSTEM_WORKSPACE}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.117395" elapsed="0.000486"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.118402" level="INFO">${LOG_PATH} = /tmp</msg>
<arg>${LOG_PATH}</arg>
<arg>${ODL_SYSTEM_WORKSPACE}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.118038" elapsed="0.000424"/>
</kw>
<doc>Copy Odl_System values to Pccmock VM variables.</doc>
<status status="PASS" start="2026-04-07T09:49:17.115305" elapsed="0.003225"/>
</kw>
<kw name="Updater_From_Odl_System">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.119271" level="INFO">${UPDATERVM_IP} = 10.30.170.224</msg>
<arg>${UPDATERVM_IP}</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.118899" elapsed="0.000417"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.119875" level="INFO">${UPDATERVM_PASSWORD} = </msg>
<arg>${UPDATERVM_PASSWORD}</arg>
<arg>${ODL_SYSTEM_PASSWORD}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.119488" elapsed="0.000433"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.120448" level="INFO">${UPDATERVM_PROMPT} = &gt;</msg>
<arg>${UPDATERVM_PROMPT}</arg>
<arg>${ODL_SYSTEM_PROMPT}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.120071" elapsed="0.000422"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.121003" level="INFO">${UPDATERVM_WORKSPACE} = /tmp</msg>
<arg>${UPDATERVM_WORKSPACE}</arg>
<arg>${ODL_SYSTEM_WORKSPACE}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.120641" elapsed="0.000404"/>
</kw>
<doc>Copy Odl_System values to Uprater VM variables.</doc>
<status status="PASS" start="2026-04-07T09:49:17.118680" elapsed="0.002424"/>
</kw>
<status status="PASS" start="2026-04-07T09:49:17.115052" elapsed="0.006084"/>
</branch>
<status status="PASS" start="2026-04-07T09:49:17.115024" elapsed="0.006143"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.121684" level="INFO">${FIRST_PCC_IP} = 10.30.170.224</msg>
<arg>${FIRST_PCC_IP}</arg>
<arg>${PCCMOCKVM_IP}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-07T09:49:17.121308" elapsed="0.000418"/>
</kw>
<doc>Check the tools system variable and assigns the PCC Mock</doc>
<status status="PASS" start="2026-04-07T09:49:17.114890" elapsed="0.006895"/>
</kw>
<kw name="Download_Pcc_Mock">
<if>
<branch type="IF" condition="${PCCMOCK_COLOCATED}">
<kw name="Pccmock_From_Controller">
<status status="NOT RUN" start="2026-04-07T09:49:17.123983" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:49:17.122327" elapsed="0.001710"/>
</branch>
<status status="PASS" start="2026-04-07T09:49:17.122305" elapsed="0.001760"/>
</if>
<kw name="Initialize_Artifact_Deployment_And_Usage" owner="NexusKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:49:17.129231" level="INFO">${odl_connection} = 1</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-07T09:49:17.128781" elapsed="0.000478"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.131079" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:49:17.131162" 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-04-07T09:49:17.130665" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.131335" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:49:17.132650" level="INFO">Logging into '10.30.170.224:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:49:17.474877" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

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

 System information as of Tue Apr  7 09:49:15 UTC 2026

  System load:  0.05               Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.224
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 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-25826-167-0-builder-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-04-07T09:49:17.132209" elapsed="0.342958"/>
</kw>
<msg time="2026-04-07T09:49:17.475263" 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-04-07T09:49:17.131859" elapsed="0.343510"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</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-04-07T09:49:17.130216" elapsed="0.345293"/>
</kw>
<msg time="2026-04-07T09:49:17.475565" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.129781" elapsed="0.345837"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-07T09:49:17.129444" elapsed="0.346253"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-07T09:49:17.475754" elapsed="0.000052"/>
</return>
<msg time="2026-04-07T09:49:17.475987" level="INFO">${odl} = 1</msg>
<var>${odl}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-07T09:49:17.128487" elapsed="0.347527"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-07T09:49:17.486522" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-07T09:49:17.494660" level="INFO">'/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/libraries/../../tools/deployment/search.sh' -&gt; '/home/jenkins//search.sh'</msg>
<arg>/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/libraries/../../tools/deployment/search.sh</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-07T09:49:17.476221" elapsed="0.018576"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:49:17.495130" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="not (${tools_system_connect})">
<return>
<status status="PASS" start="2026-04-07T09:49:17.496230" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-07T09:49:17.495917" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-07T09:49:17.495862" elapsed="0.000596"/>
</if>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:17.503337" elapsed="0.000043"/>
</kw>
<arg>tools_system_connect=False</arg>
<doc>Places search utility to ODL system, which will be needed for version detection.
By default also initialize a SSH connection to Tools system,
as following Keywords assume a working connection towards target system.</doc>
<status status="PASS" start="2026-04-07T09:49:17.124326" elapsed="0.379163"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${pcc_ip}</arg>
<arg>alias=${ssh_alias}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-07T09:49:17.503714" elapsed="0.000434"/>
</kw>
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>timeout=10s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-04-07T09:49:17.504368" elapsed="0.000280"/>
</kw>
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${pcc_prompt}</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-04-07T09:49:17.504859" elapsed="0.000266"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.506510" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:49:17.506632" 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-04-07T09:49:17.506004" elapsed="0.000666"/>
</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-04-07T09:49:17.506829" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:49:17.508035" level="INFO">Logging into '10.30.170.224:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:49:17.829928" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

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

 System information as of Tue Apr  7 09:49:15 UTC 2026

  System load:  0.05               Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.224
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 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: Tue Apr  7 09:49:17 2026 from 10.30.171.3
[?2004h[jenkins@releng-25826-167-0-builder-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-04-07T09:49:17.507709" elapsed="0.322321"/>
</kw>
<msg time="2026-04-07T09:49:17.830101" 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-04-07T09:49:17.507328" elapsed="0.322842"/>
</kw>
<arg>${pcc_user}</arg>
<arg>${pcc_password}</arg>
<arg>delay=4s</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-04-07T09:49:17.505414" elapsed="0.324849"/>
</kw>
<kw name="Deploy_Test_Tool" owner="NexusKeywords">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.848088" level="INFO">${name_prefix} = pcep-pcc-mock-</msg>
<var>${name_prefix}</var>
<arg>${artifact}-</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-07T09:49:17.847747" elapsed="0.000369"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.848662" level="INFO">${extension} = jar</msg>
<var>${extension}</var>
<arg>'${component}'=='odl-micro'</arg>
<arg>tar</arg>
<arg>jar</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-07T09:49:17.848274" elapsed="0.000416"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.849242" level="INFO">${name_suffix} = -executable.jar</msg>
<var>${name_suffix}</var>
<arg>"${suffix}" != ""</arg>
<arg>-${suffix}.${extension}</arg>
<arg>.${extension}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-07T09:49:17.848848" elapsed="0.000489"/>
</kw>
<kw name="Deploy_Artifact" owner="NexusKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_url}""" != ""</arg>
<arg>Deploy_From_Url</arg>
<arg>${explicit_url}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.850596" elapsed="0.000328"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-04-07T09:49:17.851298" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>${BUNDLE_URL}</arg>
<arg>/org/opendaylight</arg>
<doc>Returns contents of the ``string`` before the first occurrence of ``marker``.</doc>
<status status="PASS" start="2026-04-07T09:49:17.851078" elapsed="0.000247"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.851882" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>'${urlbase}' != '${BUNDLE_URL}'</arg>
<arg>${urlbase}</arg>
<arg>${fallback_url}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-07T09:49:17.851494" elapsed="0.000415"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Magnesium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.870262" elapsed="0.000464"/>
</kw>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to vanadium and in case vanadium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'carpeople'] {} and return its value.</doc>
<status status="PASS" start="2026-04-07T09:49:17.869862" elapsed="0.000934"/>
</kw>
<msg time="2026-04-07T09:49:17.870845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.861510" elapsed="0.009387"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>carpeople</arg>
<doc>Compare magnesium to vanadium and in case vanadium is at most magnesium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-07T09:49:17.861149" elapsed="0.009823"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Aluminium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.888679" elapsed="0.000411"/>
</kw>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to vanadium and in case vanadium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'netconf'] {} and return its value.</doc>
<status status="PASS" start="2026-04-07T09:49:17.888272" elapsed="0.000887"/>
</kw>
<msg time="2026-04-07T09:49:17.889205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.879946" elapsed="0.009309"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<doc>Compare aluminium to vanadium and in case vanadium is at most aluminium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-07T09:49:17.879615" elapsed="0.009713"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Silicon" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.906970" elapsed="0.000417"/>
</kw>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to vanadium and in case vanadium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'bgpcep'] {} and return its value.</doc>
<status status="PASS" start="2026-04-07T09:49:17.906565" elapsed="0.000908"/>
</kw>
<msg time="2026-04-07T09:49:17.907519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.898236" elapsed="0.009336"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>bgpcep</arg>
<doc>Compare silicon to vanadium and in case vanadium is at most silicon,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-07T09:49:17.897911" elapsed="0.009736"/>
</kw>
<if>
<branch type="IF" condition="'${build_version}'=='${EMPTY}'">
<kw name="NexusKeywords__Detect_Version_To_Pull" owner="NexusKeywords">
<kw name="NexusKeywords__Get_Items_To_Look_At" owner="NexusKeywords">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<arg>Component not supported by NexusKeywords version detection: ${component}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-07T09:49:17.911287" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-07T09:49:17.912047" elapsed="0.000179"/>
</kw>
<msg time="2026-04-07T09:49:17.912272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Collections.Get_From_Dictionary</arg>
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.911712" elapsed="0.000610"/>
</kw>
<msg time="2026-04-07T09:49:17.912438" level="INFO">${itemlist} = pcep-impl</msg>
<var>${itemlist}</var>
<arg>${component}</arg>
<doc>Get a list of items that might contain the version number that we are looking for.</doc>
<status status="PASS" start="2026-04-07T09:49:17.911031" elapsed="0.001435"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:49:17.912791" level="INFO">index=2
host=10.30.170.224
alias=pccmock
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-07T09:49:17.912900" level="INFO">${current_ssh_connection} = index=2
host=10.30.170.224
alias=pccmock
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-07T09:49:17.912622" elapsed="0.000306"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:49:17.917602" level="INFO">${odl_connection} = 3</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-07T09:49:17.917201" elapsed="0.000429"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:49:17.919725" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:49:17.919838" 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-04-07T09:49:17.919192" elapsed="0.000743"/>
</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-04-07T09:49:17.920229" elapsed="0.000710"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:49:17.922996" level="INFO">Logging into '10.30.170.224:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:49:18.234839" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

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

 System information as of Tue Apr  7 09:49:15 UTC 2026

  System load:  0.05               Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.224
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 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: Tue Apr  7 09:49:17 2026 from 10.30.171.3
[?2004h[jenkins@releng-25826-167-0-builder-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-04-07T09:49:17.922529" elapsed="0.312537"/>
</kw>
<msg time="2026-04-07T09:49:18.235168" 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-04-07T09:49:17.921354" elapsed="0.313954"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</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-04-07T09:49:17.918506" elapsed="0.317201"/>
</kw>
<msg time="2026-04-07T09:49:18.235762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:49:17.918114" elapsed="0.317698"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-07T09:49:17.917797" elapsed="0.318089"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-07T09:49:18.235937" elapsed="0.000048"/>
</return>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-07T09:49:17.916917" elapsed="0.319193"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:49:18.236629" level="INFO">Executing command 'sh search.sh /tmp/karaf-0.23.1-SNAPSHOT/system pcep-impl'.</msg>
<msg time="2026-04-07T09:49:18.249562" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-07T09:49:18.249713" level="INFO">${version} = Path '/tmp/karaf-0.23.1-SNAPSHOT/system' does not exist or is not a directory</msg>
<msg time="2026-04-07T09:49:18.249766" level="INFO">${result} = 1</msg>
<var>${version}</var>
<var>${result}</var>
<arg>sh search.sh ${WORKSPACE}/${BUNDLEFOLDER}/system ${itemlist}</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-07T09:49:18.236318" elapsed="0.013473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:49:18.249956" elapsed="0.000257"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-07T09:49:18.254351" elapsed="0.000538"/>
</kw>
<msg time="2026-04-07T09:49:18.255013" level="INFO">Returning from the enclosing user keyword.</msg>
<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-04-07T09:49:18.252733" elapsed="0.002424"/>
</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="NOT RUN" start="2026-04-07T09:49:18.255587" elapsed="0.000054"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.255937" elapsed="0.000046"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:49:18.250497" elapsed="0.005638"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:49:18.257133" level="INFO">Path '/tmp/karaf-0.23.1-SNAPSHOT/system' does not exist or is not a directory</msg>
<arg>${version}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:49:18.256475" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="${result}!=0">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-07T09:49:18.258846" level="FAIL">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</msg>
<arg>Component "${component}": searching for "${itemlist}" found no version, cannot locate test tool.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-07T09:49:18.257993" elapsed="0.001046">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</kw>
<status status="FAIL" start="2026-04-07T09:49:18.257468" elapsed="0.001883">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</branch>
<status status="FAIL" start="2026-04-07T09:49:18.257373" elapsed="0.002095">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</if>
<kw name="Split String" owner="String">
<var>${version}</var>
<var>${location}</var>
<arg>${version}</arg>
<arg>max_split=1</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.259822" elapsed="0.000050"/>
</kw>
<return>
<value>${version}</value>
<value>${location}</value>
<status status="NOT RUN" start="2026-04-07T09:49:18.259991" elapsed="0.000042"/>
</return>
<var>${version}</var>
<var>${location}</var>
<arg>${component}</arg>
<doc>Determine the exact Nexus directory to be used as a source for a particular test tool
Figure out what version of the tool needs to be pulled out of the
Nexus by looking at the version directory of the subsystem from
which the tool is being pulled. This code is REALLY UGLY but there
is no way around it until the bug
https://bugs.opendaylight.org/show_bug.cgi?id=5206 gets fixed.
I also don't want to depend on maven-metadata-local.xml and other
bits and pieces of ODL distribution which are not required for ODL
to function properly.</doc>
<status status="FAIL" start="2026-04-07T09:49:17.910643" elapsed="0.349618">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</kw>
<status status="FAIL" start="2026-04-07T09:49:17.907733" elapsed="0.352740">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${version}</var>
<var>${location}</var>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.260936" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:49:18.260601" elapsed="0.000477"/>
</branch>
<status status="FAIL" start="2026-04-07T09:49:17.907706" elapsed="0.353427">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</if>
<if>
<branch type="IF" condition="'SNAPSHOT' in '${version}'">
<kw name="Remove Values From List" owner="Collections">
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<arg>bgpcep</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.261636" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:49:18.261302" elapsed="0.000469"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:49:18.261262" elapsed="0.000563"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<var>${is_staged}</var>
<arg>"opendaylight.release" not in '${urlbase}' and "opendaylight.snapshot" not in '${urlbase}'</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.262134" elapsed="0.000046"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${is_mri_component}</var>
<arg>'${component}' in ${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.262534" elapsed="0.000048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${urlbase}</var>
<arg>${is_mri_component} == "TRUE" and ${is_staged} == "FALSE"</arg>
<arg>${NEXUS_RELEASE_BASE_URL}</arg>
<arg>${urlbase}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.262907" elapsed="0.000045"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${url}</var>
<arg>${urlbase}/${location}/${artifact}/${version}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.263551" elapsed="0.000056"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<var>${metadata}</var>
<arg>curl -L ${url}/maven-metadata.xml</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.263942" elapsed="0.000026"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${namepart}</var>
<arg>SSHKeywords.Execute_Command_Should_Pass</arg>
<arg>echo "${metadata}" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1</arg>
<arg>stderr_must_be_empty=${True}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.264114" elapsed="0.000020"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${length}</var>
<arg>${namepart}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.264278" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${namepart}</var>
<arg>"${status}" != "PASS" or ${length} == 0</arg>
<arg>${version}</arg>
<arg>${namepart}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.264453" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${filename}</var>
<arg>${name_prefix}${namepart}${name_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.264617" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${filename}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.264779" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${url}</var>
<arg>${url}/${filename}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.264933" elapsed="0.000020"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.265094" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.265255" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${result} == 0">
<return>
<value>${filename}</value>
<status status="NOT RUN" start="2026-04-07T09:49:18.265386" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:49:18.265343" elapsed="0.000100"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:49:18.265321" elapsed="0.000147"/>
</if>
<kw name="Replace String Using Regexp" owner="String">
<var>${release_url}</var>
<arg>${url}</arg>
<arg>autorelease-[0-9]{4}</arg>
<arg>opendaylight.release</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.265598" elapsed="0.000021"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${release_url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.265770" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="${result} != 0">
<kw name="Fail" owner="BuiltIn">
<arg>Artifact "${artifact}" in component "${component}" could not be downloaded from ${release_url} nor ${url}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.265997" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:49:18.265868" elapsed="0.000221"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:49:18.265848" elapsed="0.000266"/>
</if>
<return>
<value>${filename}</value>
<status status="NOT RUN" start="2026-04-07T09:49:18.266150" elapsed="0.000016"/>
</return>
<var>${filename}</var>
<arg>${component}</arg>
<arg>${artifact}</arg>
<arg>${name_prefix}</arg>
<arg>${name_suffix}</arg>
<arg>${fallback_url}</arg>
<arg>${explicit_url}</arg>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Deploy the specified artifact from Nexus to the cwd of the machine to which the active SSHLibrary connection points.
bgpcep is a name part of an artifact present in system/ of ODl installation with the same version as pcep-pcc-mock should have.
Must have https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/karaf/0.23.1-SNAPSHOT/karaf-.zip variable set to the URL from which the
tested ODL distribution was downloaded and this place must be
inside a repository created by a standard distribution
construction job. If this is detected to ne be the case, fallback URL is used.
If  is non-empty, Deploy_From_Utrl is called instead.
TODO: Allow deploying to a specific directory, we have SSHKeywords.Execute_Command_At_Cwd_Should_Pass now.</doc>
<status status="FAIL" start="2026-04-07T09:49:17.849970" elapsed="0.416289">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</kw>
<return>
<value>${filename}</value>
<status status="NOT RUN" start="2026-04-07T09:49:18.266338" elapsed="0.000016"/>
</return>
<var>${file_name}</var>
<arg>bgpcep</arg>
<arg>pcep-pcc-mock</arg>
<doc>Deploy a test tool.
The test tools have naming convention of the form
"&lt;repository_url&gt;/some/dir/somewhere/&lt;tool-name&gt;/&lt;tool-name&gt;-&lt;version-tag&gt;-${suffix}.jar"
where "&lt;tool-name&gt;" is the name of the tool and "&lt;version-tag&gt;" is
the version tag that is digged out of the maven metadata. This
keyword calculates ${name_prefix} and ${name_suffix} for
"Deploy_Artifact" and then calls "Deploy_Artifact" to do the real
work of deploying the artifact.</doc>
<status status="FAIL" start="2026-04-07T09:49:17.842130" elapsed="0.424325">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${mock_location}</arg>
<arg>${file_name}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-07T09:49:18.266629" elapsed="0.000021"/>
</kw>
<doc>SSH login to pcc-mock VM, download latest pcc-mock executable from Nexus.</doc>
<status status="FAIL" start="2026-04-07T09:49:17.121984" elapsed="1.144757">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</kw>
<status status="FAIL" start="2026-04-07T09:49:17.114631" elapsed="1.152204">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</kw>
<status status="FAIL" start="2026-04-07T09:49:17.109199" elapsed="1.157720">Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</kw>
<test id="s1-s1-t1" name="Put_Updater" line="179">
<doc>Open SSH session to updater VM, copy the utility there, including dependencies, also prepare direct http session.</doc>
<status status="FAIL" start="2026-04-07T09:49:18.267008" elapsed="0.000678">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t2" name="Save_And_Enable_Tcp_Rw_Reuse" line="200">
<doc>If requested, temporarily enable TCP port reuse on Updater VM to allow for high rate of TCP connections. Do not start failing fast.</doc>
<status status="FAIL" start="2026-04-07T09:49:18.267893" elapsed="0.000484">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t3" name="Topology_Precondition" line="213">
<doc>Verify that within timeout, PCEP topology is present, with no PCC connected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.268576" elapsed="0.000418">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t4" name="Topology_Intercondition" line="220">
<doc>Verify that within timeout, PCEP topology contains correct numbers of LSPs.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.269172" elapsed="0.000491">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t5" name="Updater_1" line="230">
<doc>Run updater tool to change hops, using 1 blocking http thread.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.269938" elapsed="0.000394">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t6" name="Verify_1" line="236">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.270616" elapsed="0.000432">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t7" name="Updater_2" line="241">
<doc>Run updater tool to change hops again, using 2 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.271342" elapsed="0.000462">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t8" name="Verify_2" line="247">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.272087" elapsed="0.000448">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t9" name="Updater_3" line="252">
<doc>Run updater tool to change hops again, using 4 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.272807" elapsed="0.000361">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t10" name="Verify_3" line="258">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.273337" elapsed="0.000482">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t11" name="Updater_4" line="263">
<doc>Run updater tool to change hops again, using 8 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.274072" elapsed="0.000416">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t12" name="Verify_4" line="269">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.274748" elapsed="0.000438">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t13" name="Updater_5" line="274">
<doc>Run updater tool to change hops again, using 16 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.275476" elapsed="0.000400">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t14" name="Verify_5" line="280">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.276132" elapsed="0.000377">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t15" name="Updater_6" line="285">
<doc>Run updater tool to change hops again, using 32 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.276679" elapsed="0.000362">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t16" name="Verify_6" line="291">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.277214" elapsed="0.000678">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t17" name="Updater_7" line="296">
<doc>Run updater tool to change hops again, using 64 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.278074" elapsed="0.000369">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t18" name="Verify_7" line="302">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.278619" elapsed="0.000360">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t19" name="Updater_8" line="307">
<doc>Run updater tool to change hops again, using 128 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.279153" elapsed="0.000391">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t20" name="Verify_8" line="313">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.279718" elapsed="0.000359">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t21" name="Updater_9" line="318">
<doc>Run updater tool to change hops again, using 256 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.280253" elapsed="0.000367">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t22" name="Verify_9" line="324">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.280792" elapsed="0.000356">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t23" name="Updater_10" line="329">
<doc>Run updater tool to change hops again, using 512 blocking http threads.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.281318" elapsed="0.000364">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t24" name="Verify_10" line="335">
<doc>Verify that within timeout, the correct number of new hops is in PCEP topology.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.281858" elapsed="0.000356">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t25" name="Updater_with delegate" line="340">
<doc>Run updater tool to revoke the delegate for the given hop, using 1 blocking http thread.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.282383" elapsed="0.000421">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t26" name="PCEP_sessions_from_multiple_machines" line="347">
<doc>Download and start PCC Mock in tools vm and do updation</doc>
<status status="FAIL" start="2026-04-07T09:49:18.282973" elapsed="0.000370">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t27" name="Stop_Pcc_Mock" line="372">
<doc>Send ctrl+c to pcc-mock, see prompt again within timeout.</doc>
<status status="FAIL" start="2026-04-07T09:49:18.283530" elapsed="0.000318">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t28" name="PCEP Sessions Flapped with LSP updates" line="379">
<doc>Flapping PCEP sessions and perform LSP updates within flapping</doc>
<status status="FAIL" start="2026-04-07T09:49:18.284014" elapsed="0.000374">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t29" name="PCEP Sessions Flapped alongside LSP updates" line="389">
<doc>Flapping PCEP sessions and perform LSP updates alongside flapping</doc>
<status status="FAIL" start="2026-04-07T09:49:18.284576" elapsed="0.000389">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t30" name="Download_Pccmock_Log" line="400">
<doc>Transfer pcc-mock output from pcc-mock VM to robot VM.</doc>
<status status="FAIL" start="2026-04-07T09:49:18.285129" elapsed="0.000341">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t31" name="Topology_Postcondition" line="407">
<doc>Verify that within timeout, PCEP topology contains no PCCs again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-07T09:49:18.285639" elapsed="0.000363">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<test id="s1-s1-t32" name="Restore_Tcp_Rw_Reuse" line="413">
<doc>If requested, restore the old value if enabling TCP reuse was successful on Updater VM.</doc>
<status status="FAIL" start="2026-04-07T09:49:18.286169" elapsed="0.000455">Parent suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</test>
<kw name="Disconnect" type="TEARDOWN">
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-07T09:49:18.287507" elapsed="0.000195"/>
</kw>
<doc>Explicitly close all SSH connections.</doc>
<status status="PASS" start="2026-04-07T09:49:18.287227" elapsed="0.000531"/>
</kw>
<doc>PCEP performance suite, uses restconf with configurable authentication.

Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


General Overview:

This is a suite which has both scale and performance aspects.
Given scale target, suite reports failures if functional error
is detected, or if various time limits expire.
For passing test cases, their duration is the performance metric.

ODL acts as a translation layer between PCEP capable devices
and users employing RESTCONF.
Performance measurement focuses on two different workflows.

The first workflow is initial synchronization, when ODL learns
the state of PCEP topology as devices connect to it,
while restconf user reads the state repeatedly.
The second workflow is mass update, when restconf users issue RPCs
to updale Layer Switched Paths on Path Computation Clients.

This suite uses pcc-mock (downloaded from Nexus) to simulate PCCs.
It needs segment of bindable IP addresses,
one for each simulated PCC; so running pcc-mock from remote machine
is only viable when just single PCC is simulated.
Testing with multiple PCCs works best when pcc-mock
runs on the same VM as ODL, so 127.0.0.0/8 subnet can be used.

Library AuthStandalone is used directly for restconf reads
in the first workflow. That library transparently handles several
http authentication methods, based on credentials and pybot arguments.

In the second workflow, updater.py utility is used for issuing
rapid restconf requests. It can use multiple worker threads,
as http requests are blocking.
Due to CPython interpreter itself being single threaded,
amounts of threads above 8-16 are actually slightly slower
(which may roughly correspond to network traffic
being more limiting factor than CPU).
This suite starts updater utility bound to single CPU,
as this setup was the most performant in other tests.

In case of failed test case, other tests are skipped (unless
this is overriden by [Setup]) to finish test run sooner.

Variables and test case names refer to Controller(ODL_SYSTEM) and Mininet
(TOOLS_SYSTEM), those are assumed to be separate remote VMs, one to host ODL,
other to host tools.
In case updater and pcc-mock are desired to run
from separate machines, their parameters use Mininet(TOOLS_SYSTEM)
values as default.
If both updater VM and pcc-mock VM parameters are specified,
Mininet(TOOLS_SYSTEM) parameters may be skipped.
Variable False decides the pcc-mock running machine.

Some launch scripts put restrictions on how pybot options
can be specified, so there are utility variables to help with
copying Controller related value to apply fo updater of pccmock.
Having a tool co-located with ODL reduces network latency,
but puts more pressure on CPU and memory on Controller VM.

In some environments, issues with TIME-WAIT prevent high restconf rates,
so TCP reuse is temporarily allowed during the suite run, if possible
(and if not disabled by UPDATERVM_ENABLE_TCP_RW_REUSE option value).
See http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html
This suite ignores possible failures when changing reuse.

Similarly, in some environments, handling of requests.Session object matters
try changing RESTCONF_REUSE value to see if it helps.

Variables to override (only if needed) in pybot command:
(Look into Variables table to see the default values.)

FIRST_PCC_IP: Set in case bind address is different from public pcc-mock VM address.
LOG_NAME: Filename (without path) to save pcc-mock output into.
LOG_PATH: Override if not the same as pccmock VM workspace.
LSPS: Number of LSPs per PCC to simulate and test.
MOCK_FILE: Filename to use for mock-pcc executable instead of the timestamped one.
ODL_SYSTEM_IP: Numeric IP address of VM where ODL runs.
ODL_SYSTEM_USER: Username for ssh login to ODL VM.
ODL_SYSTEM_PASSWORD: Ssh password, empty means public keys are used instead.
ODL_SYSTEM_PROMPT: Substring to identify Linux prompt on ODL VM.
ODL_SYSTEM_WORKSPACE: Path to where files can be written on ODL VM.
PCCDOWNLOAD_HOSTHEADER: Download server may check checks this header before showing content.
PCCDOWNLOAD_URLBASE: URL to pcep-pcc-mock folder in Nexus (use numberic IP if DNS has problems).
PCCMOCK_COLOCATED: If True, set PCCMOCKVM* to mirror ODL_SYSTEM*
PCCMOCKVM_IP: Override TOOLS_SYSTEM for pcc-mock usage.
PCCMOCKVM_*: Override corresponding TOOLS_SYSTEM_* for pcc-mock usage.
PCCS: Number of PCCs to simulate and test.
PCEP_READY_VERIFY_TIMEOUT: Grace period for pcep-topology to appear. Lower if ODL is ready.
RESTCONF_*: USER, PASSWORD and SCOPE to authenticate with, REUSE session.
(Note: If SCOPE is not empty, token-based authentication is used.)
TOOLS_SYSTEM_IP: Numeric IP address of VM to run pcc-mock and updater from by default.
TOOLS_SYSTEM_PASSWORD: Linux password to go with the username (empty means keys).
TOOLS_SYSTEM_PROMPT: Substring to identify Linux prompt on TOOLS_SYSTEM VM.
TOOLS_SYSTEM_USER: Linux username to SSH to on TOOLS_SYSTEM VM.
TOOLS_SYSTEM_WORKSPACE: Path to where files may be created on TOOLS_SYSTEM VM.
UPDATER_COLOCATED: If True, overrides UPDATERVM_* parameters to point at ODL_SYSTEM
(The purpose is to provide an option without ability to unpack ODL_SYSTEM value.)
UPDATER_ODLADDRESS: Override if public ODL_SYSTEM address is not best fit.
UPDATER_REFRESH: Main updater thread may sleep this long. Balance precision with overhead.
UPDATER_TIMEOUT: If updater stops itself if running more than this time.
(Set this limit according to your performance target.)
UPDATERVM_ENABLE_TCP_RW_REUSE: Set to false if changing Linux configuration is not desired.
UPDATERVM_IP: Override TOOLS_SYSTEM for updater.py usage.
UPDATERVM_*: Override corresponding TOOLS_SYSTEM_* for updater.py usage.</doc>
<status status="FAIL" start="2026-04-07T09:49:16.601513" elapsed="1.686278">Suite setup failed:
Component "bgpcep": searching for "pcep-impl" found no version, cannot locate test tool.</status>
</suite>
<status status="FAIL" start="2026-04-07T09:49:16.560124" elapsed="1.728707"/>
</suite>
<statistics>
<total>
<stat pass="0" fail="32" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="0" fail="24" skip="0">critical</stat>
</tag>
<suite>
<stat name="bgpcep-throughpcep.txt" id="s1" pass="0" fail="32" skip="0">bgpcep-throughpcep.txt</stat>
<stat name="Cases" id="s1-s1" pass="0" fail="32" skip="0">bgpcep-throughpcep.txt.Cases</stat>
</suite>
</statistics>
<errors>
<msg time="2026-04-07T09:49:16.829119" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-throughpcep.txt.Cases' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-07T09:49:16.835209" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-throughpcep.txt.Cases' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-07T09:49:16.853534" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-throughpcep.txt.Cases' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-07T09:49:16.890509" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-throughpcep.txt.Cases' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-07T09:49:17.004605" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-vanadium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'bgpcep-throughpcep.txt.Cases' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
</errors>
</robot>
