Skip to content

Commit c578f07

Browse files
sage-makersagemaker-bot
authored andcommitted
Add cleanup logic to model builder integ tests for endpoints (aws#5022)
* Add cleanup logic to model builder integ tests for endpoints * Fix endpoint api call
1 parent 807b193 commit c578f07

File tree

1 file changed

+50
-16
lines changed

1 file changed

+50
-16
lines changed

tests/integ/sagemaker/serve/test_base_model_builder_deploy.py

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,38 +12,72 @@
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+
sagemaker_client = mb_sagemaker_session.sagemaker_client
49+
50+
# Pre-test cleanup
51+
try:
52+
endpoints = sagemaker_client.list_endpoints()
53+
for endpoint in endpoints["Endpoints"]:
54+
try:
55+
sagemaker_client.delete_endpoint(EndpointName=endpoint["EndpointName"])
56+
sagemaker_client.delete_endpoint_config(
57+
EndpointConfigName=endpoint["EndpointConfigName"]
58+
)
59+
except Exception as e:
60+
print(f"Error cleaning up endpoint {endpoint['EndpointName']}: {e}")
61+
except Exception as e:
62+
print(f"Error listing endpoints: {e}")
63+
64+
yield
65+
66+
# Post-test cleanup
67+
try:
68+
endpoints = sagemaker_client.list_endpoints()
69+
for endpoint in endpoints["Endpoints"]:
70+
try:
71+
sagemaker_client.delete_endpoint(EndpointName=endpoint["EndpointName"])
72+
sagemaker_client.delete_endpoint_config(
73+
EndpointConfigName=endpoint["EndpointConfigName"]
74+
)
75+
except Exception as e:
76+
print(f"Error cleaning up endpoint {endpoint['EndpointName']}: {e}")
77+
except Exception as e:
78+
print(f"Error listing endpoints: {e}")
79+
80+
4781
@pytest.fixture(scope="module")
4882
def xgboost_model_builder(mb_sagemaker_session):
4983
sagemaker_session = mb_sagemaker_session

0 commit comments

Comments
 (0)