|
47 | 47 | from google.cloud.aiplatform_v1beta1.types import (
|
48 | 48 | pipeline_service as PipelineServiceV1Beta1,
|
49 | 49 | )
|
| 50 | +from google.cloud.aiplatform_v1.types import ( |
| 51 | + pipeline_service as PipelineServiceV1, |
| 52 | +) |
50 | 53 | from google.cloud.aiplatform_v1beta1.services import (
|
51 | 54 | pipeline_service as v1beta1_pipeline_service,
|
52 | 55 | )
|
@@ -255,6 +258,46 @@ def mock_pipeline_service_create():
|
255 | 258 | yield mock_create_pipeline_job
|
256 | 259 |
|
257 | 260 |
|
| 261 | +@pytest.fixture |
| 262 | +def mock_pipeline_v1_service_batch_cancel(): |
| 263 | + with patch.object( |
| 264 | + pipeline_service_client.PipelineServiceClient, "batch_cancel_pipeline_jobs" |
| 265 | + ) as batch_cancel_pipeline_jobs_mock: |
| 266 | + batch_cancel_pipeline_jobs_mock.return_value = mock.Mock(ga_operation.Operation) |
| 267 | + yield batch_cancel_pipeline_jobs_mock |
| 268 | + |
| 269 | + |
| 270 | +@pytest.fixture |
| 271 | +def mock_pipeline_v1_service_batch_delete(): |
| 272 | + with mock.patch.object( |
| 273 | + pipeline_service_client.PipelineServiceClient, "batch_delete_pipeline_jobs" |
| 274 | + ) as mock_batch_pipeline_jobs: |
| 275 | + mock_batch_pipeline_jobs.return_value = ( |
| 276 | + make_v1_batch_delete_pipeline_jobs_response() |
| 277 | + ) |
| 278 | + mock_lro = mock.Mock(ga_operation.Operation) |
| 279 | + mock_lro.result.return_value = make_v1_batch_delete_pipeline_jobs_response() |
| 280 | + mock_batch_pipeline_jobs.return_value = mock_lro |
| 281 | + yield mock_batch_pipeline_jobs |
| 282 | + |
| 283 | + |
| 284 | +def make_v1_batch_delete_pipeline_jobs_response(): |
| 285 | + response = PipelineServiceV1.BatchDeletePipelineJobsResponse() |
| 286 | + response.pipeline_jobs.append( |
| 287 | + make_pipeline_job_with_name( |
| 288 | + _TEST_PIPELINE_JOB_NAME, |
| 289 | + gca_pipeline_state.PipelineState.PIPELINE_STATE_SUCCEEDED, |
| 290 | + ) |
| 291 | + ) |
| 292 | + response.pipeline_jobs.append( |
| 293 | + make_pipeline_job_with_name( |
| 294 | + _TEST_PIPELINE_JOB_NAME_2, |
| 295 | + gca_pipeline_state.PipelineState.PIPELINE_STATE_FAILED, |
| 296 | + ) |
| 297 | + ) |
| 298 | + return response |
| 299 | + |
| 300 | + |
258 | 301 | @pytest.fixture
|
259 | 302 | def mock_pipeline_v1beta1_service_batch_delete():
|
260 | 303 | with mock.patch.object(
|
@@ -342,6 +385,22 @@ def make_pipeline_job(state):
|
342 | 385 | )
|
343 | 386 |
|
344 | 387 |
|
| 388 | +def make_pipeline_job_with_name(name, state): |
| 389 | + return gca_pipeline_job.PipelineJob( |
| 390 | + name=name, |
| 391 | + state=state, |
| 392 | + create_time=_TEST_PIPELINE_CREATE_TIME, |
| 393 | + service_account=_TEST_SERVICE_ACCOUNT, |
| 394 | + network=_TEST_NETWORK, |
| 395 | + reserved_ip_ranges=_TEST_RESERVED_IP_RANGES, |
| 396 | + job_detail=gca_pipeline_job.PipelineJobDetail( |
| 397 | + pipeline_run_context=gca_context.Context( |
| 398 | + name=name, |
| 399 | + ) |
| 400 | + ), |
| 401 | + ) |
| 402 | + |
| 403 | + |
345 | 404 | @pytest.fixture
|
346 | 405 | def mock_pipeline_service_get():
|
347 | 406 | with mock.patch.object(
|
@@ -2079,3 +2138,86 @@ def test_create_two_and_batch_delete_pipeline_jobs_returns_response(
|
2079 | 2138 |
|
2080 | 2139 | assert mock_pipeline_v1beta1_service_batch_delete.call_count == 1
|
2081 | 2140 | assert len(response.pipeline_jobs) == 2
|
| 2141 | + |
| 2142 | + @pytest.mark.usefixtures( |
| 2143 | + "mock_pipeline_service_get", |
| 2144 | + "mock_pipeline_v1_service_batch_delete", |
| 2145 | + ) |
| 2146 | + @pytest.mark.parametrize( |
| 2147 | + "job_spec", |
| 2148 | + [ |
| 2149 | + _TEST_PIPELINE_SPEC_JSON, |
| 2150 | + _TEST_PIPELINE_SPEC_YAML, |
| 2151 | + _TEST_PIPELINE_JOB, |
| 2152 | + _TEST_PIPELINE_SPEC_LEGACY_JSON, |
| 2153 | + _TEST_PIPELINE_SPEC_LEGACY_YAML, |
| 2154 | + _TEST_PIPELINE_JOB_LEGACY, |
| 2155 | + ], |
| 2156 | + ) |
| 2157 | + def test_create_two_and_batch_delete_v1_pipeline_jobs_returns_response( |
| 2158 | + self, |
| 2159 | + mock_load_yaml_and_json, |
| 2160 | + mock_pipeline_v1_service_batch_delete, |
| 2161 | + ): |
| 2162 | + aiplatform.init( |
| 2163 | + project=_TEST_PROJECT, |
| 2164 | + staging_bucket=_TEST_GCS_BUCKET_NAME, |
| 2165 | + location=_TEST_LOCATION, |
| 2166 | + credentials=_TEST_CREDENTIALS, |
| 2167 | + ) |
| 2168 | + |
| 2169 | + job = pipeline_jobs.PipelineJob( |
| 2170 | + display_name=_TEST_PIPELINE_JOB_DISPLAY_NAME, |
| 2171 | + template_path=_TEST_TEMPLATE_PATH, |
| 2172 | + job_id=_TEST_PIPELINE_JOB_ID, |
| 2173 | + ) |
| 2174 | + |
| 2175 | + response = job.batch_delete( |
| 2176 | + project=_TEST_PROJECT, |
| 2177 | + location=_TEST_LOCATION, |
| 2178 | + names=[_TEST_PIPELINE_JOB_ID, _TEST_PIPELINE_JOB_ID_2], |
| 2179 | + ) |
| 2180 | + |
| 2181 | + assert mock_pipeline_v1_service_batch_delete.call_count == 1 |
| 2182 | + assert len(response.pipeline_jobs) == 2 |
| 2183 | + |
| 2184 | + @pytest.mark.usefixtures( |
| 2185 | + "mock_pipeline_service_get", |
| 2186 | + "mock_pipeline_v1_service_batch_cancel", |
| 2187 | + ) |
| 2188 | + @pytest.mark.parametrize( |
| 2189 | + "job_spec", |
| 2190 | + [ |
| 2191 | + _TEST_PIPELINE_SPEC_JSON, |
| 2192 | + _TEST_PIPELINE_SPEC_YAML, |
| 2193 | + _TEST_PIPELINE_JOB, |
| 2194 | + _TEST_PIPELINE_SPEC_LEGACY_JSON, |
| 2195 | + _TEST_PIPELINE_SPEC_LEGACY_YAML, |
| 2196 | + _TEST_PIPELINE_JOB_LEGACY, |
| 2197 | + ], |
| 2198 | + ) |
| 2199 | + def test_create_two_and_batch_cancel_v1_pipeline_jobs_returns_response( |
| 2200 | + self, |
| 2201 | + mock_load_yaml_and_json, |
| 2202 | + mock_pipeline_v1_service_batch_cancel, |
| 2203 | + ): |
| 2204 | + aiplatform.init( |
| 2205 | + project=_TEST_PROJECT, |
| 2206 | + staging_bucket=_TEST_GCS_BUCKET_NAME, |
| 2207 | + location=_TEST_LOCATION, |
| 2208 | + credentials=_TEST_CREDENTIALS, |
| 2209 | + ) |
| 2210 | + |
| 2211 | + job = pipeline_jobs.PipelineJob( |
| 2212 | + display_name=_TEST_PIPELINE_JOB_DISPLAY_NAME, |
| 2213 | + template_path=_TEST_TEMPLATE_PATH, |
| 2214 | + job_id=_TEST_PIPELINE_JOB_ID, |
| 2215 | + ) |
| 2216 | + |
| 2217 | + job.batch_cancel( |
| 2218 | + project=_TEST_PROJECT, |
| 2219 | + location=_TEST_LOCATION, |
| 2220 | + names=[_TEST_PIPELINE_JOB_ID, _TEST_PIPELINE_JOB_ID_2], |
| 2221 | + ) |
| 2222 | + |
| 2223 | + assert mock_pipeline_v1_service_batch_cancel.call_count == 1 |
0 commit comments