Skip to content

Commit 5e011f0

Browse files
committed
Add cleanup logic to model builder integ tests for endpoints
1 parent f9508a3 commit 5e011f0

File tree

1 file changed

+43
-16
lines changed

1 file changed

+43
-16
lines changed

tests/integ/sagemaker/serve/test_base_model_builder_deploy.py

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,38 +12,65 @@
1212
# language governing permissions and limitations under the License.
1313
from __future__ import absolute_import
1414

15-
import pytest
16-
17-
from sagemaker import get_execution_role
18-
from sklearn.datasets import load_iris
19-
from sklearn.model_selection import train_test_split
20-
2115
import os
16+
import uuid
17+
from typing import Generator
2218

19+
import numpy as np
20+
import pandas as pd
21+
import pytest
22+
from sagemaker_core.main.resources import TrainingJob
2323
from sagemaker_core.main.shapes import (
2424
AlgorithmSpecification,
2525
Channel,
2626
DataSource,
27-
S3DataSource,
2827
OutputDataConfig,
2928
ResourceConfig,
29+
S3DataSource,
3030
StoppingCondition,
3131
)
32-
import uuid
33-
from sagemaker.serve.builder.model_builder import ModelBuilder
34-
import pandas as pd
35-
import numpy as np
36-
from sagemaker.serve import InferenceSpec, SchemaBuilder
37-
from sagemaker_core.main.resources import TrainingJob
32+
from sklearn.datasets import load_iris
33+
from sklearn.model_selection import train_test_split
3834
from xgboost import XGBClassifier
3935

40-
from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig
41-
42-
from sagemaker.s3_utils import s3_path_join
36+
from sagemaker import get_execution_role
4337
from sagemaker.async_inference import AsyncInferenceConfig
38+
from sagemaker.s3_utils import s3_path_join
39+
from sagemaker.serve import InferenceSpec, SchemaBuilder
40+
from sagemaker.serve.builder.model_builder import ModelBuilder
41+
from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig
4442
from tests.integ.utils import cleanup_model_resources
4543

4644

45+
@pytest.fixture(autouse=True)
46+
def cleanup_endpoints(mb_sagemaker_session) -> Generator[None, None, None]:
47+
"""Clean up any existing endpoints before and after tests."""
48+
# Pre-test cleanup
49+
endpoints = mb_sagemaker_session.list_endpoints()
50+
for endpoint in endpoints["Endpoints"]:
51+
try:
52+
mb_sagemaker_session.delete_endpoint(endpoint_name=endpoint["EndpointName"])
53+
mb_sagemaker_session.delete_endpoint_config(
54+
endpoint_config_name=endpoint["EndpointConfigName"]
55+
)
56+
except Exception as e:
57+
print(f"Error cleaning up endpoint {endpoint['EndpointName']}: {e}")
58+
59+
yield
60+
61+
# Post-test cleanup - this is technically redundant with the existing cleanup_model_resources
62+
# but serves as a safety net
63+
endpoints = mb_sagemaker_session.list_endpoints()
64+
for endpoint in endpoints["Endpoints"]:
65+
try:
66+
mb_sagemaker_session.delete_endpoint(endpoint_name=endpoint["EndpointName"])
67+
mb_sagemaker_session.delete_endpoint_config(
68+
endpoint_config_name=endpoint["EndpointConfigName"]
69+
)
70+
except Exception as e:
71+
print(f"Error cleaning up endpoint {endpoint['EndpointName']}: {e}")
72+
73+
4774
@pytest.fixture(scope="module")
4875
def xgboost_model_builder(mb_sagemaker_session):
4976
sagemaker_session = mb_sagemaker_session

0 commit comments

Comments
 (0)