blob: 40492aa26be1320897e2dd23e2180b485a96dac2 [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 ?=
29OS_PASSWORD_NAME ?=
30OS_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 Marchetti08f04282017-05-04 16:43:09 -040037
Mike Marchettib884a462017-10-05 13:28:33 -040038TOPDIR=$(shell readlink -f .|sed -e 's/systest.*//')
39
Mike Marchetti6930bc02017-05-31 16:33:02 -040040ifdef OS_AUTH_URL
41 OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL)
Mike Marchetti08f04282017-05-04 16:43:09 -040042endif
43ifdef OS_USERNAME
44 OPTION_OS_USERNAME=--os-username $(OS_USERNAME)
45endif
46ifdef OS_PASSWORD
47 OPTION_OS_PASSWORD=--os-password $(OS_PASSWORD)
48endif
49ifdef OS_PROJECT_NAME
50 OPTION_OS_PROJECT_NAME=--os-project-name $(OS_PROJECT_NAME)
51endif
52
53ifdef TEST_VNFD_DESCRIPTORS
54 OPTION_TEST_VNFD_DESCRIPTORS=--osm-vnfd-descriptor-packages $(TEST_VNFD_DESCRIPTORS)
55endif
56ifdef TEST_NSD_DESCRIPTORS
57 OPTION_TEST_NSD_DESCRIPTORS=--osm-nsd-descriptor-packages $(TEST_NSD_DESCRIPTORS)
58endif
Mike Marchettif94dd8a2017-11-06 11:04:38 -050059ifdef OSM_RO_HOSTNAME
60 OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_RO_HOSTNAME)
61else
62 OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_HOSTNAME)
63endif
64
65ifdef VIM_CONFIG
66 OPTION_VIM_CONFIG=--vim-config "$(VIM_CONFIG)"
Mike Marchettif94dd8a2017-11-06 11:04:38 -050067endif
Mike Marchetti08f04282017-05-04 16:43:09 -040068
kasar12aa2cf2018-02-02 02:51:07 -080069ifdef VCD_AUTH_URL
70 OPTION_VCD_AUTH_URL=--vcd-url $(VCD_AUTH_URL)
71endif
72ifdef VCD_USERNAME
73 OPTION_VCD_USERNAME=--vcd-username $(VCD_USERNAME)
74endif
75ifdef VCD_PASSWORD
76 OPTION_VCD_PASSWORD=--vcd-password $(VCD_PASSWORD)
77endif
78ifdef VCD_TENANT_NAME
79 OPTION_VCD_TENANT_NAME=--vcd-tenant-name $(VCD_TENANT_NAME)
80endif
81ifdef VCD_ORGANIZATION
82 OPTION_VCD_ORGANIZATION=--vcd-org $(VCD_ORGANIZATION)
83endif
84
85
Mike Marchettib884a462017-10-05 13:28:33 -040086DESCRIPTOR_DIR ?= $(TOPDIR)/descriptor-packages
Mike Marchetti08f04282017-05-04 16:43:09 -040087
Mike Marchettif94dd8a2017-11-06 11:04:38 -050088#TODO: Need to re-add this once charm application name length issue is resolved
89#TEST_OSM_NS_NAME_PREFIX=pytest-$(shell date +%D-%T)-
90#OPTION_TEST_OSM_NS_NAME_PREFIX=--osm-ns-name-prefix $(TEST_OSM_NS_NAME_PREFIX)
Mike Marchetti08f04282017-05-04 16:43:09 -040091
92JUNITXML_DIR = reports
93
94JUNITXML ?= pytest-output.xml
95
96PYTEST_OPTIONS=
97Q=@
98
Mike Marchetti08f04282017-05-04 16:43:09 -040099TEST_VNFD_DESCRIPTORS ?= None
100TEST_NSD_DESCRIPTORS ?= None
101
102.NOTPARALLEL:
103all: smoke cirros ping_pong
104
105define check_env_var
106 $(Q)if [ -z "$($(1))" ]; then echo "error: $(1) not set"; exit 1; fi
107endef
108
109check_OSM_HOSTNAME:
110 $(call check_env_var,OSM_HOSTNAME)
111
112check_openstack_env:
Mike Marchetti6930bc02017-05-31 16:33:02 -0400113 $(call check_env_var,OS_AUTH_URL)
Mike Marchetti08f04282017-05-04 16:43:09 -0400114 $(call check_env_var,OS_USERNAME)
115 $(call check_env_var,OS_PASSWORD)
116 $(call check_env_var,OS_PROJECT_NAME)
117
kasar12aa2cf2018-02-02 02:51:07 -0800118check_vcd_env:
119 $(call check_env_var,VCD_AUTH_URL)
120 $(call check_env_var,VCD_USERNAME)
121 $(call check_env_var,VCD_PASSWORD)
122 $(call check_env_var,VCD_TENANT_NAME)
123 $(call check_env_var,VCD_ORGANIZATION)
124
125.PHONY: check_openstack_env check_vcd_env check_OSM_HOSTNAME
Mike Marchetti08f04282017-05-04 16:43:09 -0400126
Mike Marchetti08f04282017-05-04 16:43:09 -0400127report_dir:
128 @mkdir -p reports
129
Mike Marchetti6930bc02017-05-31 16:33:02 -0400130_run_test: report_dir
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500131 -$(Q)py.test \
Mike Marchetti08f04282017-05-04 16:43:09 -0400132 --osmhost $(OSM_HOSTNAME) \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500133 $(OPTION_RO_HOSTNAME) \
Mike Marchetti6930bc02017-05-31 16:33:02 -0400134 $(OPTION_OS_AUTH_URL) \
Mike Marchetti08f04282017-05-04 16:43:09 -0400135 $(OPTION_OS_USERNAME) \
136 $(OPTION_OS_PASSWORD) \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500137 $(OPTION_VIM_CONFIG) \
Mike Marchetti08f04282017-05-04 16:43:09 -0400138 $(OPTION_OS_PROJECT_NAME) \
kasar12aa2cf2018-02-02 02:51:07 -0800139 $(OPTION_VCD_AUTH_URL) \
140 $(OPTION_VCD_USERNAME) \
141 $(OPTION_VCD_PASSWORD) \
142 $(OPTION_VCD_TENANT_NAME) \
Mike Marchetti08f04282017-05-04 16:43:09 -0400143 $(OPTION_TEST_VNFD_DESCRIPTORS) \
144 $(OPTION_TEST_NSD_DESCRIPTORS) \
145 $(OPTION_DESCRIPTOR_BUILD_DIR) \
146 $(OPTION_TEST_OSM_NS_NAME_PREFIX) \
147 --junitxml $(JUNITXML_DIR)/$(JUNITXML) \
148 $(PYTEST_OPTIONS)
149
Mike Marchettib884a462017-10-05 13:28:33 -0400150$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/%.tar.gz:
151 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/cirros_vnf
152
153$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/%.tar.gz:
154 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/cirros_ns
155
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500156images/cache/cirros-0.3.5-x86_64-disk.img:
157 $(Q)mkdir -p images/cache
158 $(Q)wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -O $@
159
160images/cache/Fedora-x86_64-20-20131211.1-sda-ping.qcow2:
161 $(Q)mkdir -p images/cache
162 $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 -O $@
163
164images/cache/Fedora-x86_64-20-20131211.1-sda-pong.qcow2:
165 $(Q)mkdir -p images/cache
166 $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2 -O $@
167
168# images are prefixed with 'osm/' to separate osm uploaded images from VIM installed images
169OSM_IMAGE_PREFIX ?=
kasar12aa2cf2018-02-02 02:51:07 -0800170sys_path ?= $(TOPDIR)systest
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500171
172ifdef OS_AUTH_URL
173images/%.qcow2 images/%.img:
174 $(Q)openstack image show $(OSM_IMAGE_PREFIX)$(shell basename $@) || \
175 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 -0800176endif
177ifdef VCD_AUTH_URL
178images/%.img:
179 ovf_converter images/cache/$(OSM_IMAGE_PREFIX)$(shell basename $@) -n cirros
180 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 -0500181else
182images/%.img:
183 echo "No method selected to upload image to VIM"
184endif
185
Mike Marchetti7dd7e172018-03-28 14:28:21 -0400186%.openstack: check_openstack_env
187 $(Q)$(MAKE) $*
188
189%s.vcd: check_vcd_env
190 $(Q)$(MAKE) $*
191
192cirros: check_OSM_HOSTNAME \
Mike Marchettib884a462017-10-05 13:28:33 -0400193 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500194 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
195 images/cirros-0.3.5-x86_64-disk.img
Mike Marchetti08f04282017-05-04 16:43:09 -0400196 $(Q)$(MAKE) \
Mike Marchettib884a462017-10-05 13:28:33 -0400197 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
198 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
Mike Marchetti08f04282017-05-04 16:43:09 -0400199 JUNITXML=pytest-$@.xml \
200 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
201
Mike Marchetti7dd7e172018-03-28 14:28:21 -0400202ns_scale: check_OSM_HOSTNAME \
Mike Marchettib884a462017-10-05 13:28:33 -0400203 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500204 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
205 images/cirros-0.3.5-x86_64-disk.img
Mike Marchetti6228f562017-06-15 14:51:27 -0400206 $(Q)$(MAKE) \
Mike Marchettib884a462017-10-05 13:28:33 -0400207 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
208 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
Mike Marchetti6228f562017-06-15 14:51:27 -0400209 JUNITXML=pytest-$@.xml \
210 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m ns_scale" _run_test
211
Mike Marchettiae7f5f32017-11-17 10:31:43 -0500212smoke: check_OSM_HOSTNAME \
213 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
214 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
Mike Marchetti08f04282017-05-04 16:43:09 -0400215 $(Q)$(MAKE) \
216 JUNITXML=pytest-$@.xml \
Mike Marchettiae7f5f32017-11-17 10:31:43 -0500217 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m smoke" _run_test \
218 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
219 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
Mike Marchetti08f04282017-05-04 16:43:09 -0400220
221vim: check_OSM_HOSTNAME check_openstack_env
222 $(Q)$(MAKE) \
223 JUNITXML=pytest-$@.xml \
224 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vim" _run_test
225
Mike Marchettib884a462017-10-05 13:28:33 -0400226$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/%.tar.gz:
227 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/ping_vnf
228
229$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/%.tar.gz:
230 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/pong_vnf
231
Mike Marchetti2cea6a02017-10-13 13:58:54 -0400232$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/%.tar.gz:
Mike Marchettib884a462017-10-05 13:28:33 -0400233 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/ping_pong_ns
234
Mike Marchetti2cea6a02017-10-13 13:58:54 -0400235ping_pong: check_OSM_HOSTNAME check_openstack_env \
236 $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz \
237 $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz \
Mike Marchettif94dd8a2017-11-06 11:04:38 -0500238 $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
239 images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 \
240 images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2
Mike Marchetti08f04282017-05-04 16:43:09 -0400241 $(Q)$(MAKE) \
Mike Marchetti2cea6a02017-10-13 13:58:54 -0400242 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 -0400243 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
Mike Marchetti08f04282017-05-04 16:43:09 -0400244 JUNITXML=pytest-$@.xml \
245 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
246
247.PHONY: report_dir cirros vim smoke ping_pong