blob: eee37775280c79ace9c261a6f377601ec558ad61 [file] [log] [blame]
*** Settings ***
Documentation Test suite for checking the subscriber status after discovery
Suite Setup Setup
Test Template Subscriber Status Test
Library Collections
Library String
Library OperatingSystem
Library XML
Library RequestsLibrary
Library CORDRobot
Library ImportResource resources=CORDRobot
*** Variables ***
${PATHFILE} ${CURDIR}/data/Subscriber_TopDown.json
&{input_dict} mac_address=test ip_address=test2
&{status} status=test
${src_ip} X.X.X.X
${src_gateway} X.X.X.X
${src_user} user
${src_pass} pass
${dst_ip} X.X.X.X
${dst_user} user
${dst_pass} pass
${dst_gateway} X.X.X.X
${dst_host_ip} X.X.X.X
*** Test Cases *** TYPE LISTINDEX
Test Status Subscriber-1
STATUS 0
Change Subscriber status
STATUSCHANGE 0
Push MACandIP Subscriber-1
PUSH 0
*** Keywords ***
Setup
[Documentation] Read input file and send arping requests from host/dst to their gateways
Read InputFile
Run Keyword And Ignore Error Wait Until Keyword Succeeds 300s 5s Ping Gateway ${src_ip} ${src_user} ${src_pass} ${src_gateway}
Run Keyword And Ignore Error Wait Until Keyword Succeeds 300s 5s Ping Gateway ${dst_ip} ${dst_user} ${dst_pass} ${dst_gateway}
Read InputFile
${SubscriberList}= CORDRobot.jsonToList ${PATHFILE} SubscriberInfo
Set Suite Variable ${slist} ${SubscriberList}
Set Global Variable ${Subscriber_Id} ${EMPTY}
Set Global Variable ${status} ${EMPTY}
Subscriber Status Test
[Arguments] ${type} ${listIndex}
Run Keyword If "${type}" == "PUSH" Push MAC and IP For Subscriber ${listIndex}
Run Keyword If "${type}" == "STATUS" Wait Until Keyword Succeeds 60s 5s Subscriber Status Check ${listIndex}
Run Keyword If "${type}" == "STATUSCHANGE" Subscriber Status Change ${listIndex}
Subscriber Status Check
[Arguments] ${listIndex}
Set Global Variable ${Subscriber_Id} ${EMPTY}
Log ${Subscriber_Id}
${json_result}= CORDRobot.ApiGet VOLT_SUBSCRIBER
Log ${json_result}
${SubscriberList} = Get Variable Value ${slist}
${SubscriberDict}= CORDRobot.listToDict ${SubscriberList} ${listIndex}
Log ${SubscriberDict}
${onu_device}= CORDRobot.getFieldValueFromDict ${subscriberDict} onu_device
${json_result_list}= Get From dictionary ${json_result} items
${getJsonDict}= CORDRobot.getDictFromListOfDict ${json_result_list} onu_device ${onu_device}
${status}= Get From Dictionary ${getJsonDict} status
${Subscriber_Id}= Get From Dictionary ${getJsonDict} id
Set Global Variable ${Subscriber_Id}
Should Be Equal ${status} awaiting-auth
Wait Until Keyword Succeeds 60s 2s Test Ping ${ENABLE_STATUS} ${src_ip} ${src_user} ${src_pass} ${dst_host_ip}
#Set Global Variable ${Subscriber_Id}
Subscriber Status Change
[Arguments] ${listIndex}
${status}= Create Dictionary status=enabled
${api_result_status}= CORDRobot.ApiChameleonPut VOLT_SUBSCRIBER ${status} ${Subscriber_Id}
Should Be True ${api_result_status}
Wait Until Keyword Succeeds 60s 2s Test Ping ${ENABLE_STATUS} ${src_ip} ${src_user} ${src_pass} ${dst_host_ip}
Push MAC and IP For Subscriber
[Arguments] ${listIndex}
${SubscriberList} = Get Variable Value ${slist}
${SubscriberDict}= CORDRobot.listToDict ${SubscriberList} ${listIndex}
${mac_address}= CORDRobot.getFieldValueFromDict ${subscriberDict} mac_address
${ip_address}= CORDRobot.getFieldValueFromDict ${subscriberDict} ip_address
${input_dict}= Create Dictionary mac_address=${mac_address} ip_address=${ip_address}
${api_result_status}= CORDRobot.ApiChameleonPut VOLT_SUBSCRIBER ${input_dict} ${Subscriber_Id}
Should Be True ${api_result_status}
Wait Until Keyword Succeeds 60s 2s Test Ping ${MACIP_STATUS} ${src_ip} ${src_user} ${src_pass} ${dst_host_ip}
Ping Gateway
[Documentation] SSH's into a host and sends an arping to its gateway for host discovery
[Arguments] ${ip} ${user} ${pass} ${gateway} ${prompt}=$ ${prompt_timeout}=60s
${conn_id}= SSHLibrary.Open Connection ${ip} prompt=${prompt} timeout=${prompt_timeout}
SSHLibrary.Login ${user} ${pass}
SSHLibrary.Write sudo arping -c 1 ${gateway}
Read Until [sudo] password for ${user}:
SSHLibrary.Write ${pass}
${result}= Read Until ${prompt}
Should Not Contain ${result} 100% unanswered
Should Contain ${result} 0% unanswered
Log To Console \n ${result}
SSHLibrary.Close Connection