blob: a5b63039a293098e540ddbf15df40235f81a1d0f [file] [log] [blame]
Mike Marchetti08f04282017-05-04 16:43:09 -04001# 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
Mike Marchetti6930bc02017-05-31 16:33:02 -040021# export OS_AUTH_URL=https://<keystoneserver>:5000/v2.0
Mike Marchetti08f04282017-05-04 16:43:09 -040022# export OS_USERNAME=admin
23# export OS_PASSWORD=admin
24# export OS_PROJECT_NAME=admin
25OSM_HOSTNAME ?=
Mike Marchettif94dd8a2017-11-06 11:04:38 -050026OSM_RO_HOSTNAME ?=
Mike Marchetti6930bc02017-05-31 16:33:02 -040027OS_AUTH_URL ?=
Mike Marchetti08f04282017-05-04 16:43:09 -040028OS_USERNAME ?=
Mike Marchettiaa245142018-08-17 13:54:21 -040029OS_PASSWORD ?=
Mike Marchetti08f04282017-05-04 16:43:09 -040030OS_PROJECT_NAME ?=
Mike Marchettif94dd8a2017-11-06 11:04:38 -050031VIM_CONFIG ?=
kasar12aa2cf2018-02-02 02:51:07 -080032VCD_AUTH_URL ?=
33VCD_USERNAME ?=
34VCD_PASSWORD ?=
35VCD_TENANT_NAME ?=
36VCD_ORGANIZATION ?=
Mike Marchettiaa245142018-08-17 13:54:21 -040037VIM_EMU ?=
Mike Marchetti08f04282017-05-04 16:43:09 -040038
Mike Marchettib884a462017-10-05 13:28:33 -040039TOPDIR=$(shell readlink -f .|sed -e 's/systest.*//')
40
Michael Marchettida7fd072018-11-01 18:43:52 +000041
Mike Marchetti6930bc02017-05-31 16:33:02 -040042ifdef OS_AUTH_URL
43 OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL)
Mike Marchetti08f04282017-05-04 16:43:09 -040044endif
45ifdef OS_USERNAME
46 OPTION_OS_USERNAME=--os-username $(OS_USERNAME)
47endif
48ifdef OS_PASSWORD
49 OPTION_OS_PASSWORD=--os-password $(OS_PASSWORD)
50endif
51ifdef OS_PROJECT_NAME
52 OPTION_OS_PROJECT_NAME=--os-project-name $(OS_PROJECT_NAME)
53endif
54
55ifdef TEST_VNFD_DESCRIPTORS
56 OPTION_TEST_VNFD_DESCRIPTORS=--osm-vnfd-descriptor-packages $(TEST_VNFD_DESCRIPTORS)
57endif
58ifdef TEST_NSD_DESCRIPTORS
59 OPTION_TEST_NSD_DESCRIPTORS=--osm-nsd-descriptor-packages $(TEST_NSD_DESCRIPTORS)
60endif
Mike Marchettif94dd8a2017-11-06 11:04:38 -050061ifdef OSM_RO_HOSTNAME
62 OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_RO_HOSTNAME)
63else
64 OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_HOSTNAME)
65endif
66
67ifdef VIM_CONFIG
68 OPTION_VIM_CONFIG=--vim-config "$(VIM_CONFIG)"
Mike Marchettif94dd8a2017-11-06 11:04:38 -050069endif
Mike Marchetti08f04282017-05-04 16:43:09 -040070
kasar12aa2cf2018-02-02 02:51:07 -080071ifdef VCD_AUTH_URL
72 OPTION_VCD_AUTH_URL=--vcd-url $(VCD_AUTH_URL)
73endif
74ifdef VCD_USERNAME
75 OPTION_VCD_USERNAME=--vcd-username $(VCD_USERNAME)
76endif
77ifdef VCD_PASSWORD
78 OPTION_VCD_PASSWORD=--vcd-password $(VCD_PASSWORD)
79endif
80ifdef VCD_TENANT_NAME
81 OPTION_VCD_TENANT_NAME=--vcd-tenant-name $(VCD_TENANT_NAME)
82endif
83ifdef VCD_ORGANIZATION
84 OPTION_VCD_ORGANIZATION=--vcd-org $(VCD_ORGANIZATION)
85endif
86
87
Mike Marchettib884a462017-10-05 13:28:33 -040088DESCRIPTOR_DIR ?= $(TOPDIR)/descriptor-packages
Mike Marchetti08f04282017-05-04 16:43:09 -040089
Mike Marchettif94dd8a2017-11-06 11:04:38 -050090#TODO: Need to re-add this once charm application name length issue is resolved
91#TEST_OSM_NS_NAME_PREFIX=pytest-$(shell date +%D-%T)-
92#OPTION_TEST_OSM_NS_NAME_PREFIX=--osm-ns-name-prefix $(TEST_OSM_NS_NAME_PREFIX)
Mike Marchetti08f04282017-05-04 16:43:09 -040093
94JUNITXML_DIR = reports
95
96JUNITXML ?= pytest-output.xml
97
98PYTEST_OPTIONS=
99Q=@
100
Mike Marchetti08f04282017-05-04 16:43:09 -0400101TEST_VNFD_DESCRIPTORS ?= None
102TEST_NSD_DESCRIPTORS ?= None
103
104.NOTPARALLEL:
105all: smoke cirros ping_pong
106
107define check_env_var
108 $(Q)if [ -z "$($(1))" ]; then echo "error: $(1) not set"; exit 1; fi
109endef
110
111check_OSM_HOSTNAME:
112 $(call check_env_var,OSM_HOSTNAME)
113
114check_openstack_env:
Mike Marchetti6930bc02017-05-31 16:33:02 -0400115 $(call check_env_var,OS_AUTH_URL)
Mike Marchetti08f04282017-05-04 16:43:09 -0400116 $(call check_env_var,OS_USERNAME)
117 $(call check_env_var,OS_PASSWORD)
118 $(call check_env_var,OS_PROJECT_NAME)
119
kasar12aa2cf2018-02-02 02:51:07 -0800120check_vcd_env:
121 $(call check_env_var,VCD_AUTH_URL)
122 $(call check_env_var,VCD_USERNAME)
123 $(call check_env_var,VCD_PASSWORD)
124 $(call check_env_var,VCD_TENANT_NAME)
125 $(call check_env_var,VCD_ORGANIZATION)
126
127.PHONY: check_openstack_env check_vcd_env check_OSM_HOSTNAME
Mike Marchetti08f04282017-05-04 16:43:09 -0400128
Mike Marchetti08f04282017-05-04 16:43:09 -0400129report_dir:
130 @mkdir -p reports
131
Mike Marchetti6930bc02017-05-31 16:33:02 -0400132_run_test: report_dir
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500133 -$(Q)py.test \
Mike Marchettidbada222018-08-14 12:13:48 -0400134 --osmhost $(OSM_HOSTNAME) --sol005 \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500135 $(OPTION_RO_HOSTNAME) \
Mike Marchetti6930bc02017-05-31 16:33:02 -0400136 $(OPTION_OS_AUTH_URL) \
Mike Marchetti08f04282017-05-04 16:43:09 -0400137 $(OPTION_OS_USERNAME) \
138 $(OPTION_OS_PASSWORD) \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500139 $(OPTION_VIM_CONFIG) \
Mike Marchetti08f04282017-05-04 16:43:09 -0400140 $(OPTION_OS_PROJECT_NAME) \
kasar12aa2cf2018-02-02 02:51:07 -0800141 $(OPTION_VCD_AUTH_URL) \
142 $(OPTION_VCD_USERNAME) \
143 $(OPTION_VCD_PASSWORD) \
144 $(OPTION_VCD_TENANT_NAME) \
Mike Marchetti08f04282017-05-04 16:43:09 -0400145 $(OPTION_TEST_VNFD_DESCRIPTORS) \
146 $(OPTION_TEST_NSD_DESCRIPTORS) \
147 $(OPTION_DESCRIPTOR_BUILD_DIR) \
148 $(OPTION_TEST_OSM_NS_NAME_PREFIX) \
149 --junitxml $(JUNITXML_DIR)/$(JUNITXML) \
150 $(PYTEST_OPTIONS)
151
Mike Marchettib884a462017-10-05 13:28:33 -0400152$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/%.tar.gz:
153 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/cirros_vnf
154
155$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/%.tar.gz:
156 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/cirros_ns
157
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500158images/cache/cirros-0.3.5-x86_64-disk.img:
159 $(Q)mkdir -p images/cache
160 $(Q)wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -O $@
161
162images/cache/Fedora-x86_64-20-20131211.1-sda-ping.qcow2:
163 $(Q)mkdir -p images/cache
164 $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 -O $@
165
166images/cache/Fedora-x86_64-20-20131211.1-sda-pong.qcow2:
167 $(Q)mkdir -p images/cache
168 $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2 -O $@
169
170# images are prefixed with 'osm/' to separate osm uploaded images from VIM installed images
171OSM_IMAGE_PREFIX ?=
kasar12aa2cf2018-02-02 02:51:07 -0800172sys_path ?= $(TOPDIR)systest
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500173
Mike Marchettiaa245142018-08-17 13:54:21 -0400174ifdef VIM_EMU
175# VIM emulator does not need images pushed to glance.
176else
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500177ifdef OS_AUTH_URL
178images/%.qcow2 images/%.img:
179 $(Q)openstack image show $(OSM_IMAGE_PREFIX)$(shell basename $@) || \
180 sh -c "make images/cache/$(shell basename $@) && openstack image create --file images/cache/$(shell basename $@) $(OSM_IMAGE_PREFIX)$(shell basename $@)"
kasar12aa2cf2018-02-02 02:51:07 -0800181endif
Mike Marchettiaa245142018-08-17 13:54:21 -0400182endif
183
kasar12aa2cf2018-02-02 02:51:07 -0800184ifdef VCD_AUTH_URL
185images/%.img:
186 ovf_converter images/cache/$(OSM_IMAGE_PREFIX)$(shell basename $@) -n cirros
187 python $(TOPDIR)tools/vmware_ovf_upload.py $(VCD_AUTH_URL) $(VCD_USERNAME) $(VCD_PASSWORD) $(VCD_ORGANIZATION) $(sys_path)/images/cache/cirros.ovf
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500188else
189images/%.img:
190 echo "No method selected to upload image to VIM"
191endif
192
Mike Marchetti7dd7e172018-03-28 14:28:21 -0400193%.openstack: check_openstack_env
194 $(Q)$(MAKE) $*
195
kasara4347782018-11-01 04:30:50 -0700196%.vcd: check_vcd_env
Mike Marchetti7dd7e172018-03-28 14:28:21 -0400197 $(Q)$(MAKE) $*
198
199cirros: check_OSM_HOSTNAME \
Mike Marchettib884a462017-10-05 13:28:33 -0400200 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500201 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
202 images/cirros-0.3.5-x86_64-disk.img
Mike Marchetti08f04282017-05-04 16:43:09 -0400203 $(Q)$(MAKE) \
Mike Marchettib884a462017-10-05 13:28:33 -0400204 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
205 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
Mike Marchetti08f04282017-05-04 16:43:09 -0400206 JUNITXML=pytest-$@.xml \
207 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
208
Mike Marchetti7dd7e172018-03-28 14:28:21 -0400209ns_scale: check_OSM_HOSTNAME \
Mike Marchettib884a462017-10-05 13:28:33 -0400210 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500211 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
212 images/cirros-0.3.5-x86_64-disk.img
Mike Marchetti6228f562017-06-15 14:51:27 -0400213 $(Q)$(MAKE) \
Mike Marchettib884a462017-10-05 13:28:33 -0400214 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
215 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
Mike Marchetti6228f562017-06-15 14:51:27 -0400216 JUNITXML=pytest-$@.xml \
217 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m ns_scale" _run_test
218
Mike Marchettiae7f5f32017-11-17 10:31:43 -0500219smoke: check_OSM_HOSTNAME \
220 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
221 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
Mike Marchetti08f04282017-05-04 16:43:09 -0400222 $(Q)$(MAKE) \
223 JUNITXML=pytest-$@.xml \
Mike Marchettiae7f5f32017-11-17 10:31:43 -0500224 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m smoke" _run_test \
225 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
226 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
Mike Marchetti08f04282017-05-04 16:43:09 -0400227
228vim: check_OSM_HOSTNAME check_openstack_env
229 $(Q)$(MAKE) \
230 JUNITXML=pytest-$@.xml \
231 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vim" _run_test
232
Mike Marchettib884a462017-10-05 13:28:33 -0400233$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/%.tar.gz:
234 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/ping_vnf
235
236$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/%.tar.gz:
237 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/pong_vnf
238
Mike Marchetti2cea6a02017-10-13 13:58:54 -0400239$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/%.tar.gz:
Mike Marchettib884a462017-10-05 13:28:33 -0400240 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/ping_pong_ns
241
Mike Marchetti2cea6a02017-10-13 13:58:54 -0400242ping_pong: check_OSM_HOSTNAME check_openstack_env \
243 $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz \
244 $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500245 $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
246 images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 \
247 images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2
Mike Marchetti08f04282017-05-04 16:43:09 -0400248 $(Q)$(MAKE) \
Mike Marchetti2cea6a02017-10-13 13:58:54 -0400249 TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz,$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \
Mike Marchettib884a462017-10-05 13:28:33 -0400250 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
Mike Marchetti08f04282017-05-04 16:43:09 -0400251 JUNITXML=pytest-$@.xml \
252 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
253
Michael Marchetti9b27a612018-10-31 18:03:15 +0000254stage_4_tests = cirros
255
256openstack_stage_4: $(stage_4_tests)
257
258.PHONY: report_dir cirros vim smoke ping_pong openstack_stage_4 stage_4_tests