2020 _construct_url ,
2121)
2222from sagemaker .serve .utils .exceptions import ModelBuilderException , LocalModelOutOfMemoryException
23+ from sagemaker .serve .utils .types import ImageUriOption
2324from sagemaker .user_agent import SDK_VERSION
2425
2526MOCK_SESSION = Mock ()
@@ -71,6 +72,7 @@ def test_capture_telemetry_decorator_djl_success(self, mock_send_telemetry):
7172 mock_model_builder = ModelBuilderMock ()
7273 mock_model_builder .serve_settings .telemetry_opt_out = False
7374 mock_model_builder .image_uri = MOCK_DJL_CONTAINER
75+ mock_model_builder ._is_custom_image_uri = False
7476 mock_model_builder .model = MOCK_HUGGINGFACE_ID
7577 mock_model_builder .mode = Mode .LOCAL_CONTAINER
7678 mock_model_builder .model_server = ModelServer .DJL_SERVING
@@ -85,6 +87,37 @@ def test_capture_telemetry_decorator_djl_success(self, mock_send_telemetry):
8587 "&x-modelServer=4"
8688 "&x-imageTag=djl-inference:0.25.0-deepspeed0.11.0-cu118"
8789 f"&x-sdkVersion={ SDK_VERSION } "
90+ f"&x-defaultImageUsage={ ImageUriOption .DEFAULT_IMAGE .value } "
91+ f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
92+ f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
93+ f"&x-latency={ latency } "
94+ )
95+
96+ mock_send_telemetry .assert_called_once_with (
97+ "1" , 2 , MOCK_SESSION , None , None , expected_extra_str
98+ )
99+
100+ @patch ("sagemaker.serve.utils.telemetry_logger._send_telemetry" )
101+ def test_capture_telemetry_decorator_djl_success_with_custom_image (self , mock_send_telemetry ):
102+ mock_model_builder = ModelBuilderMock ()
103+ mock_model_builder .serve_settings .telemetry_opt_out = False
104+ mock_model_builder .image_uri = MOCK_DJL_CONTAINER
105+ mock_model_builder ._is_custom_image_uri = True
106+ mock_model_builder .model = MOCK_HUGGINGFACE_ID
107+ mock_model_builder .mode = Mode .LOCAL_CONTAINER
108+ mock_model_builder .model_server = ModelServer .DJL_SERVING
109+ mock_model_builder .sagemaker_session .endpoint_arn = MOCK_ENDPOINT_ARN
110+
111+ mock_model_builder .mock_deploy ()
112+
113+ args = mock_send_telemetry .call_args .args
114+ latency = str (args [5 ]).split ("latency=" )[1 ]
115+ expected_extra_str = (
116+ f"{ MOCK_FUNC_NAME } "
117+ "&x-modelServer=4"
118+ "&x-imageTag=djl-inference:0.25.0-deepspeed0.11.0-cu118"
119+ f"&x-sdkVersion={ SDK_VERSION } "
120+ f"&x-defaultImageUsage={ ImageUriOption .CUSTOM_1P_IMAGE .value } "
88121 f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
89122 f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
90123 f"&x-latency={ latency } "
@@ -99,6 +132,7 @@ def test_capture_telemetry_decorator_tgi_success(self, mock_send_telemetry):
99132 mock_model_builder = ModelBuilderMock ()
100133 mock_model_builder .serve_settings .telemetry_opt_out = False
101134 mock_model_builder .image_uri = MOCK_TGI_CONTAINER
135+ mock_model_builder ._is_custom_image_uri = False
102136 mock_model_builder .model = MOCK_HUGGINGFACE_ID
103137 mock_model_builder .mode = Mode .LOCAL_CONTAINER
104138 mock_model_builder .model_server = ModelServer .TGI
@@ -113,6 +147,7 @@ def test_capture_telemetry_decorator_tgi_success(self, mock_send_telemetry):
113147 "&x-modelServer=6"
114148 "&x-imageTag=huggingface-pytorch-inference:2.0.0-transformers4.28.1-cpu-py310-ubuntu20.04"
115149 f"&x-sdkVersion={ SDK_VERSION } "
150+ f"&x-defaultImageUsage={ ImageUriOption .DEFAULT_IMAGE .value } "
116151 f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
117152 f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
118153 f"&x-latency={ latency } "
@@ -127,6 +162,7 @@ def test_capture_telemetry_decorator_no_call_when_disabled(self, mock_send_telem
127162 mock_model_builder = ModelBuilderMock ()
128163 mock_model_builder .serve_settings .telemetry_opt_out = True
129164 mock_model_builder .image_uri = MOCK_DJL_CONTAINER
165+ mock_model_builder ._is_custom_image_uri = False
130166 mock_model_builder .model = MOCK_HUGGINGFACE_ID
131167 mock_model_builder .model_server = ModelServer .DJL_SERVING
132168
@@ -139,6 +175,7 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
139175 mock_model_builder = ModelBuilderMock ()
140176 mock_model_builder .serve_settings .telemetry_opt_out = False
141177 mock_model_builder .image_uri = MOCK_DJL_CONTAINER
178+ mock_model_builder ._is_custom_image_uri = False
142179 mock_model_builder .model = MOCK_HUGGINGFACE_ID
143180 mock_model_builder .mode = Mode .LOCAL_CONTAINER
144181 mock_model_builder .model_server = ModelServer .DJL_SERVING
@@ -158,6 +195,7 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
158195 "&x-modelServer=4"
159196 "&x-imageTag=djl-inference:0.25.0-deepspeed0.11.0-cu118"
160197 f"&x-sdkVersion={ SDK_VERSION } "
198+ f"&x-defaultImageUsage={ ImageUriOption .DEFAULT_IMAGE .value } "
161199 f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
162200 f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
163201 f"&x-latency={ latency } "
0 commit comments