26
26
DESCRIBE_COMPILATION_JOB_RESPONSE ,
27
27
DESCRIBE_MODEL_PACKAGE_RESPONSE ,
28
28
DESCRIBE_MODEL_RESPONSE ,
29
+ INSTANT_RECOMMENDATION_ENV ,
30
+ INSTANT_RECOMMENDATION_ID ,
29
31
INVALID_RECOMMENDATION_ID ,
30
32
IR_COMPILATION_JOB_NAME ,
31
33
IR_ENV ,
35
37
IR_MODEL_PACKAGE_VERSION_ARN ,
36
38
IR_COMPILATION_IMAGE ,
37
39
IR_COMPILATION_MODEL_DATA ,
40
+ NOT_EXISTED_INSTANT_RECOMMENDATION_ID ,
38
41
RECOMMENDATION_ID ,
39
42
NOT_EXISTED_RECOMMENDATION_ID ,
40
43
)
@@ -543,6 +546,11 @@ def test_deploy_wrong_async_inferenc_config(sagemaker_session):
543
546
544
547
545
548
def test_deploy_ir_with_incompatible_parameters (sagemaker_session ):
549
+ sagemaker_session .sagemaker_client .describe_inference_recommendations_job .return_value = (
550
+ create_inference_recommendations_job_default_with_model_package_arn ()
551
+ )
552
+ sagemaker_session .sagemaker_client .describe_model .return_value = None
553
+
546
554
model = Model (MODEL_IMAGE , MODEL_DATA , sagemaker_session = sagemaker_session , role = ROLE )
547
555
548
556
with pytest .raises (
@@ -553,7 +561,7 @@ def test_deploy_ir_with_incompatible_parameters(sagemaker_session):
553
561
):
554
562
model .deploy (
555
563
instance_type = INSTANCE_TYPE ,
556
- inference_recommendation_id = INFERENCE_RECOMMENDATION_ID ,
564
+ inference_recommendation_id = RECOMMENDATION_ID ,
557
565
)
558
566
559
567
with pytest .raises (
@@ -564,7 +572,7 @@ def test_deploy_ir_with_incompatible_parameters(sagemaker_session):
564
572
):
565
573
model .deploy (
566
574
initial_instance_count = INSTANCE_COUNT ,
567
- inference_recommendation_id = INFERENCE_RECOMMENDATION_ID ,
575
+ inference_recommendation_id = RECOMMENDATION_ID ,
568
576
)
569
577
570
578
with pytest .raises (
@@ -615,6 +623,7 @@ def test_deploy_with_recommendation_id_with_model_pkg_arn(sagemaker_session):
615
623
sagemaker_session .sagemaker_client .describe_model_package .side_effect = (
616
624
mock_describe_model_package
617
625
)
626
+ sagemaker_session .sagemaker_client .describe_model .return_value = None
618
627
619
628
model = Model (MODEL_IMAGE , MODEL_DATA , sagemaker_session = sagemaker_session , role = ROLE )
620
629
@@ -627,11 +636,12 @@ def test_deploy_with_recommendation_id_with_model_pkg_arn(sagemaker_session):
627
636
assert model .env == IR_ENV
628
637
629
638
630
- def test_deploy_with_recommendation_id_with_model_name ( sagemaker_session ):
631
- def mock_describe_model ( ModelName ) :
632
- if ModelName == IR_MODEL_NAME :
633
- return DESCRIBE_MODEL_RESPONSE
639
+ def mock_describe_model ( ModelName ):
640
+ if ModelName == IR_MODEL_NAME :
641
+ return DESCRIBE_MODEL_RESPONSE
642
+
634
643
644
+ def test_deploy_with_recommendation_id_with_model_name (sagemaker_session ):
635
645
sagemaker_session .sagemaker_client .describe_inference_recommendations_job .return_value = (
636
646
create_inference_recommendations_job_default_with_model_name ()
637
647
)
@@ -655,6 +665,7 @@ def test_deploy_with_recommendation_id_with_model_pkg_arn_and_compilation(sagema
655
665
sagemaker_session .sagemaker_client .describe_model_package .side_effect = (
656
666
mock_describe_model_package
657
667
)
668
+ sagemaker_session .sagemaker_client .describe_model .return_value = None
658
669
659
670
model = Model (MODEL_IMAGE , MODEL_DATA , sagemaker_session = sagemaker_session , role = ROLE )
660
671
@@ -677,6 +688,7 @@ def mock_describe_compilation_job(CompilationJobName):
677
688
sagemaker_session .sagemaker_client .describe_compilation_job .side_effect = (
678
689
mock_describe_compilation_job
679
690
)
691
+ sagemaker_session .sagemaker_client .describe_model .side_effect = mock_describe_model
680
692
681
693
model = Model (MODEL_IMAGE , MODEL_DATA , sagemaker_session = sagemaker_session , role = ROLE )
682
694
@@ -695,18 +707,49 @@ def test_deploy_with_not_existed_recommendation_id(sagemaker_session):
695
707
sagemaker_session .sagemaker_client .describe_compilation_job .return_value = (
696
708
DESCRIBE_COMPILATION_JOB_RESPONSE
697
709
)
710
+ sagemaker_session .sagemaker_client .describe_model .return_value = None
698
711
699
712
model = Model (MODEL_IMAGE , MODEL_DATA , sagemaker_session = sagemaker_session , role = ROLE )
700
713
701
714
with pytest .raises (
702
715
ValueError ,
703
- match = "inference_recommendation_id does not exist in InferenceRecommendations list " ,
716
+ match = "Inference Recommendation id does not exist" ,
704
717
):
705
718
model .deploy (
706
719
inference_recommendation_id = NOT_EXISTED_RECOMMENDATION_ID ,
707
720
)
708
721
709
722
723
+ def test_deploy_with_invalid_instant_recommendation_id (sagemaker_session ):
724
+ sagemaker_session .sagemaker_client .describe_inference_recommendations_job .return_value = None
725
+ sagemaker_session .sagemaker_client .describe_model .side_effect = mock_describe_model
726
+
727
+ model = Model (MODEL_IMAGE , MODEL_DATA , sagemaker_session = sagemaker_session , role = ROLE )
728
+
729
+ with pytest .raises (
730
+ ValueError ,
731
+ match = "Inference Recommendation id does not exist" ,
732
+ ):
733
+ model .deploy (
734
+ inference_recommendation_id = NOT_EXISTED_INSTANT_RECOMMENDATION_ID ,
735
+ )
736
+
737
+
738
+ def test_deploy_with_valid_instant_recommendation_id (sagemaker_session ):
739
+ sagemaker_session .sagemaker_client .describe_inference_recommendations_job .return_value = None
740
+ sagemaker_session .sagemaker_client .describe_model .side_effect = mock_describe_model
741
+
742
+ model = Model (MODEL_IMAGE , MODEL_DATA , sagemaker_session = sagemaker_session , role = ROLE )
743
+ model .deploy (
744
+ inference_recommendation_id = INSTANT_RECOMMENDATION_ID ,
745
+ initial_instance_count = INSTANCE_COUNT ,
746
+ )
747
+
748
+ assert model .model_data == MODEL_DATA
749
+ assert model .image_uri == MODEL_IMAGE
750
+ assert model .env == INSTANT_RECOMMENDATION_ENV
751
+
752
+
710
753
@patch ("sagemaker.model.Model._create_sagemaker_model" , Mock ())
711
754
@patch ("sagemaker.predictor.Predictor._get_endpoint_config_name" , Mock ())
712
755
@patch ("sagemaker.predictor.Predictor._get_model_names" , Mock ())
0 commit comments