2 Documentation PCEP functional HA testing with one pcep peer.
4 ... Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
6 ... This program and the accompanying materials are made available under the
7 ... terms of the Eclipse Public License v1.0 which accompanies this distbmution,
8 ... and is available at http://www.eclipse.org/legal/epl-v10.html
10 ... This suite uses PCC mock. It is configured to have 3 peers (all 3 nodes of odl).
11 ... PCEP implemented with singleton accepts only one incomming conection. PCC mock
12 ... logs will show that one peer will be connected and two will fail.
13 ... After killing karaf which owned connection new owner should be elected and
14 ... this new owner should accept incomming PCC connection.
15 ... TODO: Add similar keywords from all bgpclustering-ha tests into same libraries
17 Library SSHLibrary timeout=10s
19 Library OperatingSystem
20 Resource ../../../libraries/BGPcliKeywords.robot
21 Resource ../../../libraries/ClusterManagement.robot
22 Resource ../../../libraries/NexusKeywords.robot
23 Resource ../../../libraries/PcepOperations.robot
24 Resource ../../../libraries/SetupUtils.robot
25 Resource ../../../libraries/TemplatedRequests.robot
26 Resource ../../../variables/Variables.robot
28 Suite Setup Setup_Everything
29 Suite Teardown Teardown_Everything
30 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
31 Test Teardown SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
36 ${DIR_WITH_TEMPLATES} ${CURDIR}/../../../variables/bgpclustering/${ODL_STREAM}
37 ${PCC_LOG_FILE} pccmock.restart.log
38 ${CONFIG_SESSION} session
39 ${ERROR_ARGS} ${EMPTY}
43 Get_Example_Pcep_Owner
44 [Documentation] Find an odl node which is able to accept incomming connection.
45 ${pcep_owner} ${pcep_candidates}= Wait_Until_Keyword_Succeeds
48 ... ClusterManagement.Get_Owner_And_Successors_For_device
52 BuiltIn.Set Suite variable ${pcep_owner}
53 BuiltIn.Log ${pcep_owner}
54 BuiltIn.Set Suite variable ${pcep_candidates}
55 ${session}= ClusterManagement.Resolve_Http_Session_For_Member member_index=${pcep_owner}
56 BuiltIn.Set_Suite_Variable ${living_session} ${session}
57 BuiltIn.Log ${living_session}
58 BuiltIn.Set_Suite_Variable ${living_node} ${pcep_owner}
60 Verify_Data_Reported_1
61 [Documentation] Verifies if pcep-topology reported expected data
62 ... Expects pcep-topology not be empty/filled path-computation.
63 Pcep_Topology_Postcondition
65 Kill_Current_Owner_Member
66 [Documentation] Killing cluster node which is connected with pcc-mock.
67 ClusterManagement.Kill_Single_Member ${pcep_owner}
68 BuiltIn.Set Suite variable ${old_pcep_owner} ${pcep_owner}
69 BuiltIn.Set Suite variable ${old_pcep_candidates} ${pcep_candidates}
70 ${idx}= Collections.Get From List ${old_pcep_candidates} 0
71 ${session}= ClusterManagement.Resolve_Http_Session_For_Member member_index=${idx}
72 BuiltIn.Set_Suite_Variable ${living_session} ${session}
73 BuiltIn.Set_Suite_Variable ${living_node} ${idx}
76 [Documentation] Verifies if new owner of pcep-topology is elected.
77 BuiltIn.Wait_Until_Keyword_Succeeds
80 ... Verify_New_Pcep_Owner_Elected
84 Verify_Data_Reported_2
85 [Documentation] Verifies if pcep-topology reports expected data
86 ... Expects pcep-topology not be empty/filled path-computation.
87 Pcep_Topology_Postcondition
90 [Documentation] Starting stopped node
91 ClusterManagement.Start_Single_Member ${old_pcep_owner}
94 [Documentation] Verifies started node become candidate for pcep_topology
95 BuiltIn.Wait_Until_Keyword_Succeeds
98 ... Verify_New_Pcep_Candidate_Present
102 Verify_Data_Reported_3
103 [Documentation] Verifies if pcep-topology reported expected data
104 ... Expects pcep-topology not be empty/filled path-computation.
105 Pcep_Topology_Postcondition
108 [Documentation] Send ctrl+c to pcc-mock to stop it.
109 BGPcliKeywords.Stop_Console_Tool_And_Wait_Until_Prompt
114 [Documentation] Initial setup
115 SetupUtils.Setup_Utils_For_Setup_And_Teardown
116 ClusterManagement.ClusterManagement_Setup
117 NexusKeywords.Initialize_Artifact_Deployment_And_Usage
118 RequestsLibrary.Create_Session ${CONFIG_SESSION} http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH}
119 ${name}= NexusKeywords.Deploy_Test_Tool bgpcep pcep-pcc-mock
120 BuiltIn.Set_Suite_Variable ${filename} ${name}
121 #Setting Pcc Name and its code for mapping for templates
122 #TODO: Move variable definitions into PcepOperations setup after its update
123 BuiltIn.Set_Suite_Variable ${pcc_name} pcc_${TOOLS_SYSTEM_IP}_tunnel_1
124 ${code}= Evaluate binascii.b2a_base64('${pcc_name}')[:-1] modules=binascii
125 BuiltIn.Set_Suite_Variable ${pcc_name_code} ${code}
126 PcepOperations.Pcep_Topology_Precondition ${CONFIG_SESSION}
130 [Documentation] Suite cleanup
131 BGPcliKeywords.Store_File_To_Workspace ${PCC_LOG_FILE} ${PCC_LOG_FILE}
132 RequestsLibrary.Delete_All_Sessions
133 SSHLibrary.Close_All_Connections
136 [Documentation] Starts pcc mock
137 ${command}= BuiltIn.Set_Variable
138 ... -jar ${filename} --reconnect 1 --local-address ${TOOLS_SYSTEM_IP} --remote-address ${ODL_SYSTEM_1_IP}:4189,${ODL_SYSTEM_2_IP}:4189,${ODL_SYSTEM_3_IP}:4189 --log-level INFO 2>&1 | tee ${PCC_LOG_FILE}
139 BGPcliKeywords.Start_Java_Tool_And_Verify_Connection ${command} started
141 Pcep_Topology_Postcondition
142 [Documentation] Verifies if the tool reported expected data
143 &{mapping}= BuiltIn.Create_Dictionary
144 ... IP=${TOOLS_SYSTEM_IP}
145 ... CODE=${pcc_name_code}
147 ... IP_ODL=${ODL_SYSTEM_${pcep_owner}_IP}
148 ... ERRORS=${ERROR_ARGS}
149 BuiltIn.Wait_Until_Keyword_Succeeds
152 ... TemplatedRequests.Get_As_Json_Templated
153 ... ${DIR_WITH_TEMPLATES}${/}pcep_on_state
155 ... ${living_session}
158 Verify_New_Pcep_Owner_Elected
159 [Documentation] Verifies new owner was elected
160 [Arguments] ${old_owner} ${node_to_ask}
161 ${owner} ${candidates}= ClusterManagement.Get_Owner_And_Successors_For_device
165 BuiltIn.Should_Not_Be_Equal ${old_owner} ${owner}
166 BuiltIn.Set_Suite_Variable ${pcep_owner} ${owner}
168 Verify_New_Pcep_Candidate_Present
169 [Documentation] Verifies candidate's presence.
170 [Arguments] ${candidate} ${node_to_ask}
171 ${owner} ${candidates}= ClusterManagement.Get_Owner_And_Successors_For_device
175 Collections.Append_To_List ${candidates} ${owner}
176 BuiltIn.Should_Contain ${candidates} ${candidate}
177 BuiltIn.Set_Suite_Variable ${pcep_owner} ${owner}