Fix bgpcep-1node-userfeatures tests
[integration/test.git] / csit / libraries / BGPSpeaker.robot
index e5c5f7195930916e78cfff74e8fcd7ca02016419..ef2cfa5f1adf5af5ac9129be57cd82cc42d7ded9 100644 (file)
@@ -24,7 +24,9 @@ Documentation     Robot keyword library (Resource) for handling the BGP speaker
 ...               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
@@ -36,14 +38,32 @@ Start_BGP_Speaker
     ...    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}
 
@@ -66,3 +86,10 @@ Kill_BGP_Speaker
     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}