示例#1
0
    def test_bgkube_migrate_rollback_executes_db_migrations_rollback_command_when_supplied(
            self, exec_mock):
        tag, prev_state = get_random_int(), get_random_str()

        self.bgkube.db_migrations_rollback_command = get_random_str()
        self.bgkube.migrate_rollback(tag, prev_state)

        exec_mock.assert_called_once_with(
            tag, self.bgkube.db_migrations_rollback_command, prev_state)
示例#2
0
    def test_bgkube_migrate_apply_returns_stdout_from_db_migrations_status_command_when_supplied(
            self, exec_mock):
        tag = get_random_int()
        exec_mock.return_value = get_random_str()

        self.bgkube.db_migrations_status_command = get_random_str()
        stdout = self.bgkube.migrate_apply(tag)

        self.assertEqual(stdout, exec_mock.return_value)
        exec_mock.assert_called_once_with(
            tag, self.bgkube.db_migrations_status_command)
示例#3
0
    def test_bgkube_migrate_applies_latest_migrations_when_recurring_deployment(
            self, init_mock, apply_mock, env_mock):
        env_mock.return_value = get_random_str()
        apply_mock.return_value = get_random_str()

        tag = get_random_int()
        is_initial, prev_state = self.bgkube.migrate(tag)

        self.assertEqual(is_initial, False)
        self.assertEqual(prev_state, apply_mock.return_value)

        init_mock.assert_not_called()
        apply_mock.assert_called_once_with(tag)
示例#4
0
    def test_bgkube_apply_calls_kube_api_apply_with_expected_attributes(
            self, apply_mock):
        filename = get_random_str()
        tag = get_random_int()
        color = get_random_str()

        bg = self.bgkube
        bg.apply('object description', filename, tag, color)

        apply_mock.assert_called_once_with(filename,
                                           bg.env_file,
                                           TAG=tag,
                                           COLOR=color,
                                           ENV_FILE=bg.env_file)
示例#5
0
    def test_bgkube_migrate_rollback_does_not_execute_empty_db_migrations_rollback_command(
            self, exec_mock):
        tag, prev_state = get_random_int(), get_random_str()

        self.bgkube.db_migrations_rollback_command = None
        self.bgkube.migrate_rollback(tag, prev_state)

        exec_mock.assert_not_called()
示例#6
0
    def test_bgkube_migrate_apply_executes_db_migrations_apply_command_when_supplied(
            self, exec_mock):
        tag = get_random_int()

        self.bgkube.db_migrations_apply_command = get_random_str()
        self.bgkube.migrate_apply(tag)

        exec_mock.assert_called_once_with(
            tag, self.bgkube.db_migrations_apply_command)
示例#7
0
    def test_bgkube_active_env_returns_public_service_selector_color_when_found(
            self, resource_mock):
        service = Mock(obj={'spec': {'selector': {'color': get_random_str()}}})
        resource_mock.return_value = service

        env = self.bgkube.active_env()

        self.assertEqual(env, service.obj['spec']['selector']['color'])
        resource_mock.assert_called_once_with('Service',
                                              self.bgkube.service_name)
示例#8
0
    def test_bgkube_publish_does_not_swap_to_newly_deployed_env_when_smoke_tests_fail(
            self, swap_mock, smoke_mock, deploy_mock, migrate_mock, push_mock,
            build_mock):
        is_initial, prev_state = False, None

        build_mock.return_value = get_random_int()
        deploy_mock.return_value = get_random_str()
        migrate_mock.return_value = is_initial, prev_state
        smoke_mock.return_value = False

        self.assertRaises(ActionFailedError, self.bgkube.publish)

        swap_mock.assert_not_called()
示例#9
0
    def test_bgkube_migrate_performs_initial_migrations_when_initial_deployment(
            self, init_mock, apply_mock, env_mock):
        env_mock.return_value = None
        apply_mock.return_value = get_random_str()

        tag = get_random_int()
        is_initial, prev_state = self.bgkube.migrate(tag)

        self.assertEqual(is_initial, True)
        self.assertIsNone(prev_state)

        init_mock.assert_called_once_with(tag)
        apply_mock.assert_not_called()
示例#10
0
    def test_main_get_parser_args_match_bgkube_attributes(self):
        args = [
            arg.dest for arg in get_parser()._actions
            if arg.dest not in ['help', 'command', 'command_args']
        ]
        options = Mock(
            **
            {arg: get_random_str()
             for arg in args if arg in BgKube.required})
        bg = BgKube(options)

        for name in args:
            self.assertIsNotNone(getattr(bg, name, None), name)
示例#11
0
    def test_bgkube_pod_exec_runs_command_on_any_ready_pod_from_kube_api_and_returns_stdout(
            self, start_mock, pod_mock):
        pod = Mock(ready=False, name='pod1')
        ready_pod = Mock(ready=True, name='pod2')
        pod_mock.return_value = [pod, ready_pod]
        start_mock.return_value = get_random_str()

        tag, command, arg1, arg2 = get_random_int(
        ), 'echo', '"hello"', '"world'
        stdout = self.bgkube.pod_exec(tag, command, arg1, arg2)
        self.assertEqual(stdout, start_mock.return_value)

        pod_mock.assert_called_once_with(tag=tag)
        start_mock.assert_called_once_with(cmd.KUBECTL_EXEC.format(
            pod=ready_pod.name, command=command, args=' '.join([arg1, arg2])),
                                           capture=True)
示例#12
0
    def test_bgkube_publish_swaps_to_newly_deployed_env_when_smoke_tests_pass(
            self, swap_mock, smoke_mock, deploy_mock, migrate_mock, push_mock,
            build_mock):
        new_tag = get_random_int()
        new_color = get_random_str()
        is_initial, prev_state = False, None

        build_mock.return_value = new_tag
        deploy_mock.return_value = new_color
        migrate_mock.return_value = is_initial, prev_state
        smoke_mock.return_value = True

        self.bgkube.publish()

        push_mock.assert_called_once_with(new_tag)
        migrate_mock.assert_called_once_with(new_tag)
        smoke_mock.assert_called_once_with(new_color)
        swap_mock.assert_called_once_with(new_color)