Merge changes I4396d3ef,I1f9ce570
[osm/devops.git] / systest / Makefile
1 # 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
21 # export OS_AUTH_URL=https://<keystoneserver>:5000/v2.0
22 # export OS_USERNAME=admin
23 # export OS_PASSWORD=admin
24 # export OS_PROJECT_NAME=admin
25 OSM_HOSTNAME ?=
26 OS_AUTH_URL ?=
27 OS_USERNAME ?=
28 OS_PASSWORD_NAME ?=
29 OS_PROJECT_NAME ?=
30
31 TOPDIR=$(shell readlink -f .|sed -e 's/systest.*//')
32
33 ifdef OS_AUTH_URL
34 OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL)
35 endif
36 ifdef OS_USERNAME
37 OPTION_OS_USERNAME=--os-username $(OS_USERNAME)
38 endif
39 ifdef OS_PASSWORD
40 OPTION_OS_PASSWORD=--os-password $(OS_PASSWORD)
41 endif
42 ifdef OS_PROJECT_NAME
43 OPTION_OS_PROJECT_NAME=--os-project-name $(OS_PROJECT_NAME)
44 endif
45
46 ifdef TEST_VNFD_DESCRIPTORS
47 OPTION_TEST_VNFD_DESCRIPTORS=--osm-vnfd-descriptor-packages $(TEST_VNFD_DESCRIPTORS)
48 endif
49 ifdef TEST_NSD_DESCRIPTORS
50 OPTION_TEST_NSD_DESCRIPTORS=--osm-nsd-descriptor-packages $(TEST_NSD_DESCRIPTORS)
51 endif
52
53 DESCRIPTOR_DIR ?= $(TOPDIR)/descriptor-packages
54
55 TEST_OSM_NS_NAME_PREFIX=pytest-$(shell date +%D-%T)-
56 OPTION_TEST_OSM_NS_NAME_PREFIX=--osm-ns-name-prefix $(TEST_OSM_NS_NAME_PREFIX)
57
58 JUNITXML_DIR = reports
59
60 JUNITXML ?= pytest-output.xml
61
62 PYTEST_OPTIONS=
63 Q=@
64
65 TEST_VNFD_DESCRIPTORS ?= None
66 TEST_NSD_DESCRIPTORS ?= None
67
68 .NOTPARALLEL:
69 all: smoke cirros ping_pong
70
71 define check_env_var
72 $(Q)if [ -z "$($(1))" ]; then echo "error: $(1) not set"; exit 1; fi
73 endef
74
75 check_OSM_HOSTNAME:
76 $(call check_env_var,OSM_HOSTNAME)
77
78 check_openstack_env:
79 $(call check_env_var,OS_AUTH_URL)
80 $(call check_env_var,OS_USERNAME)
81 $(call check_env_var,OS_PASSWORD)
82 $(call check_env_var,OS_PROJECT_NAME)
83
84 .PHONY: check_openstack_env check_OSM_HOSTNAME
85
86 report_dir:
87 @mkdir -p reports
88
89 _run_test: report_dir
90 $(Q)py.test \
91 --osmhost $(OSM_HOSTNAME) \
92 $(OPTION_OS_AUTH_URL) \
93 $(OPTION_OS_USERNAME) \
94 $(OPTION_OS_PASSWORD) \
95 $(OPTION_OS_PROJECT_NAME) \
96 $(OPTION_TEST_VNFD_DESCRIPTORS) \
97 $(OPTION_TEST_NSD_DESCRIPTORS) \
98 $(OPTION_DESCRIPTOR_BUILD_DIR) \
99 $(OPTION_TEST_OSM_NS_NAME_PREFIX) \
100 --junitxml $(JUNITXML_DIR)/$(JUNITXML) \
101 $(PYTEST_OPTIONS)
102
103 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/%.tar.gz:
104 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/cirros_vnf
105
106 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/%.tar.gz:
107 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/cirros_ns
108
109 cirros: check_OSM_HOSTNAME check_openstack_env \
110 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
111 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
112 $(Q)$(MAKE) \
113 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
114 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
115 JUNITXML=pytest-$@.xml \
116 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
117
118 ns_scale: check_OSM_HOSTNAME check_openstack_env \
119 $(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
120 $(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz
121 $(Q)$(MAKE) \
122 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_DIR)/vnfd/cirros_vnf/build/cirros_vnf.tar.gz \
123 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/cirros_ns/build/cirros_ns.tar.gz \
124 JUNITXML=pytest-$@.xml \
125 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m ns_scale" _run_test
126
127 smoke: check_OSM_HOSTNAME
128 $(Q)$(MAKE) \
129 JUNITXML=pytest-$@.xml \
130 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m smoke" _run_test
131
132 vim: check_OSM_HOSTNAME check_openstack_env
133 $(Q)$(MAKE) \
134 JUNITXML=pytest-$@.xml \
135 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vim" _run_test
136
137 $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/%.tar.gz:
138 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/ping_vnf
139
140 $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/%.tar.gz:
141 $(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/pong_vnf
142
143 $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/%.tar.gz:
144 $(MAKE) -C $(DESCRIPTOR_DIR)/nsd/ping_pong_ns
145
146 ping_pong: check_OSM_HOSTNAME check_openstack_env \
147 $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz \
148 $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz \
149 $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz
150 $(Q)$(MAKE) \
151 TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz,$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \
152 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
153 JUNITXML=pytest-$@.xml \
154 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
155
156 .PHONY: report_dir cirros vim smoke ping_pong