blob: d91256c71b006eb402d5c5df02be6e117f89c9fb [file] [log] [blame]
Dennis Dmitriev2a498732018-12-21 18:30:23 +02001# Copyright 2016 Mirantis, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15import pytest
16
17from tcp_tests import logger
18from tcp_tests import settings
19from tcp_tests.utils import run_jenkins_job
20from tcp_tests.utils import get_jenkins_job_stages
21
22LOG = logger.logger
23
24
25class TestCvpPipelines(object):
26 """Test class for running Cloud Validation Pipelines
27
28 Requires environment variables:
29 ENV_NAME
30 LAB_CONFIG_NAME
31 TESTS_CONFIGS
32 """
33
34 @pytest.mark.grab_versions
35 @pytest.mark.parametrize("_", [settings.ENV_NAME])
36 @pytest.mark.run_cvp_func_smoke
37 def test_run_cvp_func_smoke(self, salt_actions, show_step, _):
38 """Runner for Pipeline CVP - Functional tests
39
40 Scenario:
41 1. Get CICD Jenkins access credentials from salt
42 2. Run job cvp-func
43 3. Get passed stages from cvp-func
44 """
45 salt = salt_actions
46 show_step(1)
47
48 tgt = 'I@docker:client:stack:jenkins and cid01*'
49 jenkins_host = salt.get_single_pillar(
50 tgt=tgt, pillar="jenkins:client:master:host")
51 jenkins_port = salt.get_single_pillar(
52 tgt=tgt, pillar="jenkins:client:master:port")
53 jenkins_url = 'http://{0}:{1}'.format(jenkins_host, jenkins_port)
54 jenkins_user = salt.get_single_pillar(
55 tgt=tgt, pillar="jenkins:client:master:username")
56 jenkins_pass = salt.get_single_pillar(
57 tgt=tgt, pillar="jenkins:client:master:password")
58 jenkins_start_timeout = 60
59 jenkins_build_timeout = 1800
60
61 job_name = 'cvp-func'
62 job_parameters = {
63 'TARGET_NODE': 'gtw01*',
64 'TEMPEST_ENDPOINT_TYPE': 'internalURL',
65 'TEMPEST_TEST_PATTERN': 'set=smoke',
66 }
67 show_step(2)
68 cvp_func_smoke_result = run_jenkins_job.run_job(
69 host=jenkins_url,
70 username=jenkins_user,
71 password=jenkins_pass,
72 start_timeout=jenkins_start_timeout,
73 build_timeout=jenkins_build_timeout,
74 verbose=True,
75 job_name=job_name,
76 job_parameters=job_parameters,
77 job_output_prefix='[ cvp-func/{build_number}:platform {time} ] ')
78
79 show_step(3)
80 (description, stages) = get_jenkins_job_stages.get_deployment_result(
81 host=jenkins_url,
82 username=jenkins_user,
83 password=jenkins_pass,
84 job_name=job_name,
85 build_number='lastBuild')
86
87 LOG.info(description)
88 LOG.info('\n'.join(stages))
89
90 assert cvp_func_smoke_result == 'SUCCESS', "{0}\n{1}".format(
91 description, '\n'.join(stages))
92
93 @pytest.mark.grab_versions
94 @pytest.mark.parametrize("_", [settings.ENV_NAME])
95 @pytest.mark.run_cvp_func_sanity
96 def test_run_cvp_func_sanity(self, salt_actions, show_step, _):
97 """Runner for Pipeline CVP - Functional tests
98
99 Scenario:
100 1. Get CICD Jenkins access credentials from salt
101 2. Run job cvp-sanity
102 3. Get passed stages from cvp-sanity
103 """
104 salt = salt_actions
105 show_step(1)
106
107 tgt = 'I@docker:client:stack:jenkins and cid01*'
108 jenkins_host = salt.get_single_pillar(
109 tgt=tgt, pillar="jenkins:client:master:host")
110 jenkins_port = salt.get_single_pillar(
111 tgt=tgt, pillar="jenkins:client:master:port")
112 jenkins_url = 'http://{0}:{1}'.format(jenkins_host, jenkins_port)
113 jenkins_user = salt.get_single_pillar(
114 tgt=tgt, pillar="jenkins:client:master:username")
115 jenkins_pass = salt.get_single_pillar(
116 tgt=tgt, pillar="jenkins:client:master:password")
117 jenkins_start_timeout = 60
118 jenkins_build_timeout = 1800
119
Dennis Dmitriev2b884f02019-03-05 22:05:35 +0200120 maas_minion_id = salt.get_single_pillar(
121 tgt='I@maas:cluster:enabled:True or I@maas:region:enabled:True',
122 pillar="__reclass__:nodename")
123
Dennis Dmitriev2a498732018-12-21 18:30:23 +0200124 job_name = 'cvp-sanity'
125 job_parameters = {
126 'TEST_SET': '/var/lib/cvp-sanity/cvp_checks/tests/',
Dennis Dmitriev2b884f02019-03-05 22:05:35 +0200127 'TESTS_SETTINGS': (
128 'drivetrain_version={0};ntp_skipped_nodes={1}'
129 .format(settings.MCP_VERSION, maas_minion_id)),
Dennis Dmitriev2a498732018-12-21 18:30:23 +0200130 }
131
132 show_step(2)
133 cvp_func_sanity_result = run_jenkins_job.run_job(
134 host=jenkins_url,
135 username=jenkins_user,
136 password=jenkins_pass,
137 start_timeout=jenkins_start_timeout,
138 build_timeout=jenkins_build_timeout,
139 verbose=True,
140 job_name=job_name,
141 job_parameters=job_parameters,
142 job_output_prefix='[ cvp-func/{build_number}:platform {time} ] ')
143
144 show_step(3)
145 (description, stages) = get_jenkins_job_stages.get_deployment_result(
146 host=jenkins_url,
147 username=jenkins_user,
148 password=jenkins_pass,
149 job_name=job_name,
150 build_number='lastBuild')
151
152 LOG.info(description)
153 LOG.info('\n'.join(stages))
154
155 assert cvp_func_sanity_result == 'SUCCESS', "{0}\n{1}".format(
156 description, '\n'.join(stages))
Dennis Dmitriev1566e3f2019-01-11 17:35:43 +0200157
158 @pytest.mark.grab_versions
159 @pytest.mark.parametrize("_", [settings.ENV_NAME])
160 @pytest.mark.run_cvp_ha_smoke
161 def test_run_cvp_ha_smoke(self, underlay_actions, salt_actions,
162 show_step, _):
163 """Runner for Pipeline CVP - HA tests
164
165 Scenario:
166 1. Get CICD Jenkins access credentials from salt
167 2. Run job cvp-ha with tempest set=smoke
168 3. Get passed stages from cvp-ha
169 """
170 salt = salt_actions
171 show_step(1)
172
173 tgt = 'I@docker:client:stack:jenkins and cid01*'
174 jenkins_host = salt.get_single_pillar(
175 tgt=tgt, pillar="jenkins:client:master:host")
176 jenkins_port = salt.get_single_pillar(
177 tgt=tgt, pillar="jenkins:client:master:port")
178 jenkins_url = 'http://{0}:{1}'.format(jenkins_host, jenkins_port)
179 jenkins_user = salt.get_single_pillar(
180 tgt=tgt, pillar="jenkins:client:master:username")
181 jenkins_pass = salt.get_single_pillar(
182 tgt=tgt, pillar="jenkins:client:master:password")
183 jenkins_start_timeout = 60
184 jenkins_build_timeout = 1800
185
186 tempest_target_node = salt.get_single_pillar(
187 tgt='cfg01*',
188 pillar="runtest:tempest:test_target")
189
190 job_name = 'cvp-ha'
191 job_parameters = {
192 'TEMPEST_TARGET_NODE': tempest_target_node,
193 'TEMPEST_TEST_PATTERN': 'set=smoke',
194 }
195
196 show_step(2)
197 cvp_ha_smoke_result = run_jenkins_job.run_job(
198 host=jenkins_url,
199 username=jenkins_user,
200 password=jenkins_pass,
201 start_timeout=jenkins_start_timeout,
202 build_timeout=jenkins_build_timeout,
203 verbose=True,
204 job_name=job_name,
205 job_parameters=job_parameters,
206 job_output_prefix='[ cvp-ha/{build_number} {time} ] ')
207
208 show_step(3)
209 (description, stages) = get_jenkins_job_stages.get_deployment_result(
210 host=jenkins_url,
211 username=jenkins_user,
212 password=jenkins_pass,
213 job_name=job_name,
214 build_number='lastBuild')
215
216 LOG.info(description)
217 LOG.info('\n'.join(stages))
218
219 assert cvp_ha_smoke_result == 'SUCCESS', "{0}\n{1}".format(
220 description, '\n'.join(stages))