Update Robot Framework format - step 3
[integration/test.git] / csit / suites / bgpcep / bgpclustering / 060_pcep_ha_karaf_restart.robot
1 *** Settings ***
2 Documentation       PCEP functional HA testing with one pcep peer.
3 ...
4 ...                 Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
5 ...
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
9 ...
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
16
17 Library             SSHLibrary    timeout=10s
18 Library             Collections
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
27
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
32
33
34 *** Variables ***
35 ${HOLDTIME}                 180
36 ${DIR_WITH_TEMPLATES}       ${CURDIR}/../../../variables/bgpclustering/${ODL_STREAM}
37 ${PCC_LOG_FILE}             pccmock.restart.log
38 ${CONFIG_SESSION}           session
39 ${OLD_ERROR_ARGS}           \n"last-received-error": {},\n"last-sent-error": {},
40 ${NEW_ERROR_ARGS}           ${EMPTY}
41
42
43 *** Test Cases ***
44 Get_Example_Pcep_Owner
45     [Documentation]    Find an odl node which is able to accept incomming connection.
46     ${pcep_owner}    ${pcep_candidates}=    Wait_Until_Keyword_Succeeds
47     ...    5x
48     ...    2s
49     ...    ClusterManagement.Get_Owner_And_Successors_For_device
50     ...    pcep-topology
51     ...    Bgpcep
52     ...    1
53     BuiltIn.Set Suite variable    ${pcep_owner}
54     BuiltIn.Log    ${pcep_owner}
55     BuiltIn.Set Suite variable    ${pcep_candidates}
56     ${session}=    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${pcep_owner}
57     BuiltIn.Set_Suite_Variable    ${living_session}    ${session}
58     BuiltIn.Log    ${living_session}
59     BuiltIn.Set_Suite_Variable    ${living_node}    ${pcep_owner}
60
61 Verify_Data_Reported_1
62     [Documentation]    Verifies if pcep-topology reported expected data
63     ...    Expects pcep-topology not be empty/filled path-computation.
64     Pcep_Topology_Postcondition
65
66 Kill_Current_Owner_Member
67     [Documentation]    Killing cluster node which is connected with pcc-mock.
68     ClusterManagement.Kill_Single_Member    ${pcep_owner}
69     BuiltIn.Set Suite variable    ${old_pcep_owner}    ${pcep_owner}
70     BuiltIn.Set Suite variable    ${old_pcep_candidates}    ${pcep_candidates}
71     ${idx}=    Collections.Get From List    ${old_pcep_candidates}    0
72     ${session}=    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${idx}
73     BuiltIn.Set_Suite_Variable    ${living_session}    ${session}
74     BuiltIn.Set_Suite_Variable    ${living_node}    ${idx}
75
76 Verify_New_Pcep_Owner
77     [Documentation]    Verifies if new owner of pcep-topology is elected.
78     BuiltIn.Wait_Until_Keyword_Succeeds
79     ...    10x
80     ...    5s
81     ...    Verify_New_Pcep_Owner_Elected
82     ...    ${old_pcep_owner}
83     ...    ${living_node}
84
85 Verify_Data_Reported_2
86     [Documentation]    Verifies if pcep-topology reports expected data
87     ...    Expects pcep-topology not be empty/filled path-computation.
88     Pcep_Topology_Postcondition
89
90 Start_Stopped_Member
91     [Documentation]    Starting stopped node
92     ClusterManagement.Start_Single_Member    ${old_pcep_owner}
93
94 Verify_New_Candidate
95     [Documentation]    Verifies started node become candidate for pcep_topology
96     BuiltIn.Wait_Until_Keyword_Succeeds
97     ...    10x
98     ...    5s
99     ...    Verify_New_Pcep_Candidate_Present
100     ...    ${old_pcep_owner}
101     ...    ${living_node}
102
103 Verify_Data_Reported_3
104     [Documentation]    Verifies if pcep-topology reported expected data
105     ...    Expects pcep-topology not be empty/filled path-computation.
106     Pcep_Topology_Postcondition
107
108 Stop_Pcc_Mock
109     [Documentation]    Send ctrl+c to pcc-mock to stop it.
110     BGPcliKeywords.Stop_Console_Tool_And_Wait_Until_Prompt
111
112
113 *** Keywords ***
114 Setup_Everything
115     [Documentation]    Initial setup
116     SetupUtils.Setup_Utils_For_Setup_And_Teardown
117     ClusterManagement.ClusterManagement_Setup
118     NexusKeywords.Initialize_Artifact_Deployment_And_Usage
119     RequestsLibrary.Create_Session    ${CONFIG_SESSION}    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}
120     ${name}=    NexusKeywords.Deploy_Test_Tool    bgpcep    pcep-pcc-mock
121     BuiltIn.Set_Suite_Variable    ${filename}    ${name}
122     #Setting Pcc Name and its code for mapping for templates
123     #TODO: Move variable definitions into PcepOperations setup after its update
124     BuiltIn.Set_Suite_Variable    ${pcc_name}    pcc_${TOOLS_SYSTEM_IP}_tunnel_1
125     ${code}=    Evaluate    binascii.b2a_base64('${pcc_name}')[:-1]    modules=binascii
126     BuiltIn.Set_Suite_Variable    ${pcc_name_code}    ${code}
127     PcepOperations.Pcep_Topology_Precondition    ${CONFIG_SESSION}
128     ${ERROR_ARGS}=    CompareStream.Set_Variable_If_At_Least_Neon    ${NEW_ERROR_ARGS}    ${OLD_ERROR_ARGS}
129     BuiltIn.Set_Suite_Variable    ${ERROR_ARGS}
130     Start_Pcc_Mock
131
132 Teardown_Everything
133     [Documentation]    Suite cleanup
134     BGPcliKeywords.Store_File_To_Workspace    ${PCC_LOG_FILE}    ${PCC_LOG_FILE}
135     RequestsLibrary.Delete_All_Sessions
136     SSHLibrary.Close_All_Connections
137
138 Start_Pcc_Mock
139     [Documentation]    Starts pcc mock
140     ${command}=    BuiltIn.Set_Variable
141     ...    -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}
142     BGPcliKeywords.Start_Java_Tool_And_Verify_Connection    ${command}    started
143
144 Pcep_Topology_Postcondition
145     [Documentation]    Verifies if the tool reported expected data
146     &{mapping}=    BuiltIn.Create_Dictionary
147     ...    IP=${TOOLS_SYSTEM_IP}
148     ...    CODE=${pcc_name_code}
149     ...    NAME=${pcc_name}
150     ...    IP_ODL=${ODL_SYSTEM_${pcep_owner}_IP}
151     ...    ERRORS=${ERROR_ARGS}
152     BuiltIn.Wait_Until_Keyword_Succeeds
153     ...    10x
154     ...    5s
155     ...    TemplatedRequests.Get_As_Json_Templated
156     ...    ${DIR_WITH_TEMPLATES}${/}pcep_on_state
157     ...    ${mapping}
158     ...    ${living_session}
159     ...    verify=True
160
161 Verify_New_Pcep_Owner_Elected
162     [Documentation]    Verifies new owner was elected
163     [Arguments]    ${old_owner}    ${node_to_ask}
164     ${owner}    ${candidates}=    ClusterManagement.Get_Owner_And_Successors_For_device
165     ...    pcep-topology
166     ...    Bgpcep
167     ...    ${node_to_ask}
168     BuiltIn.Should_Not_Be_Equal    ${old_owner}    ${owner}
169     BuiltIn.Set_Suite_Variable    ${pcep_owner}    ${owner}
170
171 Verify_New_Pcep_Candidate_Present
172     [Documentation]    Verifies candidate's presence.
173     [Arguments]    ${candidate}    ${node_to_ask}
174     ${owner}    ${candidates}=    ClusterManagement.Get_Owner_And_Successors_For_device
175     ...    pcep-topology
176     ...    Bgpcep
177     ...    ${node_to_ask}
178     Collections.Append_To_List    ${candidates}    ${owner}
179     BuiltIn.Should_Contain    ${candidates}    ${candidate}
180     BuiltIn.Set_Suite_Variable    ${pcep_owner}    ${owner}