Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def deployEndpointAndDeployment(client: MLClient, endpoint: BatchEndpoint, deplo
@pytest.mark.usefixtures("recorded_test")
@pytest.mark.production_experiences_test
class TestBatchDeployment(AzureRecordedTestCase):
@pytest.mark.skip(reason="TODO (1546262): Test failing constantly, so disabling it")
@pytest.mark.skip(reason="TODO (ADO 1546262): Test failing constantly due to service-side issues in batch deployment creation. Re-enable once the batch deployment service is stable.")
def test_batch_deployment(self, client: MLClient, data_with_2_versions: str) -> None:
endpoint_yaml = "tests/test_configs/endpoints/batch/batch_endpoint_mlflow_new.yaml"
deployment_yaml = "tests/test_configs/deployments/batch/batch_deployment_mlflow_new.yaml"
Expand Down Expand Up @@ -72,7 +72,7 @@ def test_batch_deployment(self, client: MLClient, data_with_2_versions: str) ->
)
client.batch_endpoints.begin_delete(name=endpoint.name)

@pytest.mark.skip(reason="TODO (2349252): Scoring script not found in code configuration")
@pytest.mark.skip(reason="TODO (ADO 2349252): Scoring script not found in code configuration during batch deployment label resolution. Service-side issue with code configuration lookup.")
def test_batch_deployment_dependency_label_resolution(
self,
client: MLClient,
Expand Down Expand Up @@ -136,7 +136,7 @@ def test_batch_deployment_dependency_label_resolution(
)
assert resolved_model.asset_name == model_name and resolved_model.asset_version == model_versions[-1]

@pytest.mark.skip(reason="TODO (2349249): 'Environment Id' is not a valid ARM resource identifier")
@pytest.mark.skip(reason="TODO (ADO 2349249): 'Environment Id' is not a valid ARM resource identifier when downloading batch job outputs. Service-side validation issue.")
def test_batch_job_download(
self,
client: MLClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def test_mlflow_batch_endpoint_create_and_update(

raise Exception(f"Batch endpoint {name} is supposed to be deleted.")

@pytest.mark.skip("TODO (2349930) SSL Certificate error")
@pytest.mark.skip(reason="TODO (ADO 2349930): SSL Certificate error when invoking batch endpoint. TLS/certificate validation fails in the test environment.")
def test_batch_invoke(
self, client: MLClient, rand_batch_name: Callable[[], str], rand_batch_deployment_name: Callable[[], str]
) -> None:
Expand Down Expand Up @@ -143,7 +143,7 @@ def test_batch_component(
)
assert job

@pytest.mark.skip("TODO (2349930) SSL Certificate error")
@pytest.mark.skip(reason="TODO (ADO 2349930): SSL Certificate error when invoking batch endpoint. TLS/certificate validation fails in the test environment.")
def test_batch_invoke_outputs(
self,
client: MLClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def test_create_and_get(self, client: MLClient, code_asset_path: str, randstr: C
)
assert code_asset_1.id == code_asset_2.id == arm_id

@pytest.mark.skip(reason="not raising exception")
@pytest.mark.skip(reason="The service does not raise an exception when re-uploading a code asset with a different content hash for the same name/version. Test is waiting on service-side validation enforcement.")
def test_asset_path_update(
self,
client: MLClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
@pytest.mark.training_experiences_test
class TestCommandJob(AzureRecordedTestCase):
@pytest.mark.skip(
"Investigate The network connectivity issue encountered for 'Microsoft.MachineLearningServices'; cannot fulfill the request."
reason="Network connectivity issue: 'Microsoft.MachineLearningServices' cannot fulfill the request in the test workspace. Re-enable once the workspace network configuration is updated."
)
@pytest.mark.e2etest
def test_command_job(self, randstr: Callable[[], str], client: MLClient) -> None:
Expand Down Expand Up @@ -181,7 +181,7 @@ def test_command_job_with_dataset_short_uri(self, randstr: Callable[[], str], cl
assert command_job_2.compute == "testCompute"
check_tid_in_url(client, command_job_2)

@pytest.mark.skip("https://dev.azure.com/msdata/Vienna/_workitems/edit/2009659")
@pytest.mark.skip(reason="Blocked by ADO 2009659: Job builder output type handling fails when inputs include a mix of URI_FILE, asset, and local data paths.")
@pytest.mark.e2etest
def test_command_job_builder(self, data_with_2_versions: str, client: MLClient) -> None:
inputs = {
Expand Down Expand Up @@ -259,7 +259,7 @@ def test_command_job_local(self, randstr: Callable[[], str], client: MLClient) -
assert command_job.environment_variables[COMMON_RUNTIME_ENV_VAR] == "true"

@pytest.mark.e2etest
@pytest.mark.skip("TODO: 1210641- Re-enable when we switch to runner-style tests")
@pytest.mark.skip(reason="TODO (ADO 1210641): Re-enable when tests are migrated to runner-style infrastructure that supports proper job streaming and parameter validation.")
def test_command_job_with_params(self, randstr: Callable[[], str], client: MLClient) -> None:
job_name = randstr("job_name")
params_override = [{"name": job_name}]
Expand All @@ -274,7 +274,7 @@ def test_command_job_with_params(self, randstr: Callable[[], str], client: MLCli
client.jobs.stream(job_name)
assert client.jobs.get(job_name).parameters

@pytest.mark.skip("https://dev.azure.com/msdata/Vienna/_workitems/edit/2009659")
@pytest.mark.skip(reason="Blocked by ADO 2009659: Environment version resolution fails when modifying environment reference after job creation.")
@pytest.mark.e2etest
def test_command_job_with_modified_environment(self, randstr: Callable[[], str], client: MLClient) -> None:
job_name = randstr("job_name")
Expand All @@ -294,7 +294,7 @@ def test_command_job_with_modified_environment(self, randstr: Callable[[], str],
assert job.environment == "azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu:33"

@pytest.mark.e2etest
@pytest.mark.skip("Investigate why cancel does not record some upload requests of code assets")
@pytest.mark.skip(reason="Non-deterministic: the test-proxy recording misses some code asset upload requests when cancelling a job mid-flight. Needs investigation into the recording ordering.")
def test_command_job_cancel(self, randstr: Callable[[], str], client: MLClient) -> None:
job_name = randstr("job_name")
print(f"Creating job to validate the cancel job operation: {job_name}")
Expand Down Expand Up @@ -484,7 +484,7 @@ def test_command_job_register_output(self, randstr: Callable[[str], str], client
assert job.outputs.test2.name == "test2_output"
assert job.outputs.test3.name == "test3_output"

@pytest.mark.skip("Investigate ray distribution type is no supported in 2025_01")
@pytest.mark.skip(reason="Ray distribution type is not supported by the 2025-01 API version. Re-enable once Ray support is available in the target API version.")
@pytest.mark.e2etest
def test_ray_command_job(self, randstr: Callable[[], str], client: MLClient) -> None:
job = client.jobs.create_or_update(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1010,7 +1010,7 @@ def test_command_component_with_properties_e2e_flow(self, client: MLClient, rand
# assert previous_dict == current_dict

@pytest.mark.skip(
reason="TODO (2349965): Message: User/tenant/subscription is not allowed to access registry UnsecureTest-hello-world"
reason="TODO (ADO 2349965): User/tenant/subscription is not allowed to access registry 'UnsecureTest-hello-world'. The IPP registry is restricted to specific tenants/subscriptions."
)
@pytest.mark.usefixtures("enable_private_preview_schema_features")
def test_ipp_component_create(self, ipp_registry_client: MLClient, randstr: Callable[[str], str]):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def test_component_recreated_with_pycache(self, client: MLClient, randstr: Calla
) as base_dir:
self._assert_recreated_component_no_change(base_dir, client, randstr)

@pytest.mark.skip(reason="seems that this still can't trigger the automatic Windows path shortening")
@pytest.mark.skip(reason="Windows automatic path shortening (8.3 filename format) cannot be reliably triggered in current CI environments. Test validates Windows-specific behaviour that requires a real long-path scenario.")
def test_component_recreate_with_long_path(self, client: MLClient, randstr: Callable[[str], str]) -> None:
long_dir_name = os.path.join(*(["a" * 50] * 10))
with build_temp_folder(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def test_component_validate_via_schema(self, client: MLClient, randstr: Callable
"command": "Invalid data binding expression: inputs.non_existent, outputs.non_existent",
}

@pytest.mark.skip(reason="Enable this test after server-side is ready.")
@pytest.mark.skip(reason="Remote component validation is pending server-side support. Re-enable once the service endpoint is available and the test recording has been updated.")
def test_component_remote_validate_basic(self, client: MLClient, randstr: Callable[[str], str]) -> None:
component_path = "./tests/test_configs/components/helloworld_component.yml"
# we must use a valid component yaml here, or validation error will be raised in load_component
Expand Down
2 changes: 1 addition & 1 deletion sdk/ml/azure-ai-ml/tests/dataset/e2etests/test_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ def get_data_list():
client.data.restore(name=name)
assert name in get_data_list()

@pytest.mark.skip(reason="investigate later")
@pytest.mark.skip(reason="TODO (ADO 1791832): The list-all operation is slow enough to cause testing pipeline timeouts. Test coverage for archive/restore container needs a more efficient assertion strategy.")
def test_data_unsupported_datastore(self, client: MLClient, tmp_path: Path, randstr: Callable[[], str]) -> None:
f = tmp_path / "data_local.yaml"
data_path = tmp_path / "sample1.csv"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def mltable_schema():


@pytest.mark.unittest
@pytest.mark.skip(reason="extension folder does not exist in GitHub")
@pytest.mark.skip(reason="The 'extension/schema/MLTable.schema.json' file is not present in the GitHub repository checkout. This test can only run in an internal development environment with the full monorepo.")
class TestDataUtils:
def test_validate_mltable_metadata_schema(self, tmp_path: Path, mltable_schema: Dict):
mltable_folder = tmp_path / "mltable_folder"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ def condition_pipeline():
"type": "if_else",
}

@pytest.mark.skipif(condition=not is_live(), reason="TODO(2177353): check why recorded tests failure.")
@pytest.mark.skipif(condition=not is_live(), reason="TODO (ADO 2177353): Recorded playback fails for this control flow pipeline test. Likely non-deterministic component version ordering.")
def test_if_else_multiple_blocks_subgraph(self, client: MLClient):
hello_world_component_no_paths = load_component(
source="./tests/test_configs/components/helloworld_component_no_paths.yml"
Expand Down
22 changes: 11 additions & 11 deletions sdk/ml/azure-ai-ml/tests/dsl/e2etests/test_dsl_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -665,7 +665,7 @@ def sample_pipeline(job_in_file):
}
assert expected_job == actual_job

@pytest.mark.skip("Skipping due to Spark version Upgrade")
@pytest.mark.skip(reason="Spark version upgrade broke these tests; the Spark runtime version in the test workspace is incompatible with the test configuration. Re-enable after updating test configs for the new Spark version.")
def test_spark_with_optional_inputs(self, randstr: Callable[[str], str], client: MLClient):
component_yaml = "./tests/test_configs/dsl_pipeline/spark_job_in_pipeline/component_with_optional_inputs.yml"
spark_with_optional_inputs_component_func = load_component(source=component_yaml)
Expand Down Expand Up @@ -1611,7 +1611,7 @@ def pipeline(job_in_number, job_in_other_number, job_in_path):
job = client.jobs.create_or_update(pipeline, force_rerun=True)
assert job.settings.force_rerun is True

@pytest.mark.skip("TODO (2370129): Recording fails due to 'Cannot find pipeline run' error")
@pytest.mark.skip(reason="TODO (ADO 2370129): Recording fails with 'Cannot find pipeline run' error during test-proxy playback. Needs re-recording or investigation of the pipeline run lookup logic.")
def test_parallel_components_with_tabular_input(self, client: MLClient) -> None:
components_dir = tests_root_dir / "test_configs/dsl_pipeline/parallel_component_with_tabular_input"

Expand Down Expand Up @@ -1646,7 +1646,7 @@ def parallel_in_pipeline(job_data_path, score_model):
assert_job_input_output_types(pipeline_job)
assert pipeline_job.settings.default_compute == "cpu-cluster"

@pytest.mark.skip("TODO (2370129): Recording fails due to 'Cannot find pipeline run' error")
@pytest.mark.skip(reason="TODO (ADO 2370129): Recording fails with 'Cannot find pipeline run' error during test-proxy playback. Needs re-recording or investigation of the pipeline run lookup logic.")
def test_parallel_components_with_tabular_input_bind_to_literal_input(self, client: MLClient) -> None:
components_dir = tests_root_dir / "test_configs/dsl_pipeline/parallel_component_with_tabular_input"

Expand Down Expand Up @@ -1685,7 +1685,7 @@ def parallel_in_pipeline(job_data_path, score_model, literal_input):
assert_job_input_output_types(pipeline_job)
assert pipeline_job.settings.default_compute == "cpu-cluster"

@pytest.mark.skip("TODO (2370129): Recording fails due to 'Cannot find pipeline run' error")
@pytest.mark.skip(reason="TODO (ADO 2370129): Recording fails with 'Cannot find pipeline run' error during test-proxy playback. Needs re-recording or investigation of the pipeline run lookup logic.")
def test_parallel_components_with_file_input(self, client: MLClient) -> None:
components_dir = tests_root_dir / "test_configs/dsl_pipeline/parallel_component_with_file_input"

Expand Down Expand Up @@ -1716,7 +1716,7 @@ def parallel_in_pipeline(job_data_path):
assert_job_input_output_types(pipeline_job)
assert pipeline_job.settings.default_compute == "cpu-cluster"

@pytest.mark.skip("TODO (2370129): Recording fails due to 'Cannot find pipeline run' error")
@pytest.mark.skip(reason="TODO (ADO 2370129): Recording fails with 'Cannot find pipeline run' error during test-proxy playback. Needs re-recording or investigation of the pipeline run lookup logic.")
def test_parallel_run_function(self, client: MLClient):
data = Input(
type=AssetTypes.MLTABLE,
Expand Down Expand Up @@ -1776,7 +1776,7 @@ def test_parallel_run_function(self, client: MLClient):
assert_job_input_output_types(pipeline_job)
assert pipeline_job.settings.default_compute == "cpu-cluster"

@pytest.mark.skip("TODO (2370129): Recording fails due to 'Cannot find pipeline run' error")
@pytest.mark.skip(reason="TODO (ADO 2370129): Recording fails with 'Cannot find pipeline run' error during test-proxy playback. Needs re-recording or investigation of the pipeline run lookup logic.")
def test_parallel_run_function_run_settings_bind_to_literal_input(self, client: MLClient):
data = Input(
type=AssetTypes.MLTABLE,
Expand Down Expand Up @@ -2161,7 +2161,7 @@ def test_dsl_pipeline_with_only_setting_pipeline_level(self, client: MLClient):
}
assert expected_job == actual_job

@pytest.mark.skipif(condition=not is_live(), reason="TODO(2177353): investigate why this test fails.")
@pytest.mark.skipif(condition=not is_live(), reason="TODO (ADO 2177353): Recorded playback fails for these pipeline tests. Root cause under investigation; likely a non-deterministic ordering of component versions between recording and playback.")
def test_dsl_pipeline_with_only_setting_binding_node(self, client: MLClient):
# Todo: checkout run priority when backend is ready
from test_configs.dsl_pipeline.pipeline_with_set_binding_output_input.pipeline import (
Expand Down Expand Up @@ -2219,7 +2219,7 @@ def test_dsl_pipeline_with_only_setting_binding_node(self, client: MLClient):
}
assert expected_job == actual_job

@pytest.mark.skipif(condition=not is_live(), reason="TODO(2177353): investigate why this test fails.")
@pytest.mark.skipif(condition=not is_live(), reason="TODO (ADO 2177353): Recorded playback fails for these pipeline tests. Root cause under investigation; likely a non-deterministic ordering of component versions between recording and playback.")
def test_dsl_pipeline_with_setting_binding_node_and_pipeline_level(self, client: MLClient) -> None:
from test_configs.dsl_pipeline.pipeline_with_set_binding_output_input.pipeline import (
pipeline_with_setting_binding_node_and_pipeline_level,
Expand Down Expand Up @@ -2333,7 +2333,7 @@ def test_dsl_pipeline_with_command_builder_setting_binding_node_and_pipeline_lev
}
assert expected_job == actual_job

@pytest.mark.skip("TODO (2375086): Job failing with 'User failed to call SaveUserToken before GetUserToken'")
@pytest.mark.skip(reason="TODO (ADO 2375086): Job failing with 'User failed to call SaveUserToken before GetUserToken' when submitting Spark jobs via user identity. Service-side token management issue.")
def test_spark_components(self, client: MLClient, randstr: Callable[[str], str]) -> None:
components_dir = tests_root_dir / "test_configs/dsl_pipeline/spark_job_in_pipeline"
add_greeting_column = load_component(str(components_dir / "add_greeting_column_component.yml"))
Expand Down Expand Up @@ -2505,7 +2505,7 @@ def pipeline_with_default_component():
created_pipeline_job: PipelineJob = client.jobs.get(pipeline_job.name)
assert created_pipeline_job.jobs["node1"].component == f"{component_name}@default"

@pytest.mark.skip("Will renable when parallel e2e recording issue is fixed")
@pytest.mark.skip(reason="Parallel job tests fail to record due to non-deterministic parallel step ordering in test-proxy recordings. Re-enable once the recording infrastructure supports stable parallel step capture.")
def test_pipeline_node_identity_with_component(self, client: MLClient):
path = "./tests/test_configs/components/helloworld_component.yml"
component_func = load_component(path)
Expand Down Expand Up @@ -2664,7 +2664,7 @@ def my_pipeline():
pipeline_job.settings.default_compute = "cpu-cluster"
assert_job_cancel(pipeline_job, client)

@pytest.mark.skip("Will renable when parallel e2e recording issue is fixed")
@pytest.mark.skip(reason="Parallel job tests fail to record due to non-deterministic parallel step ordering in test-proxy recordings. Re-enable once the recording infrastructure supports stable parallel step capture.")
@pytest.mark.disable_mock_code_hash
def test_register_output_sdk(self, client: MLClient):
from azure.ai.ml.sweep import (
Expand Down
Loading
Loading