initial delivery of system test framework
[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_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_URL ?=
27 OS_USERNAME ?=
28 OS_PASSWORD_NAME ?=
29 OS_PROJECT_NAME ?=
30
31 ifdef OS_URL
32 OPTION_OS_URL=--os-url $(OS_URL)
33 endif
34 ifdef OS_USERNAME
35 OPTION_OS_USERNAME=--os-username $(OS_USERNAME)
36 endif
37 ifdef OS_PASSWORD
38 OPTION_OS_PASSWORD=--os-password $(OS_PASSWORD)
39 endif
40 ifdef OS_PROJECT_NAME
41 OPTION_OS_PROJECT_NAME=--os-project-name $(OS_PROJECT_NAME)
42 endif
43
44 ifdef TEST_VNFD_DESCRIPTORS
45 OPTION_TEST_VNFD_DESCRIPTORS=--osm-vnfd-descriptor-packages $(TEST_VNFD_DESCRIPTORS)
46 endif
47 ifdef TEST_NSD_DESCRIPTORS
48 OPTION_TEST_NSD_DESCRIPTORS=--osm-nsd-descriptor-packages $(TEST_NSD_DESCRIPTORS)
49 endif
50
51 DESCRIPTOR_REPO_NAME=descriptor-packages
52 DESCRIPTOR_BUILD_DIR := $(shell pwd)/$(DESCRIPTOR_REPO_NAME)/build
53 OPTION_DESCRIPTOR_BUILD_DIR=--osm-descriptor-packages $(DESCRIPTOR_BUILD_DIR)
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 DESCRIPTOR_REPO ?= https://osm.etsi.org/gerrit/osm/$(DESCRIPTOR_REPO_NAME)
66
67
68 TEST_VNFD_DESCRIPTORS ?= None
69 TEST_NSD_DESCRIPTORS ?= None
70
71 .NOTPARALLEL:
72 all: smoke cirros ping_pong
73
74 define check_env_var
75 $(Q)if [ -z "$($(1))" ]; then echo "error: $(1) not set"; exit 1; fi
76 endef
77
78 check_OSM_HOSTNAME:
79 $(call check_env_var,OSM_HOSTNAME)
80
81 check_openstack_env:
82 $(call check_env_var,OS_URL)
83 $(call check_env_var,OS_USERNAME)
84 $(call check_env_var,OS_PASSWORD)
85 $(call check_env_var,OS_PROJECT_NAME)
86
87 .PHONY: check_openstack_env check_OSM_HOSTNAME
88
89 $(DESCRIPTOR_REPO_NAME):
90 @test -e $(DESCRIPTOR_REPO_NAME) || git clone $(DESCRIPTOR_REPO)
91 make -C $(DESCRIPTOR_REPO_NAME)
92
93 report_dir:
94 @mkdir -p reports
95
96 _run_test: $(DESCRIPTOR_REPO_NAME) report_dir
97 $(Q)py.test \
98 --osmhost $(OSM_HOSTNAME) \
99 $(OPTION_OS_URL) \
100 $(OPTION_OS_USERNAME) \
101 $(OPTION_OS_PASSWORD) \
102 $(OPTION_OS_PROJECT_NAME) \
103 $(OPTION_TEST_VNFD_DESCRIPTORS) \
104 $(OPTION_TEST_NSD_DESCRIPTORS) \
105 $(OPTION_DESCRIPTOR_BUILD_DIR) \
106 $(OPTION_TEST_OSM_NS_NAME_PREFIX) \
107 --junitxml $(JUNITXML_DIR)/$(JUNITXML) \
108 $(PYTEST_OPTIONS)
109
110 cirros: check_OSM_HOSTNAME check_openstack_env
111 $(Q)$(MAKE) \
112 TEST_VNFD_DESCRIPTORS=$(DESCRIPTOR_BUILD_DIR)/vnfd_pkgs/cirros_vnf.tar.gz \
113 TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_BUILD_DIR)/nsd_pkgs/cirros_ns.tar.gz \
114 JUNITXML=pytest-$@.xml \
115 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
116
117 smoke: check_OSM_HOSTNAME
118 $(Q)$(MAKE) \
119 JUNITXML=pytest-$@.xml \
120 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m smoke" _run_test
121
122 vim: check_OSM_HOSTNAME check_openstack_env
123 $(Q)$(MAKE) \
124 JUNITXML=pytest-$@.xml \
125 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vim" _run_test
126
127 ping_pong: check_OSM_HOSTNAME check_openstack_env
128 $(Q)$(MAKE) \
129 TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_BUILD_DIR)/vnfd_pkgs/ping_vnf.tar.gz,$(DESCRIPTOR_BUILD_DIR)/vnfd_pkgs/pong_vnf.tar.gz" \
130 TEST_NSD_DESCRIPTORS="$(DESCRIPTOR_BUILD_DIR)/nsd_pkgs/ping_pong_ns.tar.gz" \
131 JUNITXML=pytest-$@.xml \
132 PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
133
134 .PHONY: report_dir cirros vim smoke ping_pong