Newer
Older
# 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 ?=
OS_USERNAME ?=
OS_PASSWORD_NAME ?=
OS_PROJECT_NAME ?=
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_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
$(OPTION_OS_USERNAME) \
$(OPTION_OS_PASSWORD) \
$(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
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
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
$(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
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