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))
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)