Skip to content

Commit 0528cdc

Browse files
author
Bryannah Hernandez
committed
unit test for requirementsmanager
1 parent 1a92621 commit 0528cdc

File tree

1 file changed

+50
-31
lines changed

1 file changed

+50
-31
lines changed

tests/unit/sagemaker/serve/builder/test_requirements_manager.py

Lines changed: 50 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,48 +13,67 @@
1313
from __future__ import absolute_import
1414

1515
import unittest
16-
import subprocess
17-
from unittest.mock import patch, Mock
16+
from unittest.mock import patch, call
1817

19-
from sagemaker.serve.mode.in_process_mode import InProcessMode
2018
from sagemaker.serve.builder.requirements_manager import RequirementsManager
2119

22-
class TestRequirementsManager(unittest.TestCase):
23-
24-
def test_detect_file_exists_fail(self, mock_dependencies: str = None) -> str:
25-
mock_dependencies = "mock.ini"
26-
self.assertRaises(ValueError, RequirementsManager().detect_file_exists(mock_dependencies))
2720

28-
@patch("sagemaker.serve.mode.in_process_mode.logger")
29-
@patch("sagemaker.session.Session")
30-
def test_install_requirements_txt(self, mock_logger):
21+
class TestRequirementsManager(unittest.TestCase):
3122

32-
mock_logger.info.assert_called_once_with("Running command to pip install")
23+
@patch(
24+
"sagemaker.serve.builder.requirements_manager.RequirementsManager._update_conda_env_in_path"
25+
)
26+
@patch(
27+
"sagemaker.serve.builder.requirements_manager.RequirementsManager._install_requirements_txt"
28+
)
29+
@patch(
30+
"sagemaker.serve.builder.requirements_manager.RequirementsManager._capture_from_local_runtime"
31+
)
32+
def test_detect_file_exists(
33+
self,
34+
mock_capture_from_local_runtime,
35+
mock_install_requirements_txt,
36+
mock_update_conda_env_in_path,
37+
) -> str:
3338

34-
mock_logger.info.assert_called_once_with("Command ran successfully")
39+
mock_capture_from_local_runtime.side_effect = lambda: ".txt"
40+
RequirementsManager().detect_file_exists()
41+
mock_install_requirements_txt.assert_called_once()
3542

36-
@patch("sagemaker.serve.mode.in_process_mode.logger")
37-
@patch("sagemaker.session.Session")
38-
def test_update_conda_env_in_path(self, mock_logger):
43+
mock_capture_from_local_runtime.side_effect = lambda: ".yml"
44+
RequirementsManager().detect_file_exists()
45+
mock_update_conda_env_in_path.assert_called_once()
3946

40-
mock_logger.info.assert_called_once_with("Updating conda env")
47+
@patch(
48+
"sagemaker.serve.builder.requirements_manager.RequirementsManager._capture_from_local_runtime"
49+
)
50+
def test_detect_file_exists_fail(self, mock__capture_from_local_runtime) -> str:
51+
mock_dependencies = "mock.ini"
52+
mock__capture_from_local_runtime.side_effect = lambda: "invalid requirement"
53+
self.assertRaises(
54+
ValueError, lambda: RequirementsManager().detect_file_exists(mock_dependencies)
55+
)
4156

57+
@patch("sagemaker.serve.builder.requirements_manager.logger")
58+
@patch("sagemaker.serve.builder.requirements_manager.subprocess")
59+
def test_install_requirements_txt(self, mock_subprocess, mock_logger):
4260

43-
# mock_multi_model_server_deep_ping = Mock()
44-
# mock_multi_model_server_deep_ping.side_effect = lambda *args, **kwargs: (
45-
# True,
46-
# )
61+
RequirementsManager()._install_requirements_txt()
4762

48-
# in_process_mode = InProcessMode(
49-
# model_server=ModelServer.MMS,
50-
# inference_spec=mock_inference_spec,
51-
# schema_builder=SchemaBuilder(mock_sample_input, mock_sample_output),
52-
# session=mock_session,
53-
# model_path="model_path",
54-
# )
63+
calls = [call("Running command to pip install"), call("Command ran successfully")]
64+
mock_logger.info.assert_has_calls(calls)
65+
mock_subprocess.run.assert_called_once_with(
66+
"pip install -r requirements.txt", shell=True, check=True
67+
)
5568

56-
# in_process_mode._multi_model_server_deep_ping = mock_multi_model_server_deep_ping
69+
@patch("sagemaker.serve.builder.requirements_manager.logger")
70+
@patch("sagemaker.serve.builder.requirements_manager.subprocess")
71+
def test_update_conda_env_in_path(self, mock_subprocess, mock_logger):
5772

58-
# in_process_mode.create_server(predictor=mock_predictor)
73+
RequirementsManager()._update_conda_env_in_path()
5974

60-
mock_logger.info.assert_called_once_with("Conda env updated successfully")
75+
calls = [call("Updating conda env"), call("Conda env updated successfully")]
76+
mock_logger.info.assert_has_calls(calls)
77+
mock_subprocess.run.assert_called_once_with(
78+
"conda env update -f conda_in_process.yml", shell=True, check=True
79+
)

0 commit comments

Comments
 (0)