2323import pytest
2424from common_library .json_serialization import json_dumps
2525from dask_task_models_library .container_tasks .docker import DockerBasicAuth
26- from dask_task_models_library .container_tasks .errors import ServiceRuntimeError
26+ from dask_task_models_library .container_tasks .errors import (
27+ ServiceInputsUseFileToKeyMapButReceivesZipDataError ,
28+ ServiceRuntimeError ,
29+ )
2730from dask_task_models_library .container_tasks .events import TaskProgressEvent
2831from dask_task_models_library .container_tasks .io import (
2932 FileUrl ,
@@ -417,7 +420,9 @@ def sidecar_task(
417420 task_owner : TaskOwner ,
418421 s3_settings : S3Settings ,
419422) -> Callable [..., ServiceExampleParam ]:
420- def _creator (command : list [str ] | None = None ) -> ServiceExampleParam :
423+ def _creator (
424+ command : list [str ] | None = None , input_data : TaskInputData | None = None
425+ ) -> ServiceExampleParam :
421426 return ServiceExampleParam (
422427 docker_basic_auth = DockerBasicAuth (
423428 server_address = "docker.io" , username = "pytest" , password = SecretStr ("" )
@@ -426,7 +431,7 @@ def _creator(command: list[str] | None = None) -> ServiceExampleParam:
426431 service_version = "latest" ,
427432 command = command
428433 or ["/bin/bash" , "-c" , "echo 'hello I'm an empty ubuntu task!" ],
429- input_data = TaskInputData .model_validate ({}),
434+ input_data = input_data or TaskInputData .model_validate ({}),
430435 output_data_keys = TaskOutputDataSchema .model_validate ({}),
431436 log_file_url = s3_remote_file_url (file_path = "log.dat" ),
432437 expected_output_data = TaskOutputData .model_validate ({}),
@@ -456,6 +461,30 @@ def sleeper_task_unexpected_output(
456461 return sleeper_task
457462
458463
464+ @pytest .fixture ()
465+ def task_with_file_to_key_map_in_input_data (
466+ sidecar_task : Callable [..., ServiceExampleParam ],
467+ ) -> ServiceExampleParam :
468+ """This task has a file-to-key map in the input data but receives zip data instead"""
469+ return sidecar_task (
470+ command = ["/bin/bash" , "-c" , "echo we create nothingness" ],
471+ input_data = TaskInputData .model_validate (
472+ {
473+ "input_1" : 23 ,
474+ "input_23" : "a string input" ,
475+ "the_input_43" : 15.0 ,
476+ "the_bool_input_54" : False ,
477+ "some_file_input_with_mapping" : FileUrl (
478+ url = TypeAdapter (AnyUrl ).validate_python (
479+ "s3://myserver/some_file_url.zip"
480+ ),
481+ file_mapping = "some_file_mapping" ,
482+ ),
483+ }
484+ ),
485+ )
486+
487+
459488@pytest .fixture ()
460489def caplog_info_level (
461490 caplog : pytest .LogCaptureFixture ,
@@ -809,6 +838,21 @@ def test_running_service_that_generates_unexpected_data_raises_exception(
809838 )
810839
811840
841+ @pytest .mark .parametrize (
842+ "integration_version, boot_mode" , [("1.0.0" , BootMode .CPU )], indirect = True
843+ )
844+ def test_running_service_with_incorrect_zip_data_that_uses_a_file_to_key_map_raises_exception (
845+ caplog_info_level : pytest .LogCaptureFixture ,
846+ app_environment : EnvVarsDict ,
847+ dask_subsystem_mock : dict [str , mock .Mock ],
848+ task_with_file_to_key_map_in_input_data : ServiceExampleParam ,
849+ ):
850+ with pytest .raises (ServiceInputsUseFileToKeyMapButReceivesZipDataError ):
851+ run_computational_sidecar (
852+ ** task_with_file_to_key_map_in_input_data .sidecar_params (),
853+ )
854+
855+
812856@pytest .mark .parametrize (
813857 "integration_version, boot_mode" , [("1.0.0" , BootMode .CPU )], indirect = True
814858)
0 commit comments