... want to make the assumption that an SSH connection was already open.
... alternative TODO: Explain that it is not worth to perform separate SSH logins.
Library SSHLibrary
-Resource ${CURDIR}/RemoteBash.robot
+Library RequestsLibrary
+Resource RemoteBash.robot
+Resource ../variables/Variables.robot
*** Variables ***
${BGPSpeaker__OUTPUT_LOG} play.py.out
... so it can be dumped into the logs later, when stopping it. This also avoids polluting the
... output seen by "Read Until Prompt" with false propmpts so it won't stop prematurely
... leading to a spurious test failure, messy log content or other misbehavior.
- ${command} = BuiltIn.Set_Variable python play.py ${arguments} &> ${BGPSpeaker__OUTPUT_LOG}
+ ${command} = BuiltIn.Set_Variable python3 play.py ${arguments} &> ${BGPSpeaker__OUTPUT_LOG}
BuiltIn.Log ${command}
${output} = SSHLibrary.Write ${command}
+Start_BGP_Speaker_And_Verify_Connected
+ [Arguments] ${arguments} ${session} ${speaker_ip}=${TOOLS_SYSTEM_IP} ${connected}=${True}
+ [Documentation] Start the BGP speaker python utility, and verifies it's connection.
+ ... We can change connected variable to false to verify Speaker did not connect.
+ Start_BGP_Speaker ${arguments}
+ ${message} BuiltIn.Wait_Until_Keyword_Succeeds 5x 2s Verify_BGP_Speaker_Connection ${session} ${speaker_ip}
+ ... ${connected}
+ [Return] ${message}
+
+Verify_BGP_Speaker_Connection
+ [Arguments] ${session} ${ip} ${connected}=${True}
+ [Documentation] Verifies peer's presence in bgp rib.
+ ${exp_status_code} BuiltIn.Set_Variable_If ${connected} ${200} ${404}
+ ${url}= BuiltIn.Set_Variable ${REST_API}/bgp-rib:bgp-rib/rib=example-bgp-rib/peer=bgp:%2F%2F${ip}?content=nonconfig
+ ${response} RequestsLibrary.Get_Request ${session} ${url}
+ BuiltIn.Should_Be_Equal_As_Numbers ${exp_status_code} ${response.status_code}
+ [Return] ${response.content}
+
Start_BGP_Manager
[Arguments] ${arguments}
[Documentation] Start the BGP manager python utility. Redirect its error output to a log file.
- ${command}= BuiltIn.Set_Variable python play.py ${arguments} &> ${BGPSpeaker__OUTPUT_LOG}
+ ${command}= BuiltIn.Set_Variable python3 play.py ${arguments} &> ${BGPSpeaker__OUTPUT_LOG}
BuiltIn.Log ${command}
${output}= SSHLibrary.Write ${command}
BuiltIn.Return_From_Keyword_If '${status}' == 'PASS'
BuiltIn.Log ${message}
BuiltIn.Fail The prompt was not seen within timeout period.
+
+Kill_All_BGP_Speakers
+ [Documentation] Kill all play.py processes.
+ ${command}= BuiltIn.Set_Variable ps axf | grep play.py | grep -v grep | awk '{print \"kill -9 \" $1}' | sh
+ SSHLibrary.Write ${command}
+ ${output}= SSHLibrary.Read_Until_Prompt
+ BuiltIn.Log ${output}