コード例 #1
0
        def decorator(func):
            # TODO: This is not ideal, should change this to support
            # multiple versions
            required_version = required_versions[0]
            auth_data = ObjectStorageAuthComposite()
            objectstorage_api_config = ObjectStorageAPIConfig()
            client = ObjectStorageAPIClient(auth_data.storage_url,
                                            auth_data.auth_token)
            behaviors = ObjectStorageAPI_Behaviors(
                client=client, config=objectstorage_api_config)

            swift_version = objectstorage_api_config.version
            if not swift_version and objectstorage_api_config.use_swift_info:
                info = behaviors.get_swift_info()
                swift_version = info.get('swift', {
                    'version': None
                }).get('version', None)

            if not swift_version:
                return func

            if required_version.startswith('<'):
                required_version = required_version.lstrip('<')
                compare_func = lambda sv, tv: sv < tv
                extra_message = ' less than'
            elif required_version.startswith('>'):
                required_version = required_version.lstrip('>')
                compare_func = lambda sv, tv: sv > tv
                extra_message = ' greater than'
            else:
                required_version = required_version.lstrip('=')
                compare_func = lambda sv, tv: sv.startswith(tv)
                extra_message = ''

            if compare_func(swift_version, required_version):
                func

            setattr(func, '__unittest_skip__', True)
            setattr(
                func, '__unittest_skip_why__',
                'swift running version {0}, requires version{1}: {2}'.format(
                    swift_version, extra_message, required_version))
            return func
コード例 #2
0
ファイル: fixtures.py プロジェクト: jc7998/cloudroast
        def decorator(func):
            # TODO: This is not ideal, should change this to support
            # multiple versions
            required_version = required_versions[0]
            auth_data = ObjectStorageAuthComposite()
            objectstorage_api_config = ObjectStorageAPIConfig()
            client = ObjectStorageAPIClient(auth_data.storage_url,
                                            auth_data.auth_token)
            behaviors = ObjectStorageAPI_Behaviors(
                client=client, config=objectstorage_api_config)

            swift_version = objectstorage_api_config.version
            if not swift_version and objectstorage_api_config.use_swift_info:
                info = behaviors.get_swift_info()
                swift_version = info.get(
                    'swift', {'version': None}).get('version', None)

            if not swift_version:
                return func

            if required_version.startswith('<'):
                required_version = required_version.lstrip('<')
                compare_func = lambda sv, tv: sv < tv
                extra_message = ' less than'
            elif required_version.startswith('>'):
                required_version = required_version.lstrip('>')
                compare_func = lambda sv, tv: sv > tv
                extra_message = ' greater than'
            else:
                required_version = required_version.lstrip('=')
                compare_func = lambda sv, tv: sv.startswith(tv)
                extra_message = ''

            if compare_func(swift_version, required_version):
                func

            setattr(func, '__unittest_skip__', True)
            setattr(
                func, '__unittest_skip_why__',
                'swift running version {0}, requires version{1}: {2}'.format(
                    swift_version, extra_message, required_version))
            return func
コード例 #3
0
ファイル: fixtures.py プロジェクト: rgeethapriya/cloudroast
    def required_version(cls, required_version):
        """
        Test decorator to skip tests if the version of swift does not
        match the required version provided.  If unable to retrieve the
        version, the default behavior will be to run the test.
        Configuration of what version swift is running can be done from the
        objectstorage config file.

        Note: "lambda func: func" is from the Python unit tests example
              "25.3.6. Skipping tests and expected failures":

        def skipUnlessHasattr(obj, attr):
            if hasattr(obj, attr):
                return lambda func: func
            return unittest.skip("{!r} doesn't have {!r}".format(obj, attr))

        http://docs.python.org/2/library/unittest.html

        @param required_version: condition and version required to run the
                                 test. examples:
                                    '=1.11.0.54' - run if swift version is ==
                                    '1.11.0.54'  - same as above
                                    '<1.11.0.54' - run if swift version is <
                                    '>1.11.0.54' - run if swift version is >
        @type required_version: string
        @return: a function indicating either to run or skip the test
                 based on the results of the version comparison.
        @rtype: function
        """
        auth_data = ObjectStorageAuthComposite()
        objectstorage_api_config = ObjectStorageAPIConfig()
        client = ObjectStorageAPIClient(auth_data.storage_url,
                                        auth_data.auth_token)
        behaviors = ObjectStorageAPI_Behaviors(
            client=client, config=objectstorage_api_config)

        swift_version = objectstorage_api_config.version
        if not swift_version and objectstorage_api_config.use_swift_info:
            info = behaviors.get_swift_info()
            swift_version = info.get(
                'swift', {'version': None}).get('version', None)

        if not swift_version:
            return lambda func: func

        if required_version.startswith('<'):
            required_version = required_version.lstrip('<')
            compare_func = lambda sv, tv: sv < tv
            extra_message = ' less than'
        elif required_version.startswith('>'):
            required_version = required_version.lstrip('>')
            compare_func = lambda sv, tv: sv > tv
            extra_message = ' greater than'
        else:
            required_version = required_version.lstrip('=')
            compare_func = lambda sv, tv: sv.startswith(tv)
            extra_message = ''

        if compare_func(swift_version, required_version):
            return lambda func: func

        return unittest.skip(
            'swift running version {0}, requires version{1}: {2}'.format(
                swift_version, extra_message, required_version))