df43019be060112546b8ca05a897f8dc3c111a65
[osm/devops.git] / systest / Makefile
1 # Copyright 2017 Sandvine
2 # All Rights Reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License"); you may
5 # not use this file except in compliance with the License. You may obtain
6 # a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 # License for the specific language governing permissions and limitations
14 # under the License.
15
16 #
17 # These variables need to be defined in environment or passed in
18 # the make invocation.
19 # eg.
20 # export OSM_HOSTNAME=1.2.3.4:8008
21 # export OS_AUTH_URL=https://<keystoneserver>:5000/v2.0
22 # export OS_USERNAME=admin
23 # export OS_PASSWORD=admin
24 # export OS_PROJECT_NAME=admin
25 OSM_HOSTNAME ?=
26 OSM_RO_HOSTNAME ?=
27 OS_AUTH_URL ?=
28 OS_USERNAME ?=
29 OS_PASSWORD ?=
30 OS_PROJECT_NAME ?=
31 VIM_CONFIG ?=
32 VCD_AUTH_URL ?=
33 VCD_USERNAME ?=
34 VCD_PASSWORD ?=
35 VCD_TENANT_NAME ?=
36 VCD_ORGANIZATION ?=
37 VIM_EMU ?=
38
39 TOPDIR=$(shell readlink -f .|sed -e 's/systest.*//')
40
41 ifdef OS_AUTH_URL
42 OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL)
43 endif
44 ifdef OS_USERNAME
45 OPTION_OS_USERNAME=--os-username $(OS_USERNAME)
46 endif
47 ifdef OS_PASSWORD
48 OPTION_OS_PASSWORD=--os-password $(OS_PASSWORD)
49 endif
50 ifdef OS_PROJECT_NAME
51 OPTION_OS_PROJECT_NAME=--os-project-name $(OS_PROJECT_NAME)
52 endif
53
54 ifdef TEST_VNFD_DESCRIPTORS
55 OPTION_TEST_VNFD_DESCRIPTORS=--osm-vnfd-descriptor-packages $(TEST_VNFD_DESCRIPTORS)
56 endif
57 ifdef TEST_NSD_DESCRIPTORS
58 OPTION_TEST_NSD_DESCRIPTORS=--osm-nsd-descriptor-packages $(TEST_NSD_DESCRIPTORS)
59 endif
60 ifdef OSM_RO_HOSTNAME
61 OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_RO_HOSTNAME)
62 else
63 OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_HOSTNAME)
64 endif
65
66 ifdef VIM_CONFIG
67 OPTION_VIM_CONFIG=--vim-config "$(VIM_CONFIG)"
68 endif
69
70 ifdef VCD_AUTH_URL
71 OPTION_VCD_AUTH_URL=--vcd-url $(VCD_AUTH_URL)
72 endif
73 ifdef VCD_USERNAME
74 OPTION_VCD_USERNAME=--vcd-username $(VCD_USERNAME)
75 endif
76 ifdef VCD_PASSWORD
77 OPTION_VCD_PASSWORD=--vcd-password $(VCD_PASSWORD)
78 endif
79 ifdef VCD_TENANT_NAME
80 OPTION_VCD_TENANT_NAME=--vcd-tenant-name $(VCD_TENANT_NAME)
81 endif
82 ifdef VCD_ORGANIZATION
83 OPTION_VCD_ORGANIZATION=--vcd-org $(VCD_ORGANIZATION)
84 endif
85
86
87 DESCRIPTOR_DIR ?= $(TOPDIR)/descriptor-packages
88
89 #TODO: Need to re-add this once charm application name length issue is resolved
90 #TEST_OSM_NS_NAME_PREFIX=pytest-$(shell date +%D-%T)-
91 #OPTION_TEST_OSM_NS_NAME_PREFIX=--osm-ns-name-prefix $(TEST_OSM_NS_NAME_PREFIX)
92
93 JUNITXML_DIR = reports
94
95 JUNITXML ?= pytest-output.xml
96
97 PYTEST_OPTIONS=
98 Q=@
99
100 TEST_VNFD_DESCRIPTORS ?= None
101 TEST_NSD_DESCRIPTORS ?= None
102
103 .NOTPARALLEL:
104 all: smoke cirros ping_pong
105
106 define check_env_var
107 $(Q)if [ -z "$($(1))" ]; then echo "error: $(1) not set"; exit 1; fi
108 endef
109
110 check_OSM_HOSTNAME:
111 $(call check_env_var,OSM_HOSTNAME)
112
113 check_openstack_env:
114 $(call check_env_var,OS_AUTH_URL)
115 $(call check_env_var,OS_USERNAME)
116 $(call check_env_var,OS_PASSWORD)
117 $(call check_env_var,OS_PROJECT_NAME)
118
119 check_vcd_env:
120 $(call check_env_var,VCD_AUTH_URL)
121 $(call check_env_var,VCD_USERNAME)
122 $(call check_env_var,VCD_PASSWORD)
123 $(call check_env_var,VCD_TENANT_NAME)
124 $(call check_env_var,VCD_ORGANIZATION)
125
126 .PHONY: check_openstack_env check_vcd_env check_OSM_HOSTNAME
127
128 report_dir:
129 @mkdir -p reports
130
131 _run_test: report_dir
132 -$(Q)py.test \
133 --osmhost $(OSM_HOSTNAME) --sol005 \
134 $(OPTION_RO_HOSTNAME) \
135 $(OPTION_OS_AUTH_URL) \
136 $(OPTION_OS_USERNAME) \
137 $(OPTION_OS_PASSWORD) \
138 $(OPTION_VIM_CONFIG) \
139 $(OPTION_OS_PROJECT_NAME) \
140 $(OPTION_VCD_AUTH_URL) \
141 $(OPTION_VCD_USERNAME) \
142 $(OPTION_VCD_PASSWORD) \
143 $(OPTION_VCD_TENANT_NAME) \
144 $(OPTION_TEST_VNFD_DESCRIPTORS) \
145 $(OPTION_TEST_NSD_DESCRIPTORS) \
146 $(OPTION_DESCRIPTOR_BUILD_DIR) \
147 $(OPTION_TEST_OSM_NS_NAME_PREFIX) \
148 --junitxml $(JUNITXML_DIR)/$(JUNITXML) \
149 $(PYTEST_OPTIONS)
150
151 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/%.tar.gz:
152 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/cirros_vnf
153
154 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/%.tar.gz:
155 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/cirros_ns
156
157 images/cache/cirros-0.3.5-x86_64-disk.img:
158 $(Q)mkdir -p images/cache
159 $(Q)wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -O $@
160
161 images/cache/Fedora-x86_64-20-20131211.1-sda-ping.qcow2:
162 $(Q)mkdir -p images/cache
163 $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 -O $@
164
165 images/cache/Fedora-x86_64-20-20131211.1-sda-pong.qcow2:
166 $(Q)mkdir -p images/cache
167 $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2 -O $@
168
169 # images are prefixed with 'osm/' to separate osm uploaded images from VIM installed images
170 OSM_IMAGE_PREFIX ?=
171 sys_path ?= $(TOPDIR)systest
172
173 ifdef VIM_EMU
174 # VIM emulator does not need images pushed to glance.
175 else
176 ifdef OS_AUTH_URL
177 images/%.qcow2 images/%.img:
178 $(Q)openstack image show $(OSM_IMAGE_PREFIX)$(shell basename $@) || \
179 sh -c "make images/cache/$(shell basename $@) && openstack image create --file images/cache/$(shell basename $@) $(OSM_IMAGE_PREFIX)$(shell basename $@)"
180 endif
181 endif
182
183 ifdef VCD_AUTH_URL
184 images/%.img:
185 ovf_converter images/cache/$(OSM_IMAGE_PREFIX)$(shell basename $@) -n cirros
186 python $(TOPDIR)tools/vmware_ovf_upload.py $(VCD_AUTH_URL) $(VCD_USERNAME) $(VCD_PASSWORD) $(VCD_ORGANIZATION) $(sys_path)/images/cache/cirros.ovf
187 else
188 images/%.img:
189 echo "No method selected to upload image to VIM"
190 endif
191
192 %.openstack: check_openstack_env
193 $(Q)$(MAKE) $*
194
195 %.vcd: check_vcd_env
196 $(Q)$(MAKE) $*
197
198 cirros: check_OSM_HOSTNAME \
199 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
200 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
201 images/cirros-0.3.5-x86_64-disk.img
202 $(Q)$(MAKE) \
203 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
204 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
205 JUNITXML=pytest-$@.xml \
206 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
207
208 ns_scale: check_OSM_HOSTNAME \
209 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
210 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
211 images/cirros-0.3.5-x86_64-disk.img
212 $(Q)$(MAKE) \
213 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
214 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
215 JUNITXML=pytest-$@.xml \
216 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m ns_scale" _run_test
217
218 smoke: check_OSM_HOSTNAME \
219 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
220 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
221 $(Q)$(MAKE) \
222 JUNITXML=pytest-$@.xml \
223 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m smoke" _run_test \
224 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
225 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
226
227 vim: check_OSM_HOSTNAME check_openstack_env
228 $(Q)$(MAKE) \
229 JUNITXML=pytest-$@.xml \
230 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vim" _run_test
231
232 $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/%.tar.gz:
233 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/ping_vnf
234
235 $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/%.tar.gz:
236 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/pong_vnf
237
238 $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/%.tar.gz:
239 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/ping_pong_ns
240
241 ping_pong: check_OSM_HOSTNAME check_openstack_env \
242 $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz \
243 $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz \
244 $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
245 images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 \
246 images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2
247 $(Q)$(MAKE) \
248 TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz,$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \
249 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
250 JUNITXML=pytest-$@.xml \
251 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
252
253 stage_4_tests = cirros
254
255 openstack_stage_4: $(stage_4_tests)
256
257 .PHONY: report_dir cirros vim smoke ping_pong openstack_stage_4 stage_4_tests