262 lines
8.8 KiB
Python
262 lines
8.8 KiB
Python
# Copyright 2018 AT&T Intellectual Property. All other 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.
|
|
|
|
import mock
|
|
|
|
from armada.handlers import test
|
|
from armada.handlers import tiller
|
|
from armada.tests.unit import base
|
|
from armada.tests.test_utils import AttrDict
|
|
|
|
|
|
class TestHandlerTestCase(base.ArmadaTestCase):
|
|
|
|
def _test_test_release_for_success(self, expected_success, results):
|
|
|
|
@mock.patch('armada.handlers.tiller.K8s')
|
|
def do_test(_):
|
|
tiller_obj = tiller.Tiller('host', '8080', None)
|
|
release = 'release'
|
|
|
|
tiller_obj.test_release = mock.Mock()
|
|
tiller_obj.test_release.return_value = AttrDict(
|
|
**{'results': results})
|
|
|
|
test_handler = test.Test(release, tiller_obj)
|
|
success = test_handler.test_release_for_success()
|
|
|
|
self.assertEqual(expected_success, success)
|
|
|
|
do_test()
|
|
|
|
def test_no_results(self):
|
|
self._test_test_release_for_success(True, [])
|
|
|
|
def test_unknown(self):
|
|
self._test_test_release_for_success(False, [
|
|
AttrDict(**{'status': test.TESTRUN_STATUS_SUCCESS}),
|
|
AttrDict(**{'status': test.TESTRUN_STATUS_UNKNOWN})
|
|
])
|
|
|
|
def test_success(self):
|
|
self._test_test_release_for_success(
|
|
True, [AttrDict(**{'status': test.TESTRUN_STATUS_SUCCESS})])
|
|
|
|
def test_failure(self):
|
|
self._test_test_release_for_success(False, [
|
|
AttrDict(**{'status': test.TESTRUN_STATUS_SUCCESS}),
|
|
AttrDict(**{'status': test.TESTRUN_STATUS_FAILURE})
|
|
])
|
|
|
|
def test_running(self):
|
|
self._test_test_release_for_success(False, [
|
|
AttrDict(**{'status': test.TESTRUN_STATUS_SUCCESS}),
|
|
AttrDict(**{'status': test.TESTRUN_STATUS_RUNNING})
|
|
])
|
|
|
|
def test_cg_disabled(self):
|
|
"""Test that tests are disabled when a chart group disables all
|
|
tests.
|
|
"""
|
|
test_handler = test.Test(
|
|
release_name='release', tiller=mock.Mock(), cg_test_charts=False)
|
|
|
|
assert test_handler.test_enabled is False
|
|
|
|
def test_cg_disabled_test_key_enabled(self):
|
|
"""Test that tests are enabled when a chart group disables all
|
|
tests and the deprecated, boolean `test` key is enabled.
|
|
"""
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
cg_test_charts=False,
|
|
test_values=True)
|
|
|
|
assert test_handler.test_enabled is True
|
|
|
|
def test_cg_disabled_test_values_enabled(self):
|
|
"""Test that tests are enabled when a chart group disables all
|
|
tests and the `test.enabled` key is False.
|
|
"""
|
|
test_values = {'enabled': True}
|
|
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
cg_test_charts=False,
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is True
|
|
|
|
def test_cg_enabled_test_key_disabled(self):
|
|
"""Test that tests are disabled when a chart group enables all
|
|
tests and the deprecated, boolean `test` key is disabled.
|
|
"""
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
cg_test_charts=True,
|
|
test_values=False)
|
|
|
|
assert test_handler.test_enabled is False
|
|
|
|
def test_cg_enabled_test_values_disabled(self):
|
|
"""Test that tests are disabled when a chart group enables all
|
|
tests and the deprecated, boolean `test` key is disabled.
|
|
"""
|
|
test_values = {'enabled': False}
|
|
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
cg_test_charts=True,
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is False
|
|
|
|
def test_enable_all_cg_disabled(self):
|
|
"""Test that tests are enabled when the `enable_all` parameter is
|
|
True and the chart group `test_enabled` key is disabled.
|
|
"""
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
cg_test_charts=False,
|
|
enable_all=True)
|
|
|
|
assert test_handler.test_enabled is True
|
|
|
|
def test_enable_all_test_key_disabled(self):
|
|
"""Test that tests are enabled when the `enable_all` parameter is
|
|
True and the deprecated, boolean `test` key is disabled.
|
|
"""
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
enable_all=True,
|
|
test_values=False)
|
|
|
|
assert test_handler.test_enabled is True
|
|
|
|
def test_enable_all_test_values_disabled(self):
|
|
"""Test that tests are enabled when the `enable_all` parameter is
|
|
True and the `test.enabled` key is False.
|
|
"""
|
|
test_values = {'enabled': False}
|
|
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
enable_all=True,
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is True
|
|
|
|
def test_deprecated_test_key_false(self):
|
|
"""Test that tests can be disabled using the deprecated, boolean value
|
|
for a chart's test key.
|
|
"""
|
|
test_handler = test.Test(
|
|
release_name='release', tiller=mock.Mock(), test_values=True)
|
|
|
|
assert test_handler.test_enabled
|
|
|
|
def test_deprecated_test_key_true(self):
|
|
"""Test that cleanup is enabled by default when tests are enabled using
|
|
the deprecated, boolean value for a chart's `test` key.
|
|
"""
|
|
test_handler = test.Test(
|
|
release_name='release', tiller=mock.Mock(), test_values=True)
|
|
|
|
assert test_handler.test_enabled is True
|
|
assert test_handler.cleanup is True
|
|
|
|
def test_tests_disabled(self):
|
|
"""Test that tests are disabled by a chart's values using the
|
|
`test.enabled` path.
|
|
"""
|
|
test_values = {'enabled': False}
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is False
|
|
|
|
def test_tests_enabled(self):
|
|
"""Test that cleanup is disabled (by default) when tests are enabled by
|
|
a chart's values using the `test.enabled` path.
|
|
"""
|
|
test_values = {'enabled': True}
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is True
|
|
assert test_handler.cleanup is False
|
|
|
|
def test_tests_enabled_cleanup_enabled(self):
|
|
"""Test that the test handler uses the values provided by a chart's
|
|
`test` key.
|
|
"""
|
|
test_values = {'enabled': True, 'options': {'cleanup': True}}
|
|
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is True
|
|
assert test_handler.cleanup is True
|
|
|
|
def test_tests_enabled_cleanup_disabled(self):
|
|
"""Test that the test handler uses the values provided by a chart's
|
|
`test` key.
|
|
"""
|
|
test_values = {'enabled': True, 'options': {'cleanup': False}}
|
|
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is True
|
|
assert test_handler.cleanup is False
|
|
|
|
def test_no_test_values(self):
|
|
"""Test that the default values are enforced when no chart `test`
|
|
values are provided (i.e. tests are enabled and cleanup is disabled).
|
|
"""
|
|
test_handler = test.Test(release_name='release', tiller=mock.Mock())
|
|
|
|
assert test_handler.test_enabled is True
|
|
assert test_handler.cleanup is False
|
|
|
|
def test_override_cleanup(self):
|
|
"""Test that a cleanup value passed to the Test handler (i.e. from the
|
|
API/CLI) takes precedence over a chart's `test.cleanup` value.
|
|
"""
|
|
test_values = {'enabled': True, 'options': {'cleanup': False}}
|
|
|
|
test_handler = test.Test(
|
|
release_name='release',
|
|
tiller=mock.Mock(),
|
|
cleanup=True,
|
|
test_values=test_values)
|
|
|
|
assert test_handler.test_enabled is True
|
|
assert test_handler.cleanup is True
|