blob: ae8515360bb23c98fe697f204a9a32b45a9ca6eb [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 ../Framework/utils/utils.py
Resource ../Framework/utils/utils.robot
Library ../Framework/restApi.py
*** 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}= utils.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}= restApi.ApiGet VOLT_SUBSCRIBER
Log ${json_result}
${SubscriberList} = Get Variable Value ${slist}
${SubscriberDict}= utils.listToDict ${SubscriberList} ${listIndex}
Log ${SubscriberDict}
${onu_device}= utils.getFieldValueFromDict ${subscriberDict} onu_device
${json_result_list}= Get From dictionary ${json_result} items
${getJsonDict}= utils.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}= restApi.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}= utils.listToDict ${SubscriberList} ${listIndex}
${mac_address}= utils.getFieldValueFromDict ${subscriberDict} mac_address
${ip_address}= utils.getFieldValueFromDict ${subscriberDict} ip_address
${input_dict}= Create Dictionary mac_address=${mac_address} ip_address=${ip_address}
${api_result_status}= restApi.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