|
41 | 41 | from sagemaker.inputs import BatchDataCaptureConfig
|
42 | 42 | from sagemaker.config import MODEL_CONTAINERS_PATH
|
43 | 43 | from sagemaker.utils import update_list_of_dicts_with_values_from_config
|
| 44 | +from sagemaker.user_agent import ( |
| 45 | + SDK_PREFIX, |
| 46 | + STUDIO_PREFIX, |
| 47 | + NOTEBOOK_PREFIX, |
| 48 | +) |
44 | 49 | from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements
|
45 | 50 | from tests.unit import (
|
46 | 51 | SAGEMAKER_CONFIG_MONITORING_SCHEDULE,
|
@@ -904,70 +909,64 @@ def test_delete_model(boto_session):
|
904 | 909 |
|
905 | 910 |
|
906 | 911 | def test_user_agent_injected(boto_session):
|
907 |
| - assert ( |
908 |
| - "AWS-SageMaker-Python-SDK" not in boto_session.client("sagemaker")._client_config.user_agent |
909 |
| - ) |
| 912 | + assert SDK_PREFIX not in boto_session.client("sagemaker")._client_config.user_agent |
910 | 913 |
|
911 | 914 | sess = Session(boto_session)
|
912 | 915 |
|
913 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_client._client_config.user_agent |
914 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_runtime_client._client_config.user_agent |
915 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_metrics_client._client_config.user_agent |
916 |
| - assert "AWS-SageMaker-Notebook-Instance" not in sess.sagemaker_client._client_config.user_agent |
917 |
| - assert ( |
918 |
| - "AWS-SageMaker-Notebook-Instance" |
919 |
| - not in sess.sagemaker_runtime_client._client_config.user_agent |
920 |
| - ) |
921 |
| - assert ( |
922 |
| - "AWS-SageMaker-Notebook-Instance" |
923 |
| - not in sess.sagemaker_metrics_client._client_config.user_agent |
924 |
| - ) |
| 916 | + for client in [ |
| 917 | + sess.sagemaker_client, |
| 918 | + sess.sagemaker_runtime_client, |
| 919 | + sess.sagemaker_metrics_client, |
| 920 | + ]: |
| 921 | + assert SDK_PREFIX in client._client_config.user_agent |
| 922 | + assert NOTEBOOK_PREFIX not in client._client_config.user_agent |
| 923 | + assert STUDIO_PREFIX not in client._client_config.user_agent |
925 | 924 |
|
926 | 925 |
|
927 |
| -def test_user_agent_injected_with_nbi(boto_session): |
928 |
| - assert ( |
929 |
| - "AWS-SageMaker-Python-SDK" not in boto_session.client("sagemaker")._client_config.user_agent |
| 926 | +@patch("sagemaker.user_agent.process_notebook_metadata_file", return_value="ml.t3.medium") |
| 927 | +def test_user_agent_injected_with_nbi( |
| 928 | + mock_process_notebook_metadata_file, |
| 929 | + boto_session, |
| 930 | +): |
| 931 | + assert SDK_PREFIX not in boto_session.client("sagemaker")._client_config.user_agent |
| 932 | + |
| 933 | + sess = Session( |
| 934 | + boto_session=boto_session, |
930 | 935 | )
|
931 | 936 |
|
932 |
| - with patch("six.moves.builtins.open", mock_open(read_data="120.0-0")) as mo: |
933 |
| - sess = Session(boto_session) |
| 937 | + for client in [ |
| 938 | + sess.sagemaker_client, |
| 939 | + sess.sagemaker_runtime_client, |
| 940 | + sess.sagemaker_metrics_client, |
| 941 | + ]: |
| 942 | + mock_process_notebook_metadata_file.assert_called() |
934 | 943 |
|
935 |
| - mo.assert_called_with("/etc/opt/ml/sagemaker-notebook-instance-version.txt") |
| 944 | + assert SDK_PREFIX in client._client_config.user_agent |
| 945 | + assert NOTEBOOK_PREFIX in client._client_config.user_agent |
| 946 | + assert STUDIO_PREFIX not in client._client_config.user_agent |
936 | 947 |
|
937 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_client._client_config.user_agent |
938 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_runtime_client._client_config.user_agent |
939 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_metrics_client._client_config.user_agent |
940 |
| - assert "AWS-SageMaker-Notebook-Instance" in sess.sagemaker_client._client_config.user_agent |
941 |
| - assert ( |
942 |
| - "AWS-SageMaker-Notebook-Instance" in sess.sagemaker_runtime_client._client_config.user_agent |
943 |
| - ) |
944 |
| - assert ( |
945 |
| - "AWS-SageMaker-Notebook-Instance" in sess.sagemaker_metrics_client._client_config.user_agent |
946 |
| - ) |
947 | 948 |
|
| 949 | +@patch("sagemaker.user_agent.process_studio_metadata_file", return_value="dymmy-app-type") |
| 950 | +def test_user_agent_injected_with_studio_app_type( |
| 951 | + mock_process_studio_metadata_file, |
| 952 | + boto_session, |
| 953 | +): |
| 954 | + assert SDK_PREFIX not in boto_session.client("sagemaker")._client_config.user_agent |
948 | 955 |
|
949 |
| -def test_user_agent_injected_with_nbi_ioerror(boto_session): |
950 |
| - assert ( |
951 |
| - "AWS-SageMaker-Python-SDK" not in boto_session.client("sagemaker")._client_config.user_agent |
| 956 | + sess = Session( |
| 957 | + boto_session=boto_session, |
952 | 958 | )
|
953 | 959 |
|
954 |
| - with patch("six.moves.builtins.open", MagicMock(side_effect=IOError("File not found"))) as mo: |
955 |
| - sess = Session(boto_session) |
| 960 | + for client in [ |
| 961 | + sess.sagemaker_client, |
| 962 | + sess.sagemaker_runtime_client, |
| 963 | + sess.sagemaker_metrics_client, |
| 964 | + ]: |
| 965 | + mock_process_studio_metadata_file.assert_called() |
956 | 966 |
|
957 |
| - mo.assert_called_with("/etc/opt/ml/sagemaker-notebook-instance-version.txt") |
958 |
| - |
959 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_client._client_config.user_agent |
960 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_runtime_client._client_config.user_agent |
961 |
| - assert "AWS-SageMaker-Python-SDK" in sess.sagemaker_metrics_client._client_config.user_agent |
962 |
| - assert "AWS-SageMaker-Notebook-Instance" not in sess.sagemaker_client._client_config.user_agent |
963 |
| - assert ( |
964 |
| - "AWS-SageMaker-Notebook-Instance" |
965 |
| - not in sess.sagemaker_runtime_client._client_config.user_agent |
966 |
| - ) |
967 |
| - assert ( |
968 |
| - "AWS-SageMaker-Notebook-Instance" |
969 |
| - not in sess.sagemaker_metrics_client._client_config.user_agent |
970 |
| - ) |
| 967 | + assert SDK_PREFIX in client._client_config.user_agent |
| 968 | + assert NOTEBOOK_PREFIX not in client._client_config.user_agent |
| 969 | + assert STUDIO_PREFIX in client._client_config.user_agent |
971 | 970 |
|
972 | 971 |
|
973 | 972 | def test_training_input_all_defaults():
|
|
0 commit comments