示例#1
0
    def test_file_size_spec_required_for_non_default_packages(
            self, use_new_file_size, basic_pipe_iface_data, default_resources,
            huge_resources):
        """ Resource packages besides default require file size. """

        # Establish the resource specification.
        resource_package_data = {
            "default": copy.deepcopy(default_resources),
            "huge": copy.deepcopy(huge_resources)
        }

        # Remove file size for non-default; set it for default.
        del resource_package_data["huge"]["file_size"]
        if use_new_file_size:
            resource_package_data["default"]["min_file_size"] = \
                    resource_package_data["default"].pop("file_size")

        # Create the PipelineInterface.
        for pipe_data in basic_pipe_iface_data.values():
            pipe_data["resources"] = resource_package_data
        pi = PipelineInterface(basic_pipe_iface_data)

        # Attempt to select resource package should fail for each pipeline,
        # regardless of the file size specification; restrict to nonnegative
        # file size requests to avoid collision with ValueError that should
        # arise if requesting resource package for a negative file size value.
        for pipe_name in pi.pipeline_names:
            with pytest.raises(KeyError):
                pi.choose_resource_package(pipe_name, random.randrange(0, 10))
示例#2
0
    def test_file_size_spec_not_required_for_default(self, use_new_file_size,
                                                     basic_pipe_iface_data,
                                                     default_resources,
                                                     huge_resources,
                                                     midsize_resources):
        """ Default package implies minimum file size of zero. """
        def clear_file_size(resource_package):
            for fs_var_name in ("file_size", "min_file_size"):
                if fs_var_name in resource_package:
                    del resource_package[fs_var_name]

        # Create the resource package specification data.
        resources_data = dict(
            zip(["default", "midsize", "huge"], [
                copy.deepcopy(data) for data in
                [default_resources, midsize_resources, huge_resources]
            ]))
        for pack_name, pack_data in resources_data.items():
            # Use file size spec name as appropriate; clean default package.
            if pack_name == "default":
                clear_file_size(pack_data)
            elif use_new_file_size:
                pack_data["min_file_size"] = pack_data.pop("file_size")

        # Add resource package spec data and create PipelineInterface.
        pipe_iface_data = copy.deepcopy(basic_pipe_iface_data)
        for pipe_data in pipe_iface_data.values():
            pipe_data["resources"] = resources_data
        pi = PipelineInterface(pipe_iface_data)

        # We should always get default resource package for mini file.
        for pipe_name, pipe_data in pi:
            default_resource_package = \
                    pipe_data["resources"][DEFAULT_COMPUTE_RESOURCES_NAME]
            clear_file_size(default_resource_package)
            assert default_resource_package == \
                   pi.choose_resource_package(pipe_name, 0.001)