| # Copyright 2017 Sandvine |
| # All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| # not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations |
| # under the License. |
| |
| # |
| # These variables need to be defined in environment or passed in |
| # the make invocation. |
| # eg. |
| # export OSM_HOSTNAME=1.2.3.4:8008 |
| # export OS_AUTH_URL=https://<keystoneserver>:5000/v2.0 |
| # export OS_USERNAME=admin |
| # export OS_PASSWORD=admin |
| # export OS_PROJECT_NAME=admin |
| OSM_HOSTNAME ?= |
| OSM_RO_HOSTNAME ?= |
| OS_AUTH_URL ?= |
| OS_USERNAME ?= |
| OS_PASSWORD_NAME ?= |
| OS_PROJECT_NAME ?= |
| VIM_CONFIG ?= |
| VCD_AUTH_URL ?= |
| VCD_USERNAME ?= |
| VCD_PASSWORD ?= |
| VCD_TENANT_NAME ?= |
| VCD_ORGANIZATION ?= |
| |
| TOPDIR=$(shell readlink -f .|sed -e 's/systest.*//') |
| |
| ifdef OS_AUTH_URL |
| OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL) |
| endif |
| ifdef OS_USERNAME |
| OPTION_OS_USERNAME=--os-username $(OS_USERNAME) |
| endif |
| ifdef OS_PASSWORD |
| OPTION_OS_PASSWORD=--os-password $(OS_PASSWORD) |
| endif |
| ifdef OS_PROJECT_NAME |
| OPTION_OS_PROJECT_NAME=--os-project-name $(OS_PROJECT_NAME) |
| endif |
| |
| ifdef TEST_VNFD_DESCRIPTORS |
| OPTION_TEST_VNFD_DESCRIPTORS=--osm-vnfd-descriptor-packages $(TEST_VNFD_DESCRIPTORS) |
| endif |
| ifdef TEST_NSD_DESCRIPTORS |
| OPTION_TEST_NSD_DESCRIPTORS=--osm-nsd-descriptor-packages $(TEST_NSD_DESCRIPTORS) |
| endif |
| ifdef OSM_RO_HOSTNAME |
| OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_RO_HOSTNAME) |
| else |
| OPTION_RO_HOSTNAME=--osm_ro_host $(OSM_HOSTNAME) |
| endif |
| |
| ifdef VIM_CONFIG |
| OPTION_VIM_CONFIG=--vim-config "$(VIM_CONFIG)" |
| endif |
| |
| ifdef VCD_AUTH_URL |
| OPTION_VCD_AUTH_URL=--vcd-url $(VCD_AUTH_URL) |
| endif |
| ifdef VCD_USERNAME |
| OPTION_VCD_USERNAME=--vcd-username $(VCD_USERNAME) |
| endif |
| ifdef VCD_PASSWORD |
| OPTION_VCD_PASSWORD=--vcd-password $(VCD_PASSWORD) |
| endif |
| ifdef VCD_TENANT_NAME |
| OPTION_VCD_TENANT_NAME=--vcd-tenant-name $(VCD_TENANT_NAME) |
| endif |
| ifdef VCD_ORGANIZATION |
| OPTION_VCD_ORGANIZATION=--vcd-org $(VCD_ORGANIZATION) |
| endif |
| |
| |
| DESCRIPTOR_DIR ?= $(TOPDIR)/descriptor-packages |
| |
| #TODO: Need to re-add this once charm application name length issue is resolved |
| #TEST_OSM_NS_NAME_PREFIX=pytest-$(shell date +%D-%T)- |
| #OPTION_TEST_OSM_NS_NAME_PREFIX=--osm-ns-name-prefix $(TEST_OSM_NS_NAME_PREFIX) |
| |
| JUNITXML_DIR = reports |
| |
| JUNITXML ?= pytest-output.xml |
| |
| PYTEST_OPTIONS= |
| Q=@ |
| |
| TEST_VNFD_DESCRIPTORS ?= None |
| TEST_NSD_DESCRIPTORS ?= None |
| |
| .NOTPARALLEL: |
| all: smoke cirros ping_pong |
| |
| define check_env_var |
| $(Q)if [ -z "$($(1))" ]; then echo "error: $(1) not set"; exit 1; fi |
| endef |
| |
| check_OSM_HOSTNAME: |
| $(call check_env_var,OSM_HOSTNAME) |
| |
| check_openstack_env: |
| $(call check_env_var,OS_AUTH_URL) |
| $(call check_env_var,OS_USERNAME) |
| $(call check_env_var,OS_PASSWORD) |
| $(call check_env_var,OS_PROJECT_NAME) |
| |
| check_vcd_env: |
| $(call check_env_var,VCD_AUTH_URL) |
| $(call check_env_var,VCD_USERNAME) |
| $(call check_env_var,VCD_PASSWORD) |
| $(call check_env_var,VCD_TENANT_NAME) |
| $(call check_env_var,VCD_ORGANIZATION) |
| |
| .PHONY: check_openstack_env check_vcd_env check_OSM_HOSTNAME |
| |
| report_dir: |
| @mkdir -p reports |
| |
| _run_test: report_dir |
| -$(Q)py.test \ |
| --osmhost $(OSM_HOSTNAME) --sol005 \ |
| $(OPTION_RO_HOSTNAME) \ |
| $(OPTION_OS_AUTH_URL) \ |
| $(OPTION_OS_USERNAME) \ |
| $(OPTION_OS_PASSWORD) \ |
| $(OPTION_VIM_CONFIG) \ |
| $(OPTION_OS_PROJECT_NAME) \ |
| $(OPTION_VCD_AUTH_URL) \ |
| $(OPTION_VCD_USERNAME) \ |
| $(OPTION_VCD_PASSWORD) \ |
| $(OPTION_VCD_TENANT_NAME) \ |
| $(OPTION_TEST_VNFD_DESCRIPTORS) \ |
| $(OPTION_TEST_NSD_DESCRIPTORS) \ |
| $(OPTION_DESCRIPTOR_BUILD_DIR) \ |
| $(OPTION_TEST_OSM_NS_NAME_PREFIX) \ |
| --junitxml $(JUNITXML_DIR)/$(JUNITXML) \ |
| $(PYTEST_OPTIONS) |
| |
| $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/%.tar.gz: |
| $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/cirros_vnf |
| |
| $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/%.tar.gz: |
| $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/cirros_ns |
| |
| images/cache/cirros-0.3.5-x86_64-disk.img: |
| $(Q)mkdir -p images/cache |
| $(Q)wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -O $@ |
| |
| images/cache/Fedora-x86_64-20-20131211.1-sda-ping.qcow2: |
| $(Q)mkdir -p images/cache |
| $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 -O $@ |
| |
| images/cache/Fedora-x86_64-20-20131211.1-sda-pong.qcow2: |
| $(Q)mkdir -p images/cache |
| $(Q)wget ftp://osm-download.etsi.org/examples/ping_pong_ns/images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2 -O $@ |
| |
| # images are prefixed with 'osm/' to separate osm uploaded images from VIM installed images |
| OSM_IMAGE_PREFIX ?= |
| sys_path ?= $(TOPDIR)systest |
| |
| ifdef OS_AUTH_URL |
| images/%.qcow2 images/%.img: |
| $(Q)openstack image show $(OSM_IMAGE_PREFIX)$(shell basename $@) || \ |
| sh -c "make images/cache/$(shell basename $@) && openstack image create --file images/cache/$(shell basename $@) $(OSM_IMAGE_PREFIX)$(shell basename $@)" |
| endif |
| ifdef VCD_AUTH_URL |
| images/%.img: |
| ovf_converter images/cache/$(OSM_IMAGE_PREFIX)$(shell basename $@) -n cirros |
| python $(TOPDIR)tools/vmware_ovf_upload.py $(VCD_AUTH_URL) $(VCD_USERNAME) $(VCD_PASSWORD) $(VCD_ORGANIZATION) $(sys_path)/images/cache/cirros.ovf |
| else |
| images/%.img: |
| echo "No method selected to upload image to VIM" |
| endif |
| |
| %.openstack: check_openstack_env |
| $(Q)$(MAKE) $* |
| |
| %s.vcd: check_vcd_env |
| $(Q)$(MAKE) $* |
| |
| cirros: check_OSM_HOSTNAME \ |
| $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \ |
| $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \ |
| images/cirros-0.3.5-x86_64-disk.img |
| $(Q)$(MAKE) \ |
| TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \ |
| TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \ |
| JUNITXML=pytest-$@.xml \ |
| PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test |
| |
| ns_scale: check_OSM_HOSTNAME \ |
| $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \ |
| $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \ |
| images/cirros-0.3.5-x86_64-disk.img |
| $(Q)$(MAKE) \ |
| TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \ |
| TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \ |
| JUNITXML=pytest-$@.xml \ |
| PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m ns_scale" _run_test |
| |
| smoke: check_OSM_HOSTNAME \ |
| $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \ |
| $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz |
| $(Q)$(MAKE) \ |
| JUNITXML=pytest-$@.xml \ |
| PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m smoke" _run_test \ |
| TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \ |
| TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz |
| |
| vim: check_OSM_HOSTNAME check_openstack_env |
| $(Q)$(MAKE) \ |
| JUNITXML=pytest-$@.xml \ |
| PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vim" _run_test |
| |
| $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/%.tar.gz: |
| $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/ping_vnf |
| |
| $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/%.tar.gz: |
| $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/pong_vnf |
| |
| $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/%.tar.gz: |
| $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/ping_pong_ns |
| |
| ping_pong: check_OSM_HOSTNAME check_openstack_env \ |
| $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz \ |
| $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz \ |
| $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \ |
| images/Fedora-x86_64-20-20131211.1-sda-ping.qcow2 \ |
| images/Fedora-x86_64-20-20131211.1-sda-pong.qcow2 |
| $(Q)$(MAKE) \ |
| TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz,$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \ |
| TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \ |
| JUNITXML=pytest-$@.xml \ |
| PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test |
| |
| .PHONY: report_dir cirros vim smoke ping_pong |