72b0249ac4ca5f88fc5ebfe52c1690fae8bed68f
[integration/test.git] / csit / suites / vpnservice / 020__configure_vpn.robot
1 *** Settings ***
2 Documentation       Test Suite for vpn instance
3
4 Library             OperatingSystem
5 Library             String
6 Library             RequestsLibrary
7 Variables           ../../variables/Variables.py
8 Library             Collections
9 Resource            CompareStream.robot
10
11 Suite Setup         Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
12 Suite Teardown      Delete All Sessions
13
14
15 *** Variables ***
16 ${REST_CON}             /restconf/config/
17 @{vpn_inst_values}      testVpn1    1000:1    1000:1,2000:1    3000:1,4000:1
18 @{vm_int_values}        s1-eth1    l2vlan    openflow:1:1
19 @{vm_vpnint_values}     s1-eth1    testVpn1    10.0.0.1    12:f8:57:a8:b9:a1
20 ${VPN_CONFIG_DIR}       ${CURDIR}/../../variables/vpnservice
21
22
23 *** Test Cases ***
24 Create VPN Instance
25     [Documentation]    Creates VPN Instance through restconf
26     [Tags]    post
27     ${body}    OperatingSystem.Get File    ${VPN_CONFIG_DIR}/vpn_instance.json
28     CompareStream.Run_Keyword_If_Less_Than_Magnesium
29     ...    ${resp}
30     ...    RequestsLibrary.Post Request
31     ...    session
32     ...    ${REST_CON}l3vpn:vpn-instances/
33     ...    data=${body}
34     CompareStream.Run_Keyword_If_At_Least_Magnesium
35     ...    ${resp}
36     ...    RequestsLibrary.Post Request
37     ...    session
38     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/
39     ...    data=${body}
40     Log    ${resp.content}
41     Should Be Equal As Strings    ${resp.status_code}    204
42
43 Verify VPN instance
44     [Documentation]    Verifies the vpn instance is created
45     [Tags]    get
46     CompareStream.Run_Keyword_If_Less_Than_Magnesium
47     ...    ${resp}
48     ...    RequestsLibrary.Get Request
49     ...    session
50     ...    ${REST_CON}l3vpn:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
51     ...    headers=${ACCEPT_XML}
52     CompareStream.Run_Keyword_If_At_Least_Magnesium
53     ...    ${resp}
54     ...    RequestsLibrary.Get Request
55     ...    session
56     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
57     ...    headers=${ACCEPT_XML}
58     Should Be Equal As Strings    ${resp.status_code}    200
59     Log    ${resp.content}
60     FOR    ${value}    IN    @{vpn_inst_values}
61         Should Contain    ${resp.content}    ${value}
62     END
63
64 Create ietf vm interface
65     [Documentation]    Creates ietf interface through the restconf
66     [Tags]    post
67     ${body}    OperatingSystem.Get File    ${VPN_CONFIG_DIR}/vm_interface.json
68     ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}ietf-interfaces:interfaces/    data=${body}
69     Should Be Equal As Strings    ${resp.status_code}    204
70
71 Verify ietf vm interface
72     [Documentation]    Verifies ietf interface created
73     [Tags]    get
74     ${resp}    RequestsLibrary.Get Request
75     ...    session
76     ...    ${REST_CON}ietf-interfaces:interfaces/interface/${vm_int_values[0]}/
77     ...    headers=${ACCEPT_XML}
78     Should Be Equal As Strings    ${resp.status_code}    200
79     Log    ${resp.content}
80     FOR    ${value}    IN    @{vm_int_values}
81         Should Contain    ${resp.content}    ${value}
82     END
83
84 Create VPN interface
85     [Documentation]    Creates vpn interface for the corresponding ietf interface
86     [Tags]    post
87     ${body}    OperatingSystem.Get File    ${VPN_CONFIG_DIR}/vm_vpninterface.json
88     CompareStream.Run_Keyword_If_Less_Than_Magnesium
89     ...    ${resp}
90     ...    RequestsLibrary.Post Request
91     ...    session
92     ...    ${REST_CON}l3vpn:vpn-interfaces/
93     ...    data=${body}
94     CompareStream.Run_Keyword_If_At_Least_Magnesium
95     ...    ${resp}
96     ...    RequestsLibrary.Post Request
97     ...    session
98     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/
99     ...    data=${body}
100     Should Be Equal As Strings    ${resp.status_code}    204
101
102 Verify VPN interface
103     [Documentation]    Verifies the vpn interface created
104     [Tags]    get
105     CompareStream.Run_Keyword_If_Less_Than_Magnesium
106     ...    ${resp}
107     ...    RequestsLibrary.Get Request
108     ...    session
109     ...    ${REST_CON}l3vpn:vpn-interfaces/
110     ...    headers=${ACCEPT_XML}
111     CompareStream.Run_Keyword_If_At_Least_Magnesium
112     ...    ${resp}
113     ...    RequestsLibrary.Get Request
114     ...    session
115     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/
116     ...    headers=${ACCEPT_XML}
117     Should Be Equal As Strings    ${resp.status_code}    200
118     Log    ${resp.content}
119     FOR    ${value}    IN    @{vm_vpnint_values}
120         Should Contain    ${resp.content}    ${value}
121     END
122
123 Verify FIB entry after create
124     [Documentation]    Verifies the fib entry for the corresponding vpn interface
125     [Tags]    get
126     Wait Until Keyword Succeeds    5s    1s    Ensure The Fib Entry Is Present    ${vm_vpnint_values[2]}
127
128 Delete vm vpn interface
129     [Documentation]    Deletes the vpn interface
130     [Tags]    delete
131     CompareStream.Run_Keyword_If_Less_Than_Magnesium
132     ...    ${resp}
133     ...    RequestsLibrary.Delete Request
134     ...    session
135     ...    ${REST_CON}l3vpn:vpn-interfaces/
136     CompareStream.Run_Keyword_If_At_Least_Magnesium
137     ...    ${resp}
138     ...    RequestsLibrary.Delete Request
139     ...    session
140     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/
141     Should Be Equal As Strings    ${resp.status_code}    200
142
143 Verify after deleteing vm vpn interface
144     [Documentation]    Verifies vpn interface after delete
145     [Tags]    verify after delete
146     CompareStream.Run_Keyword_If_Less_Than_Magnesium
147     ...    ${resp}
148     ...    RequestsLibrary.Get Request
149     ...    session
150     ...    ${REST_CON}l3vpn:vpn-interfaces/
151     ...    headers=${ACCEPT_XML}
152     CompareStream.Run_Keyword_If_At_Least_Magnesium
153     ...    ${resp}
154     ...    RequestsLibrary.Get Request
155     ...    session
156     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/
157     ...    headers=${ACCEPT_XML}
158     Should Be Equal As Strings    ${resp.status_code}    404
159
160 Delete VPN Instance
161     [Documentation]    Deletes the VPN Instance
162     [Tags]    delete
163     CompareStream.Run_Keyword_If_Less_Than_Magnesium
164     ...    ${resp}
165     ...    RequestsLibrary.Delete Request
166     ...    session
167     ...    ${REST_CON}l3vpn:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
168     CompareStream.Run_Keyword_If_At_Least_Magnesium
169     ...    ${resp}
170     ...    RequestsLibrary.Delete Requestt
171     ...    session
172     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
173     Should Be Equal As Strings    ${resp.status_code}    200
174
175 Verify after deleting the vpn instance
176     [Documentation]    Verifies after deleting the vpn instance
177     [Tags]    verfiy after delete
178     CompareStream.Run_Keyword_If_Less_Than_Magnesium
179     ...    ${resp}
180     ...    RequestsLibrary.Post Request
181     ...    session
182     ...    ${REST_CON}l3vpn:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
183     ...    headers=${ACCEPT_XML}
184     CompareStream.Run_Keyword_If_At_Least_Magnesium
185     ...    ${resp}
186     ...    RequestsLibrary.Post Request
187     ...    session
188     ...    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
189     ...    headers=${ACCEPT_XML}
190     Should Be Equal As Strings    ${resp.status_code}    404
191
192 Delete vm ietf interface
193     [Documentation]    Deletes the ietf interface
194     [Tags]    delete
195     ${resp}    RequestsLibrary.Delete Request
196     ...    session
197     ...    ${REST_CON}ietf-interfaces:interfaces/interface/${vm_int_values[0]}
198     Should Be Equal As Strings    ${resp.status_code}    200
199
200 Verify after deleting vm ietf interface
201     [Documentation]    Verifies ietf interface after delete
202     [Tags]    verify after delete
203     ${resp}    RequestsLibrary.Get Request
204     ...    session
205     ...    ${REST_CON}ietf-interfaces:interfaces/interface/${vm_int_values[0]}
206     ...    headers=${ACCEPT_XML}
207     Should Be Equal As Strings    ${resp.status_code}    404
208
209 Verify FIB entry after delete
210     [Documentation]    Verifies the fib entry is deleted for the corresponding vpn interface
211     [Tags]    get
212     Wait Until Keyword Succeeds    5s    1s    Ensure The Fib Entry Is Removed    ${vm_vpnint_values[2]}
213
214
215 *** Keywords ***
216 Ensure The Fib Entry Is Present
217     [Documentation]    Will succeed if the fib entry is present for the vpn
218     [Arguments]    ${prefix}
219     ${resp}    RequestsLibrary.Get Request
220     ...    session
221     ...    /restconf/operational/odl-fib:fibEntries/
222     ...    headers=${ACCEPT_XML}
223     Should Be Equal As Strings    ${resp.status_code}    200
224     Log    ${resp.content}
225     Should Contain    ${resp.content}    ${prefix}
226     Should Contain    ${resp.content}    label
227
228 Ensure the Fib Entry Is Removed
229     [Documentation]    Will succeed if the fib entry is removed for the vpn
230     [Arguments]    ${prefix}
231     ${resp}    RequestsLibrary.Get Request
232     ...    session
233     ...    /restconf/operational/odl-fib:fibEntries/
234     ...    headers=${ACCEPT_XML}
235     Should Be Equal As Strings    ${resp.status_code}    200
236     Should Not Contain    ${resp.content}    ${prefix}