# 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://: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 ?= OS_PROJECT_NAME ?= VIM_CONFIG ?= VCD_AUTH_URL ?= VCD_USERNAME ?= VCD_PASSWORD ?= VCD_TENANT_NAME ?= VCD_ORGANIZATION ?= VIM_EMU ?= 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 VIM_EMU # VIM emulator does not need images pushed to glance. else 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 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) $* %.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 stage_4_tests = cirros openstack_stage_4: $(stage_4_tests) .PHONY: report_dir cirros vim smoke ping_pong openstack_stage_4 stage_4_tests