1717from sagemaker .serve .utils .telemetry_logger import (
1818 _send_telemetry ,
1919 _capture_telemetry ,
20+ _construct_url ,
2021)
2122from sagemaker .serve .utils .exceptions import ModelBuilderException , LocalModelOutOfMemoryException
2223
3031 "huggingface-pytorch-inference:2.0.0-transformers4.28.1-cpu-py310-ubuntu20.04"
3132)
3233MOCK_HUGGINGFACE_ID = "meta-llama/Llama-2-7b-hf"
34+ MOCK_EXCEPTION = LocalModelOutOfMemoryException ("mock raise ex" )
3335
3436
3537class ModelBuilderMock :
@@ -63,7 +65,7 @@ def test_log_handle_exception(self, mocked_get_accountId):
6365 self .assertRaises (Exception )
6466
6567 @patch ("sagemaker.serve.utils.telemetry_logger._send_telemetry" )
66- def test_capture_telemetry_decorator_djl_local_container_success (self , mock_send_telemetry ):
68+ def test_capture_telemetry_decorator_djl_success (self , mock_send_telemetry ):
6769 mock_model_builder = ModelBuilderMock ()
6870 mock_model_builder .serve_settings .telemetry_opt_out = False
6971 mock_model_builder .image_uri = MOCK_DJL_CONTAINER
@@ -84,7 +86,7 @@ def test_capture_telemetry_decorator_djl_local_container_success(self, mock_send
8486 )
8587
8688 @patch ("sagemaker.serve.utils.telemetry_logger._send_telemetry" )
87- def test_capture_telemetry_decorator_tgi_local_container_success (self , mock_send_telemetry ):
89+ def test_capture_telemetry_decorator_tgi_success (self , mock_send_telemetry ):
8890 mock_model_builder = ModelBuilderMock ()
8991 mock_model_builder .serve_settings .telemetry_opt_out = False
9092 mock_model_builder .image_uri = MOCK_TGI_CONTAINER
@@ -126,7 +128,7 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
126128 mock_model_builder .model_server = ModelServer .DJL_SERVING
127129
128130 mock_exception = Mock ()
129- mock_exception_obj = LocalModelOutOfMemoryException ( "mock raise ex" )
131+ mock_exception_obj = MOCK_EXCEPTION
130132 mock_exception .side_effect = mock_exception_obj
131133
132134 with self .assertRaises (ModelBuilderException ) as _ :
@@ -146,3 +148,33 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
146148 mock_exception_obj .__class__ .__name__ ,
147149 expected_extra_str ,
148150 )
151+
152+ def test_construct_url_with_failure_reason_and_extra_info (self ):
153+ mock_accountId = "12345678910"
154+ mock_mode = Mode .LOCAL_CONTAINER
155+ mock_status = "0"
156+ mock_failure_reason = str (MOCK_EXCEPTION )
157+ mock_failure_type = MOCK_EXCEPTION .__class__ .__name__
158+ mock_extra_info = "mock_extra_info"
159+ mock_region = "us-west-2"
160+
161+ ret_url = _construct_url (
162+ accountId = mock_accountId ,
163+ mode = mock_mode ,
164+ status = mock_status ,
165+ failure_reason = mock_failure_reason ,
166+ failure_type = mock_failure_type ,
167+ extra_info = mock_extra_info ,
168+ region = mock_region ,
169+ )
170+
171+ expected_base_url = (
172+ f"https://dev-exp-t-{ mock_region } .s3.{ mock_region } .amazonaws.com/telemetry?"
173+ f"x-accountId={ mock_accountId } "
174+ f"&x-mode={ mock_mode } "
175+ f"&x-status={ mock_status } "
176+ f"&x-failureReason={ mock_failure_reason } "
177+ f"&x-failureType={ mock_failure_type } "
178+ f"&x-extra={ mock_extra_info } "
179+ )
180+ self .assertEquals (ret_url , expected_base_url )
0 commit comments