blob: ae8515360bb23c98fe697f204a9a32b45a9ca6eb [file] [log] [blame]
Suchitra Vemuridfba40e2018-08-03 15:04:05 -07001*** Settings ***
2Documentation Test suite for checking the subscriber status after discovery
Suchitra Vemuri65556762018-08-22 13:52:38 -07003Suite Setup Setup
Suchitra Vemuridfba40e2018-08-03 15:04:05 -07004Test Template Subscriber Status Test
5Library Collections
6Library String
7Library OperatingSystem
8Library XML
9Library RequestsLibrary
10Library ../Framework/utils/utils.py
Suchitra Vemuri65556762018-08-22 13:52:38 -070011Resource ../Framework/utils/utils.robot
Suchitra Vemuridfba40e2018-08-03 15:04:05 -070012Library ../Framework/restApi.py
13
14*** Variables ***
15${PATHFILE} ${CURDIR}/data/Subscriber_TopDown.json
16&{input_dict} mac_address=test ip_address=test2
17&{status} status=test
Suchitra Vemuri65556762018-08-22 13:52:38 -070018${src_ip} X.X.X.X
19${src_gateway} X.X.X.X
20${src_user} user
21${src_pass} pass
22${dst_ip} X.X.X.X
23${dst_user} user
24${dst_pass} pass
25${dst_gateway} X.X.X.X
26${dst_host_ip} X.X.X.X
Suchitra Vemuridfba40e2018-08-03 15:04:05 -070027
28*** Test Cases *** TYPE LISTINDEX
29Test Status Subscriber-1
30 STATUS 0
31Change Subscriber status
32 STATUSCHANGE 0
33Push MACandIP Subscriber-1
34 PUSH 0
Suchitra Vemuridfba40e2018-08-03 15:04:05 -070035
36*** Keywords ***
Suchitra Vemuri65556762018-08-22 13:52:38 -070037Setup
38 [Documentation] Read input file and send arping requests from host/dst to their gateways
39 Read InputFile
40 Run Keyword And Ignore Error Wait Until Keyword Succeeds 300s 5s Ping Gateway ${src_ip} ${src_user} ${src_pass} ${src_gateway}
41 Run Keyword And Ignore Error Wait Until Keyword Succeeds 300s 5s Ping Gateway ${dst_ip} ${dst_user} ${dst_pass} ${dst_gateway}
42
Suchitra Vemuridfba40e2018-08-03 15:04:05 -070043Read InputFile
44 ${SubscriberList}= utils.jsonToList ${PATHFILE} SubscriberInfo
45 Set Suite Variable ${slist} ${SubscriberList}
46 Set Global Variable ${Subscriber_Id} ${EMPTY}
47 Set Global Variable ${status} ${EMPTY}
48
49Subscriber Status Test
50 [Arguments] ${type} ${listIndex}
51 Run Keyword If "${type}" == "PUSH" Push MAC and IP For Subscriber ${listIndex}
Suchitra Vemuri65556762018-08-22 13:52:38 -070052 Run Keyword If "${type}" == "STATUS" Wait Until Keyword Succeeds 60s 5s Subscriber Status Check ${listIndex}
Suchitra Vemuridfba40e2018-08-03 15:04:05 -070053 Run Keyword If "${type}" == "STATUSCHANGE" Subscriber Status Change ${listIndex}
54
55Subscriber Status Check
56 [Arguments] ${listIndex}
57 Set Global Variable ${Subscriber_Id} ${EMPTY}
58 Log ${Subscriber_Id}
59 ${json_result}= restApi.ApiGet VOLT_SUBSCRIBER
60 Log ${json_result}
61 ${SubscriberList} = Get Variable Value ${slist}
62 ${SubscriberDict}= utils.listToDict ${SubscriberList} ${listIndex}
63 Log ${SubscriberDict}
64 ${onu_device}= utils.getFieldValueFromDict ${subscriberDict} onu_device
65 ${json_result_list}= Get From dictionary ${json_result} items
66 ${getJsonDict}= utils.getDictFromListOfDict ${json_result_list} onu_device ${onu_device}
67 ${status}= Get From Dictionary ${getJsonDict} status
68 ${Subscriber_Id}= Get From Dictionary ${getJsonDict} id
69 Set Global Variable ${Subscriber_Id}
Suchitra Vemuri65556762018-08-22 13:52:38 -070070 Should Be Equal ${status} awaiting-auth
71 Wait Until Keyword Succeeds 60s 2s Test Ping ${ENABLE_STATUS} ${src_ip} ${src_user} ${src_pass} ${dst_host_ip}
Suchitra Vemuridfba40e2018-08-03 15:04:05 -070072 #Set Global Variable ${Subscriber_Id}
73
74Subscriber Status Change
75 [Arguments] ${listIndex}
76 ${status}= Create Dictionary status=enabled
77 ${api_result_status}= restApi.ApiChameleonPut VOLT_SUBSCRIBER ${status} ${Subscriber_Id}
78 Should Be True ${api_result_status}
Suchitra Vemuri65556762018-08-22 13:52:38 -070079 Wait Until Keyword Succeeds 60s 2s Test Ping ${ENABLE_STATUS} ${src_ip} ${src_user} ${src_pass} ${dst_host_ip}
Suchitra Vemuridfba40e2018-08-03 15:04:05 -070080
81Push MAC and IP For Subscriber
82 [Arguments] ${listIndex}
83 ${SubscriberList} = Get Variable Value ${slist}
84 ${SubscriberDict}= utils.listToDict ${SubscriberList} ${listIndex}
85 ${mac_address}= utils.getFieldValueFromDict ${subscriberDict} mac_address
86 ${ip_address}= utils.getFieldValueFromDict ${subscriberDict} ip_address
87 ${input_dict}= Create Dictionary mac_address=${mac_address} ip_address=${ip_address}
88 ${api_result_status}= restApi.ApiChameleonPut VOLT_SUBSCRIBER ${input_dict} ${Subscriber_Id}
89 Should Be True ${api_result_status}
Suchitra Vemuri65556762018-08-22 13:52:38 -070090 Wait Until Keyword Succeeds 60s 2s Test Ping ${MACIP_STATUS} ${src_ip} ${src_user} ${src_pass} ${dst_host_ip}
91
92Ping Gateway
93 [Documentation] SSH's into a host and sends an arping to its gateway for host discovery
94 [Arguments] ${ip} ${user} ${pass} ${gateway} ${prompt}=$ ${prompt_timeout}=60s
95 ${conn_id}= SSHLibrary.Open Connection ${ip} prompt=${prompt} timeout=${prompt_timeout}
96 SSHLibrary.Login ${user} ${pass}
97 SSHLibrary.Write sudo arping -c 1 ${gateway}
98 Read Until [sudo] password for ${user}:
99 SSHLibrary.Write ${pass}
100 ${result}= Read Until ${prompt}
101 Should Not Contain ${result} 100% unanswered
102 Should Contain ${result} 0% unanswered
103 Log To Console \n ${result}
104 SSHLibrary.Close Connection