<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-07T08:52:42.210101" rpa="false" schemaversion="5">
<suite id="s1" name="bgpcep-throughpcep.txt" source="/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/test/csit/suites/bgpcep/throughpcep">
<suite id="s1-s1" name="Cases" source="/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/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-07T08:52:42.799793" 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-07T08:52:42.795070" elapsed="0.004821"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T08:52:42.794583" elapsed="0.005422"/>
</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-07T08:52:42.802096" level="INFO">${PCCMOCKVM_IP} = </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-07T08:52:42.801648" elapsed="0.000518"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.802768" 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-07T08:52:42.802349" elapsed="0.000468"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.803401" 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-07T08:52:42.802981" elapsed="0.000469"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.804007" 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-07T08:52:42.803622" elapsed="0.000432"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.804599" 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-07T08:52:42.804229" elapsed="0.000415"/>
</kw>
<doc>Copy Odl_System values to Pccmock VM variables.</doc>
<status status="PASS" start="2026-04-07T08:52:42.801359" elapsed="0.003355"/>
</kw>
<kw name="Updater_From_Odl_System">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.805521" level="INFO">${UPDATERVM_IP} = </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-07T08:52:42.805102" elapsed="0.000464"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.806118" 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-07T08:52:42.805726" elapsed="0.000460"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.806713" 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-07T08:52:42.806342" elapsed="0.000416"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.807294" 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-07T08:52:42.806911" elapsed="0.000427"/>
</kw>
<doc>Copy Odl_System values to Uprater VM variables.</doc>
<status status="PASS" start="2026-04-07T08:52:42.804874" elapsed="0.002525"/>
</kw>
<status status="PASS" start="2026-04-07T08:52:42.800904" elapsed="0.006524"/>
</branch>
<status status="PASS" start="2026-04-07T08:52:42.800867" elapsed="0.006596"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T08:52:42.807957" level="INFO">${FIRST_PCC_IP} = </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-07T08:52:42.807608" elapsed="0.000390"/>
</kw>
<doc>Check the tools system variable and assigns the PCC Mock</doc>
<status status="PASS" start="2026-04-07T08:52:42.800587" elapsed="0.007470"/>
</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-07T08:52:42.810469" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-07T08:52:42.808643" elapsed="0.001883"/>
</branch>
<status status="PASS" start="2026-04-07T08:52:42.808620" elapsed="0.001933"/>
</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-07T08:52:42.815842" 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-07T08:52:42.815372" elapsed="0.000500"/>
</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-07T08:52:42.817789" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T08:52:42.817873" 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-07T08:52:42.817350" elapsed="0.000547"/>
</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-07T08:52:42.818046" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T08:52:42.819389" level="INFO">Logging into ':22' as 'jenkins'.</msg>
<msg time="2026-04-07T08:52:42.819997" level="FAIL">OSError: [Errno 16] Device or resource busy</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="FAIL" start="2026-04-07T08:52:42.818933" elapsed="0.004007">OSError: [Errno 16] Device or resource busy</status>
</kw>
<msg time="2026-04-07T08:52:42.823008" 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="FAIL" start="2026-04-07T08:52:42.818579" elapsed="0.004492"/>
</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="FAIL" start="2026-04-07T08:52:42.816877" elapsed="0.006401">OSError: [Errno 16] Device or resource busy</status>
</kw>
<msg time="2026-04-07T08:52:42.823330" 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="FAIL" start="2026-04-07T08:52:42.816399" elapsed="0.006980"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="FAIL" start="2026-04-07T08:52:42.816050" elapsed="0.007598">OSError: [Errno 16] Device or resource busy</status>
</kw>
<return>
<value>${odl_connection}</value>
<status status="NOT RUN" start="2026-04-07T08:52:42.823712" elapsed="0.000031"/>
</return>
<var>${odl}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="FAIL" start="2026-04-07T08:52:42.815057" elapsed="0.008781">OSError: [Errno 16] Device or resource busy</status>
</kw>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/test/csit/libraries/../../tools/deployment/search.sh</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-07T08:52:42.824005" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-07T08:52:42.824188" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="not (${tools_system_connect})">
<return>
<status status="NOT RUN" start="2026-04-07T08:52:42.824336" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-07T08:52:42.824288" elapsed="0.000090"/>
</branch>
<status status="NOT RUN" start="2026-04-07T08:52:42.824265" elapsed="0.000138"/>
</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-07T08:52:42.828493" elapsed="0.000029"/>
</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="FAIL" start="2026-04-07T08:52:42.810825" elapsed="0.017798">OSError: [Errno 16] Device or resource busy</status>
</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="NOT RUN" start="2026-04-07T08:52:42.828785" elapsed="0.000022"/>
</kw>
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>timeout=10s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="NOT RUN" start="2026-04-07T08:52:42.828946" elapsed="0.000021"/>
</kw>
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${pcc_prompt}</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="NOT RUN" start="2026-04-07T08:52:42.829099" elapsed="0.000020"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<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="NOT RUN" start="2026-04-07T08:52:42.829351" elapsed="0.000025"/>
</kw>
<kw name="Deploy_Test_Tool" owner="NexusKeywords">
<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="NOT RUN" start="2026-04-07T08:52:42.841236" elapsed="0.000036"/>
</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-07T08:52:42.841468" elapsed="0.000022"/>
</kw>
<doc>SSH login to pcc-mock VM, download latest pcc-mock executable from Nexus.</doc>
<status status="FAIL" start="2026-04-07T08:52:42.808285" elapsed="0.033311">OSError: [Errno 16] Device or resource busy</status>
</kw>
<status status="FAIL" start="2026-04-07T08:52:42.800232" elapsed="0.041454">OSError: [Errno 16] Device or resource busy</status>
</kw>
<status status="FAIL" start="2026-04-07T08:52:42.793976" elapsed="0.047797">OSError: [Errno 16] Device or resource busy</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-07T08:52:42.841854" elapsed="0.000664">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.842808" elapsed="0.000575">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.843799" elapsed="0.000639">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.844738" elapsed="0.000582">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.845664" elapsed="0.000483">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.846508" elapsed="0.000481">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.847186" elapsed="0.000542">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.847953" elapsed="0.000677">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.848906" elapsed="0.000583">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.849781" elapsed="0.000362">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.850446" elapsed="0.000441">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.851143" elapsed="0.000434">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.851831" elapsed="0.000502">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.852707" elapsed="0.000376">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.853304" elapsed="0.000352">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.853819" elapsed="0.000386">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.854370" elapsed="0.000362">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.854897" elapsed="0.000384">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.855451" elapsed="0.000357">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.855973" elapsed="0.000385">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.856522" elapsed="0.000365">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.857057" elapsed="0.000405">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.857626" elapsed="0.000358">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.858178" elapsed="0.000369">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.858716" elapsed="0.000411">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.859307" elapsed="0.000379">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.859848" elapsed="0.000348">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.860361" elapsed="0.000398">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.860922" elapsed="0.000475">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.861555" elapsed="0.000682">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.862401" elapsed="0.000362">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.862923" elapsed="0.000395">Parent suite setup failed:
OSError: [Errno 16] Device or resource busy</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-07T08:52:42.864220" elapsed="0.000135"/>
</kw>
<doc>Explicitly close all SSH connections.</doc>
<status status="PASS" start="2026-04-07T08:52:42.863940" elapsed="0.000475"/>
</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-07T08:52:42.255063" elapsed="0.609384">Suite setup failed:
OSError: [Errno 16] Device or resource busy</status>
</suite>
<status status="FAIL" start="2026-04-07T08:52:42.211707" elapsed="0.653740"/>
</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-07T08:52:42.485163" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/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-07T08:52:42.492263" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/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-07T08:52:42.513371" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/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-07T08:52:42.551870" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/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-07T08:52:42.673107" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-throughpcep-all-titanium/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>
