|
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