|
13 | 13 | """Integration tests for the SageMaker EndpointConfig API. |
14 | 14 | """ |
15 | 15 |
|
16 | | -import boto3 |
| 16 | +from _pytest import config |
| 17 | +import botocore |
17 | 18 | import pytest |
18 | 19 | import logging |
19 | 20 | from typing import Dict |
|
24 | 25 | from e2e import ( |
25 | 26 | service_marker, |
26 | 27 | create_sagemaker_resource, |
| 28 | + sagemaker_client |
27 | 29 | ) |
28 | 30 | from e2e.replacement_values import REPLACEMENT_VALUES |
29 | 31 | from e2e.common import config as cfg |
@@ -57,59 +59,38 @@ def single_variant_config(): |
57 | 59 |
|
58 | 60 | yield (config_reference, config_resource) |
59 | 61 |
|
60 | | - k8s.delete_custom_resource(model_reference) |
| 62 | + k8s.delete_custom_resource(model_reference, 3, 10) |
61 | 63 | # Delete the k8s resource if not already deleted by tests |
62 | 64 | if k8s.get_resource_exists(config_reference): |
63 | | - k8s.delete_custom_resource(config_reference) |
| 65 | + _, deleted = k8s.delete_custom_resource(config_reference, 3, 10) |
| 66 | + assert deleted |
| 67 | + |
| 68 | +def get_sagemaker_endpoint_config(config_name: str): |
| 69 | + try: |
| 70 | + return sagemaker_client().describe_endpoint_config( |
| 71 | + EndpointConfigName=config_name |
| 72 | + ) |
| 73 | + except botocore.exceptions.ClientError as error: |
| 74 | + logging.error( |
| 75 | + f"SageMaker could not find a config with the name {config_name}. Error {error}" |
| 76 | + ) |
| 77 | + return None |
64 | 78 |
|
65 | 79 |
|
66 | 80 | @service_marker |
67 | 81 | @pytest.mark.canary |
68 | 82 | class TestEndpointConfig: |
69 | | - def _get_resource_endpoint_config_arn(self, resource: Dict): |
70 | | - assert ( |
71 | | - "ackResourceMetadata" in resource["status"] |
72 | | - and "arn" in resource["status"]["ackResourceMetadata"] |
73 | | - ) |
74 | | - return resource["status"]["ackResourceMetadata"]["arn"] |
75 | | - |
76 | | - def _get_sagemaker_endpoint_config_arn(self, sagemaker_client, config_name: str): |
77 | | - try: |
78 | | - response = sagemaker_client.describe_endpoint_config( |
79 | | - EndpointConfigName=config_name |
80 | | - ) |
81 | | - return response["EndpointConfigArn"] |
82 | | - except BaseException: |
83 | | - logging.error( |
84 | | - f"SageMaker could not find a config with the name {config_name}" |
85 | | - ) |
86 | | - return None |
87 | | - |
88 | 83 | def test_create_endpoint_config(self, single_variant_config): |
89 | 84 | (reference, resource) = single_variant_config |
90 | 85 | assert k8s.get_resource_exists(reference) |
91 | 86 |
|
92 | | - def test_config_has_correct_arn(self, sagemaker_client, single_variant_config): |
93 | | - (reference, _) = single_variant_config |
94 | | - resource = k8s.get_resource(reference) |
95 | 87 | config_name = resource["spec"].get("endpointConfigName", None) |
96 | 88 |
|
97 | | - assert config_name is not None |
98 | | - |
99 | | - assert self._get_resource_endpoint_config_arn( |
100 | | - resource |
101 | | - ) == self._get_sagemaker_endpoint_config_arn(sagemaker_client, config_name) |
102 | | - |
103 | | - def test_config_is_deleted(self, sagemaker_client, single_variant_config): |
104 | | - (reference, _) = single_variant_config |
105 | | - resource = k8s.get_resource(reference) |
106 | | - config_name = resource["spec"].get("endpointConfigName", None) |
| 89 | + assert k8s.get_resource_arn(resource) == get_sagemaker_endpoint_config(config_name)["EndpointConfigArn"] |
107 | 90 |
|
108 | 91 | # Delete the k8s resource. |
109 | | - _, deleted = k8s.delete_custom_resource(reference) |
110 | | - assert deleted is True |
| 92 | + _, deleted = k8s.delete_custom_resource(reference, 3, 10) |
| 93 | + assert deleted |
| 94 | + |
| 95 | + assert get_sagemaker_endpoint_config(config_name) is None |
111 | 96 |
|
112 | | - assert ( |
113 | | - self._get_sagemaker_endpoint_config_arn(sagemaker_client, config_name) |
114 | | - is None |
115 | | - ) |
0 commit comments