blob: 7f5a542f4a862f599a0fe79c55800c1274dabb18 [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 Marchetti6930bc02017-05-31 16:33:02 -040026OS_AUTH_URL ?=
Mike Marchetti08f04282017-05-04 16:43:09 -040027OS_USERNAME ?=
28OS_PASSWORD_NAME ?=
29OS_PROJECT_NAME ?=
30
Mike Marchetti6930bc02017-05-31 16:33:02 -040031ifdef OS_AUTH_URL
32 OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL)
Mike Marchetti08f04282017-05-04 16:43:09 -040033endif
34ifdef OS_USERNAME
35 OPTION_OS_USERNAME=--os-username $(OS_USERNAME)
36endif
37ifdef OS_PASSWORD
38 OPTION_OS_PASSWORD=--os-password $(OS_PASSWORD)
39endif
40ifdef OS_PROJECT_NAME
41 OPTION_OS_PROJECT_NAME=--os-project-name $(OS_PROJECT_NAME)
42endif
43
44ifdef TEST_VNFD_DESCRIPTORS
45 OPTION_TEST_VNFD_DESCRIPTORS=--osm-vnfd-descriptor-packages $(TEST_VNFD_DESCRIPTORS)
46endif
47ifdef TEST_NSD_DESCRIPTORS
48 OPTION_TEST_NSD_DESCRIPTORS=--osm-nsd-descriptor-packages $(TEST_NSD_DESCRIPTORS)
49endif
50
Mike Marchetti6930bc02017-05-31 16:33:02 -040051DESCRIPTOR_REPO_NAME = descriptor-packages
52DESCRIPTOR_REPO_DIR ?= $(shell pwd)/descriptor-packages
53DESCRIPTOR_BUILD_DIR := $(DESCRIPTOR_REPO_DIR)/build
Mike Marchetti08f04282017-05-04 16:43:09 -040054OPTION_DESCRIPTOR_BUILD_DIR=--osm-descriptor-packages $(DESCRIPTOR_BUILD_DIR)
55
56TEST_OSM_NS_NAME_PREFIX=pytest-$(shell date +%D-%T)-
57OPTION_TEST_OSM_NS_NAME_PREFIX=--osm-ns-name-prefix $(TEST_OSM_NS_NAME_PREFIX)
58
59JUNITXML_DIR = reports
60
61JUNITXML ?= pytest-output.xml
62
63PYTEST_OPTIONS=
64Q=@
65
66DESCRIPTOR_REPO ?= https://osm.etsi.org/gerrit/osm/$(DESCRIPTOR_REPO_NAME)
67
68
69TEST_VNFD_DESCRIPTORS ?= None
70TEST_NSD_DESCRIPTORS ?= None
71
72.NOTPARALLEL:
73all: smoke cirros ping_pong
74
75define check_env_var
76 $(Q)if [ -z "$($(1))" ]; then echo "error: $(1) not set"; exit 1; fi
77endef
78
79check_OSM_HOSTNAME:
80 $(call check_env_var,OSM_HOSTNAME)
81
82check_openstack_env:
Mike Marchetti6930bc02017-05-31 16:33:02 -040083 $(call check_env_var,OS_AUTH_URL)
Mike Marchetti08f04282017-05-04 16:43:09 -040084 $(call check_env_var,OS_USERNAME)
85 $(call check_env_var,OS_PASSWORD)
86 $(call check_env_var,OS_PROJECT_NAME)
87
88.PHONY: check_openstack_env check_OSM_HOSTNAME
89
Mike Marchetti6930bc02017-05-31 16:33:02 -040090descriptors:
91 test -e $(DESCRIPTOR_REPO_NAME) || git clone $(DESCRIPTOR_REPO)
92 $(MAKE) -C $(DESCRIPTOR_REPO_NAME)
Mike Marchetti08f04282017-05-04 16:43:09 -040093
94report_dir:
95 @mkdir -p reports
96
Mike Marchetti6930bc02017-05-31 16:33:02 -040097_run_test: report_dir
Mike Marchetti08f04282017-05-04 16:43:09 -040098 $(Q)py.test \
99 --osmhost $(OSM_HOSTNAME) \
Mike Marchetti6930bc02017-05-31 16:33:02 -0400100 $(OPTION_OS_AUTH_URL) \
Mike Marchetti08f04282017-05-04 16:43:09 -0400101 $(OPTION_OS_USERNAME) \
102 $(OPTION_OS_PASSWORD) \
103 $(OPTION_OS_PROJECT_NAME) \
104 $(OPTION_TEST_VNFD_DESCRIPTORS) \
105 $(OPTION_TEST_NSD_DESCRIPTORS) \
106 $(OPTION_DESCRIPTOR_BUILD_DIR) \
107 $(OPTION_TEST_OSM_NS_NAME_PREFIX) \
108 --junitxml $(JUNITXML_DIR)/$(JUNITXML) \
109 $(PYTEST_OPTIONS)
110
111cirros: check_OSM_HOSTNAME check_openstack_env
112 $(Q)$(MAKE) \
113 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_BUILD_DIR)/vnfd_pkgs/cirros_vnf.tar.gz \
114 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_BUILD_DIR)/nsd_pkgs/cirros_ns.tar.gz \
115 JUNITXML=pytest-$@.xml \
116 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
117
Mike Marchetti6228f562017-06-15 14:51:27 -0400118ns_scale: check_OSM_HOSTNAME check_openstack_env
119 $(Q)$(MAKE) \
120 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_BUILD_DIR)/vnfd_pkgs/cirros_vnf.tar.gz \
121 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_BUILD_DIR)/nsd_pkgs/cirros_ns.tar.gz \
122 JUNITXML=pytest-$@.xml \
123 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m ns_scale" _run_test
124
Mike Marchetti08f04282017-05-04 16:43:09 -0400125smoke: check_OSM_HOSTNAME
126 $(Q)$(MAKE) \
127 JUNITXML=pytest-$@.xml \
128 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m smoke" _run_test
129
130vim: check_OSM_HOSTNAME check_openstack_env
131 $(Q)$(MAKE) \
132 JUNITXML=pytest-$@.xml \
133 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vim" _run_test
134
135ping_pong: check_OSM_HOSTNAME check_openstack_env
136 $(Q)$(MAKE) \
137 TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_BUILD_DIR)/vnfd_pkgs/ping_vnf.tar.gz,$(DESCRIPTOR_BUILD_DIR)/vnfd_pkgs/pong_vnf.tar.gz" \
138 TEST_NSD_DESCRIPTORS="$(DESCRIPTOR_BUILD_DIR)/nsd_pkgs/ping_pong_ns.tar.gz" \
139 JUNITXML=pytest-$@.xml \
140 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
141
142.PHONY: report_dir cirros vim smoke ping_pong