Add RESTful APIs into Dovetail container
[dovetail.git] / docs / testing / user / testspecification / vping / index.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. (c) Ericsson AB
4
5 ========================
6 Vping test specification
7 ========================
8
9 .. toctree::
10    :maxdepth: 2
11
12 Scope
13 =====
14
15 The vping test area evaluates basic NFVi capabilities of the system under test.
16 These capabilities include creating a small number of virtual machines,
17 establishing basic L3 connectivity between them and verifying connectivity by
18 means of ICMP packets.
19
20
21 References
22 ==========
23
24 - OpenStack Shade
25
26   - https://docs.openstack.org/shade/latest/user/index.html
27
28 - SSHClient
29
30   - http://docs.paramiko.org/en/2.2/
31
32 - SCPClient
33
34   - https://pypi.python.org/pypi/scp
35
36
37 Definitions and abbreviations
38 =============================
39
40 The following terms and abbreviations are used in conjunction with this test
41 area
42
43 - ICMP - Internet Control Message Protocol
44 - L3 - Layer 3
45 - NFVi - Network functions virtualization infrastructure
46 - SCP - Secure Copy
47 - SSH - Secure Shell
48 - VM - Virtual machine
49
50
51 System Under Test (SUT)
52 =======================
53
54 The system under test is assumed to be the NFVi and VIM in operation on a
55 Pharos compliant infrastructure.
56
57
58 Test Area Structure
59 ===================
60
61 The test area is structured in two separate tests which are executed
62 sequentially. The order of the tests is arbitrary as there are no dependencies
63 across the tests.
64
65
66 Test Descriptions
67 =================
68
69 --------------------------------------------------------------------
70 Test Case 1 - vPing using userdata provided by nova metadata service
71 --------------------------------------------------------------------
72
73 Short name
74 ----------
75
76 dovetail.vping.userdata
77
78
79 Use case specification
80 ----------------------
81
82 This test evaluates the use case where an NFVi tenant boots up two VMs and
83 requires L3 connectivity between those VMs. The target IP is passed to the VM
84 that will initiate pings by using a custom userdata script provided by nova metadata service.
85
86
87 Test preconditions
88 ------------------
89
90 At least one compute node is available. No further pre-configuration needed.
91
92
93 Basic test flow execution description and pass/fail criteria
94 ------------------------------------------------------------
95
96 Methodology for verifying connectivity
97 ''''''''''''''''''''''''''''''''''''''
98
99 Connectivity between VMs is tested by sending ICMP ping packets between
100 selected VMs. The target IP is passed to the VM sending pings by using a
101 custom userdata script by means of the config driver mechanism provided by
102 Nova metadata service. Whether or not a ping was successful is determined by
103 checking the console output of the source VMs.
104
105
106 Test execution
107 ''''''''''''''
108
109 * Test action 1:
110     * Create a private tenant network by using neutron client
111     * Create one subnet and one router in the network by neutron client
112     * Add one interface between the subnet and router
113     * Add one gateway route to the router by neutron client
114     * Store the network id in the response
115 * **Test assertion 1:** The network id, subnet id and router id can be found in the response
116 * Test action 2:
117     * Create an security group by using neutron client
118     * Store the security group id parameter in the response
119 * **Test assertion 2:** The security group id can be found in the response
120 * Test action 3: boot VM1 by using nova client with configured name, image, flavor, private tenant
121   network created in test action 1, security group created in test action 2
122 * **Test assertion 3:** The VM1 object can be found in the response
123 * Test action 4: Generate ping script with the IP of VM1 to be passed as userdata provided by
124   the **nova metadata service**.
125 * Test action 5: Boot VM2 by using nova client with configured name, image, flavor, private tenant
126   network created in test action 1, security group created in test action 2, userdata created
127   in test action 4
128 * **Test assertion 4:** The VM2 object can be found in the response
129 * Test action 6: Inside VM2, the ping script is executed automatically when booted and it contains a
130   loop doing the ping until the return code is 0 or timeout reached. For each ping, when the return
131   code is 0, "vPing OK" is printed in the VM2 console-log, otherwise, "vPing KO" is printed.
132   Monitoring the console-log of VM2 to see the response generated by the script.
133 * **Test assertion 5:** "vPing OK" is detected, when monitoring the console-log in VM2
134 * Test action 7: delete VM1, VM2
135 * **Test assertion 6:** VM1 and VM2 are not present in the VM list
136 * Test action 8: delete security group, gateway, interface, router, subnet and network
137 * **Test assertion 7:** The security group, gateway, interface, router, subnet and network are
138   no longer present in the lists after deleting
139
140
141 Pass / fail criteria
142 ''''''''''''''''''''
143
144 This test evaluates basic NFVi capabilities of the system under test.
145 Specifically, the test verifies that:
146
147 * Neutron client network, subnet, router, interface create commands return valid "id" parameters
148   which are shown in the create response message
149 * Neutron client interface add command to add between subnet and router returns success code
150 * Neutron client gateway add command to add to router returns success code
151 * Neutron client security group create command returns valid "id" parameter which is shown in
152   the response message
153 * Nova client VM create command returns valid VM attributes response message
154 * Nova metadata server can transfer userdata configuration at nova client VM booting time
155 * Ping command from one VM to the other in same private tenant network returns valid code
156 * All items created using neutron client or nova client create commands are able to be removed by
157   using the returned identifiers
158
159 In order to pass this test, all test assertions listed in the test execution
160 above need to pass.
161
162
163 Post conditions
164 ---------------
165
166 None
167
168
169 ----------------------------------------------
170 Test Case 2 - vPing using SSH to a floating IP
171 ----------------------------------------------
172
173 Short name
174 ----------
175
176 dovetail.vping.ssh
177
178
179 Use case specification
180 ----------------------
181
182 This test evaluates the use case where an NFVi tenant boots up two VMs and requires
183 L3 connectivity between those VMs. An SSH connection is establised from the host to
184 a floating IP associated with VM2 and ``ping`` is executed on VM2 with the IP of VM1 as target.
185
186
187 Test preconditions
188 ------------------
189
190 At least one compute node is available. There should exist an OpenStack external network
191 and can assign floating IP.
192
193
194 Basic test flow execution description and pass/fail criteria
195 ------------------------------------------------------------
196
197 Methodology for verifying connectivity
198 ''''''''''''''''''''''''''''''''''''''
199
200 Connectivity between VMs is tested by sending ICMP ping packets between
201 selected VMs. To this end, the test establishes an SSH connection from the host
202 running the test suite to a floating IP associated with VM2 and executes ``ping``
203 on VM2 with the IP of VM1 as target.
204
205
206 Test execution
207 ''''''''''''''
208
209
210 * Test action 1:
211     * Create a private tenant network by neutron client
212     * Create one subnet and one router are created in the network by using neutron client
213     * Create one interface between the subnet and router
214     * Add one gateway route to the router by neutron client
215     * Store the network id in the response
216 * **Test assertion 1:** The network id, subnet id and router id can be found in the response
217 * Test action 2:
218     * Create an security group by using neutron client
219     * Store the security group id parameter in the response
220 * **Test assertion 2:** The security group id can be found in the response
221 * Test action 3: Boot VM1 by using nova client with configured name, image, flavor, private tenant
222   network created in test action 1, security group created in test action 2
223 * **Test assertion 3:** The VM1 object can be found in the response
224 * Test action 4: Boot VM2 by using nova client with configured name, image, flavor, private tenant
225   network created in test action 1, security group created in test action 2
226 * **Test assertion 4:** The VM2 object can be found in the response
227 * Test action 5: create one floating IP by using neutron client, storing the floating IP address
228   returned in the response
229 * **Test assertion 5:** Floating IP address can be found in the response
230 * Test action 6: Assign the floating IP address created in test action 5 to VM2 by using nova client
231 * **Test assertion 6:** The assigned floating IP can be found in the VM2 console log file
232 * Test action 7: Establish SSH connection between the test host and VM2 through the floating IP
233 * **Test assertion 7:** SSH connection between the test host and VM2 is established within
234   300 seconds
235 * Test action 8: Copy the Ping script from the test host to VM2 by using SCPClient
236 * **Test assertion 8:** The Ping script can be found inside VM2
237 * Test action 9: Inside VM2, to execute the Ping script to ping VM1, the Ping script contains a
238   loop doing the ping until the return code is 0 or timeout reached, for each ping, when the return
239   code is 0, "vPing OK" is printed in the VM2 console-log, otherwise, "vPing KO" is printed.
240   Monitoring the console-log of VM2 to see the response generated by the script.
241 * **Test assertion 9:** "vPing OK" is detected, when monitoring the console-log in VM2
242 * Test action 10: delete VM1, VM2
243 * **Test assertion 10:** VM1 and VM2 are not present in the VM list
244 * Test action 11: delete floating IP, security group, gateway, interface, router, subnet and network
245 * **Test assertion 11:** The security group, gateway, interface, router, subnet and network are
246   no longer present in the lists after deleting
247
248 Pass / fail criteria
249 ''''''''''''''''''''
250
251 This test evaluates basic NFVi capabilities of the system under test.
252 Specifically, the test verifies that:
253
254 * Neutron client network, subnet, router, interface create commands return valid "id" parameters
255   which are shown in the create response message
256 * Neutron client interface add command to add between subnet and router return success code
257 * Neutron client gateway add command to add to router return success code
258 * Neutron client security group create command returns valid "id" parameter which is shown in the
259   response message
260 * Nova client VM create command returns valid VM attributes response message
261 * Neutron client floating IP create command return valid floating IP address
262 * Nova client add floating IP command returns valid response message
263 * SSH connection can be established using a floating IP
264 * Ping command from one VM to another in same private tenant network returns valid code
265 * All items created using neutron client or nova client create commands are able to be removed by
266   using the returned identifiers
267
268 In order to pass this test, all test assertions listed in the test execution
269 above need to pass.
270
271
272 Post conditions
273 ---------------
274
275 None