From 6b5f0058d7f28e2f0253ea76be43b724378a2648 Mon Sep 17 00:00:00 2001 From: Chuyang Deng Date: Tue, 17 Dec 2019 11:14:30 -0800 Subject: [PATCH 1/2] fix: use name_from_base in auto_ml.py but unique_name_from_base in tests. --- src/sagemaker/automl/automl.py | 4 +- tests/unit/sagemaker/automl/test_auto_ml.py | 42 ++++++++++++--------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/sagemaker/automl/automl.py b/src/sagemaker/automl/automl.py index b84048a800..234bbf6a11 100644 --- a/src/sagemaker/automl/automl.py +++ b/src/sagemaker/automl/automl.py @@ -19,7 +19,7 @@ from sagemaker.automl.candidate_estimator import CandidateEstimator from sagemaker.job import _Job from sagemaker.session import Session -from sagemaker.utils import unique_name_from_base +from sagemaker.utils import name_from_base class AutoML(object): @@ -381,7 +381,7 @@ def _prepare_for_auto_ml_job(self, job_name=None): else: base_name = "automl" # CreateAutoMLJob API validates that member length less than or equal to 32 - self.current_job_name = unique_name_from_base(base_name, max_length=32) + self.current_job_name = name_from_base(base_name, max_length=32) if self.output_path is None: self.output_path = "s3://{}/".format(self.sagemaker_session.default_bucket()) diff --git a/tests/unit/sagemaker/automl/test_auto_ml.py b/tests/unit/sagemaker/automl/test_auto_ml.py index 8553531420..e8a95e35d2 100644 --- a/tests/unit/sagemaker/automl/test_auto_ml.py +++ b/tests/unit/sagemaker/automl/test_auto_ml.py @@ -13,13 +13,14 @@ from __future__ import absolute_import import pytest -from mock import Mock +from mock import Mock, patch from sagemaker import AutoML, AutoMLJob, AutoMLInput, CandidateEstimator MODEL_DATA = "s3://bucket/model.tar.gz" MODEL_IMAGE = "mi" ENTRY_POINT = "blah.py" +TIMESTAMP = "2017-11-06-14:14:15.671" BUCKET_NAME = "mybucket" INSTANCE_COUNT = 1 INSTANCE_TYPE = "ml.c5.2xlarge" @@ -31,6 +32,7 @@ DEFAULT_OUTPUT_PATH = "s3://{}/".format(BUCKET_NAME) LOCAL_DATA_PATH = "file://data" DEFAULT_MAX_CANDIDATES = 500 +DEFAULT_JOB_NAME = "sagemake-{}".format(TIMESTAMP) JOB_NAME = "default-job-name" JOB_NAME_2 = "banana-auto-ml-job" @@ -281,6 +283,7 @@ def test_auto_ml_additional_optional_params(sagemaker_session): } +@patch("time.strftime", return_value=TIMESTAMP) def test_auto_ml_default_fit(sagemaker_session): auto_ml = AutoML( role=ROLE, target_attribute_name=TARGET_ATTRIBUTE_NAME, sagemaker_session=sagemaker_session @@ -289,26 +292,29 @@ def test_auto_ml_default_fit(sagemaker_session): auto_ml.fit(inputs) sagemaker_session.auto_ml.assert_called_once() _, args = sagemaker_session.auto_ml.call_args - assert args["input_config"] == [ - { - "DataSource": { - "S3DataSource": {"S3DataType": "S3Prefix", "S3Uri": DEFAULT_S3_INPUT_DATA} + assert args == { + "input_config": [ + { + "DataSource": { + "S3DataSource": {"S3DataType": "S3Prefix", "S3Uri": DEFAULT_S3_INPUT_DATA} + }, + "TargetAttributeName": TARGET_ATTRIBUTE_NAME, + } + ], + "output_config": {"S3OutputPath": DEFAULT_OUTPUT_PATH}, + "auto_ml_job_config": { + "CompletionCriteria": {"MaxCandidates": DEFAULT_MAX_CANDIDATES}, + "SecurityConfig": { + "EnableInterContainerTrafficEncryption": ENCRYPT_INTER_CONTAINER_TRAFFIC }, - "TargetAttributeName": TARGET_ATTRIBUTE_NAME, - } - ] - assert args["output_config"] == {"S3OutputPath": DEFAULT_OUTPUT_PATH} - assert args["auto_ml_job_config"] == { - "CompletionCriteria": {"MaxCandidates": DEFAULT_MAX_CANDIDATES}, - "SecurityConfig": { - "EnableInterContainerTrafficEncryption": ENCRYPT_INTER_CONTAINER_TRAFFIC }, + "role": ROLE, + "job_name": DEFAULT_JOB_NAME, + "problem_type": None, + "job_objective": None, + "generate_candidate_definitions_only": GENERATE_CANDIDATE_DEFINITIONS_ONLY, + "tags": None, } - assert args["role"] == ROLE - assert args["problem_type"] is None - assert args["job_objective"] is None - assert args["generate_candidate_definitions_only"] == GENERATE_CANDIDATE_DEFINITIONS_ONLY - assert args["tags"] is None def test_auto_ml_local_input(sagemaker_session): From 6d805201273b54774d9efab33c016093fc3e07e4 Mon Sep 17 00:00:00 2001 From: Chuyang Deng Date: Tue, 17 Dec 2019 11:20:16 -0800 Subject: [PATCH 2/2] add missing arg --- tests/unit/sagemaker/automl/test_auto_ml.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/sagemaker/automl/test_auto_ml.py b/tests/unit/sagemaker/automl/test_auto_ml.py index e8a95e35d2..478af99f06 100644 --- a/tests/unit/sagemaker/automl/test_auto_ml.py +++ b/tests/unit/sagemaker/automl/test_auto_ml.py @@ -32,7 +32,7 @@ DEFAULT_OUTPUT_PATH = "s3://{}/".format(BUCKET_NAME) LOCAL_DATA_PATH = "file://data" DEFAULT_MAX_CANDIDATES = 500 -DEFAULT_JOB_NAME = "sagemake-{}".format(TIMESTAMP) +DEFAULT_JOB_NAME = "automl-{}".format(TIMESTAMP) JOB_NAME = "default-job-name" JOB_NAME_2 = "banana-auto-ml-job" @@ -284,7 +284,7 @@ def test_auto_ml_additional_optional_params(sagemaker_session): @patch("time.strftime", return_value=TIMESTAMP) -def test_auto_ml_default_fit(sagemaker_session): +def test_auto_ml_default_fit(strftime, sagemaker_session): auto_ml = AutoML( role=ROLE, target_attribute_name=TARGET_ATTRIBUTE_NAME, sagemaker_session=sagemaker_session )