示例#1
0
    def push_corosync_conf(lib_env,
                           corosync_conf_facade,
                           skip_offline_nodes=False):
        # pylint: disable=unused-argument
        i, expected_call = call_queue.take(CALL_TYPE_PUSH_COROSYNC_CONF)

        if not isinstance(corosync_conf_facade, ConfigFacade):
            raise AssertionError(
                ("Trying to call env.push_corosync_conf (call no. {0}) with"
                 " {1} instead of lib.corosync.config_facade.ConfigFacade"
                 ).format(i, type(corosync_conf_facade)))

        to_push = corosync_conf_facade.config.export()
        if to_push != expected_call.corosync_conf_text:
            raise AssertionError(
                "Trying to call env.push_corosync_conf but the pushed "
                "corosync.conf is not as expected:\n{0}".format(
                    prepare_diff(to_push, expected_call.corosync_conf_text)))
        if skip_offline_nodes != expected_call.skip_offline_targets:
            raise AssertionError(
                ("Trying to call env.push_corosync_conf but the "
                 "skip_offline flag is not as expected:\nexpected '{0}' != "
                 "actual '{1}'").format(
                     expected_call.skip_offline_targets,
                     skip_offline_nodes,
                 ))
        if (corosync_conf_facade.need_stopped_cluster !=
                expected_call.need_stopped_cluster):
            raise AssertionError(
                "Tryint to call env.push_corosync_conf but stopped cluster "
                "requirement (corosync_conf_facade.need_stopped_cluster) "
                f"differs. Expected: {expected_call.need_stopped_cluster}; "
                f"Actual: {corosync_conf_facade.need_stopped_cluster}")
        if expected_call.raises:
            raise LibraryError()
示例#2
0
    def push_corosync_conf(
        lib_env, corosync_conf_facade, skip_offline_nodes=False
    ):
        # pylint: disable=unused-argument
        i, expected_call = call_queue.take(CALL_TYPE_PUSH_COROSYNC_CONF)

        if not isinstance(corosync_conf_facade, ConfigFacade):
            raise AssertionError(
                (
                    "Trying to call env.push_corosync_conf (call no. {0}) with"
                    " {1} instead of lib.corosync.config_facade.ConfigFacade"
                ).format(i, type(corosync_conf_facade))
            )

        to_push = corosync_conf_facade.config.export()
        if to_push != expected_call.corosync_conf_text:
            raise AssertionError(
                "Trying to call env.push_corosync_conf but the pushed "
                "corosync.conf is not as expected:\n{0}".format(
                    prepare_diff(to_push, expected_call.corosync_conf_text)
                )
            )
        if skip_offline_nodes != expected_call.skip_offline_targets:
            raise AssertionError(
                "Trying to call env.push_corosync_conf but the skip_offline "
                "flag is not as expected:\nexpected '{0}' != actual '{1}'"
                .format(
                    expected_call.skip_offline_targets,
                    skip_offline_nodes,
                )
            )
        if expected_call.raises:
            raise LibraryError()
示例#3
0
    def cleanup(self, current_test):
        if self.__unpatch:
            self.__unpatch()

        if test_failed(current_test):
            # We have already got the message that main test failed. There is
            # a high probability that something remains in reports or in the
            # queue etc. But it is only consequence of the main test fail. And
            # we do not want to make the report confusing.
            return

        if not self.__reports_asserted:
            self.__assert_environment_created()
            if not self.__config.spy:
                self._env.report_processor.assert_reports(
                    self.__extra_reports,
                    hint="EnvAssistant.cleanup - is param"
                        " 'expected_in_processor' in the method"
                        " 'assert_raise_library_error' set correctly?"
                )

        if not self.__config.spy:
            if self.__call_queue and self.__call_queue.remaining:
                raise AssertionError(
                    "There are remaining expected calls: \n    '{0}'"
                    .format("'\n    '".join([
                        repr(call) for call in self.__call_queue.remaining
                    ]))
                )
            # If pushing corosync.conf has not been patched in the
            # LibraryEnvironment and the LibraryEnvironment was constructed
            # with a mocked corosync.conf, check if it was changed without the
            # change being specified in a test.
            # If no env.push_corosync_conf call has been specified, no mocking
            # occurs, any changes to corosync.conf are done just in memory and
            # nothing gets reported. So an explicit check is necessary.
            corosync_conf_orig = self.__original_mocked_corosync_conf
            # pylint: disable=protected-access
            corosync_conf_env = self._env._corosync_conf_data
            if (
                corosync_conf_orig
                and
                corosync_conf_orig != corosync_conf_env
            ):
                raise AssertionError(
                    (
                        "An unexpected change to corosync.conf in "
                        "LibraryEnvironment has been detected:\n{0}"
                    ).format(
                        prepare_diff(corosync_conf_orig, corosync_conf_env)
                    )
                )
示例#4
0
    def cleanup(self, current_test):
        if self.__unpatch:
            self.__unpatch()

        if test_failed(current_test):
            # We have already got the message that main test failed. There is
            # a high probability that something remains in reports or in the
            # queue etc. But it is only consequence of the main test fail. And
            # we do not want to make the report confusing.
            return

        if not self.__reports_asserted:
            self.__assert_environment_created()
            if not self.__config.spy:
                self._env.report_processor.assert_reports(
                    self.__extra_reports,
                    hint="EnvAssistant.cleanup - is param"
                    " 'expected_in_processor' in the method"
                    " 'assert_raise_library_error' set correctly?",
                )

        if not self.__config.spy:
            if self.__call_queue and self.__call_queue.remaining:
                raise AssertionError(
                    "There are remaining expected calls: \n    '{0}'".format(
                        "'\n    '".join(
                            [repr(call) for call in self.__call_queue.remaining]
                        )
                    )
                )
            # If pushing corosync.conf has not been patched in the
            # LibraryEnvironment and the LibraryEnvironment was constructed
            # with a mocked corosync.conf, check if it was changed without the
            # change being specified in a test.
            # If no env.push_corosync_conf call has been specified, no mocking
            # occurs, any changes to corosync.conf are done just in memory and
            # nothing gets reported. So an explicit check is necessary.
            corosync_conf_orig = self.__original_mocked_corosync_conf
            # pylint: disable=protected-access
            corosync_conf_env = self._env._corosync_conf_data
            if corosync_conf_orig and corosync_conf_orig != corosync_conf_env:
                raise AssertionError(
                    (
                        "An unexpected change to corosync.conf in "
                        "LibraryEnvironment has been detected:\n{0}"
                    ).format(
                        prepare_diff(corosync_conf_orig, corosync_conf_env)
                    )
                )
示例#5
0
    def push_corosync_conf(lib_env,
                           corosync_conf_facade,
                           skip_offline_nodes=False):
        # pylint: disable=unused-argument
        i, expected_call = call_queue.take(CALL_TYPE_PUSH_COROSYNC_CONF)

        if not isinstance(corosync_conf_facade, ConfigFacade):
            raise AssertionError(
                ("Trying to call env.push_corosync_conf (call no. {0}) with"
                 " {1} instead of lib.corosync.config_facade.ConfigFacade"
                 ).format(i, type(corosync_conf_facade)))

        to_push = corosync_conf_facade.config.export()
        if to_push != expected_call.corosync_conf_text:
            raise AssertionError(
                "Trying to call env.push_corosync_conf but the pushed "
                "corosync.conf is not as expected:\n{0}".format(
                    prepare_diff(to_push, expected_call.corosync_conf_text)))