21
21
from container_support .serving import UnsupportedAcceptTypeError , UnsupportedContentTypeError
22
22
23
23
JSON_CONTENT_TYPE = "application/json"
24
+ FIRST_PORT = '1111'
25
+ LAST_PORT = '2222'
26
+ SAFE_PORT_RANGE = '{}-{}' .format (FIRST_PORT , LAST_PORT )
24
27
25
28
26
29
@pytest .fixture (scope = "module" )
@@ -271,11 +274,15 @@ def test_transformer_method(proxy_client, serve):
271
274
272
275
273
276
@patch ('subprocess.Popen' )
274
- def test_load_dependencies (popen , serve ):
277
+ @patch ('container_support.HostingEnvironment' )
278
+ def test_load_dependencies_with_default_port (hosting_env , popen , serve ):
275
279
with patch ('os.environ' ) as env :
276
280
env ['SAGEMAKER_PROGRAM' ] = 'script.py'
277
281
env ['SAGEMAKER_SUBMIT_DIRECTORY' ] = 's3://what/ever'
278
282
283
+ hosting_env .return_value .port_range = None
284
+ hosting_env .return_value .model_dir = '/opt/ml/model'
285
+
279
286
serve .Transformer .from_module = Mock ()
280
287
serve .load_dependencies ()
281
288
@@ -285,6 +292,25 @@ def test_load_dependencies(popen, serve):
285
292
'--model_base_path=/opt/ml/model/export/Servo' ])
286
293
287
294
295
+ @patch ('subprocess.Popen' )
296
+ @patch ('container_support.HostingEnvironment' )
297
+ def test_load_dependencies_with_safe_port (hosting_env , popen , serve ):
298
+ with patch ('os.environ' ) as env :
299
+ env ['SAGEMAKER_PROGRAM' ] = 'script.py'
300
+ env ['SAGEMAKER_SUBMIT_DIRECTORY' ] = 's3://what/ever'
301
+
302
+ hosting_env .return_value .port_range = SAFE_PORT_RANGE
303
+ hosting_env .return_value .model_dir = '/opt/ml/model'
304
+
305
+ serve .Transformer .from_module = Mock ()
306
+ serve .load_dependencies ()
307
+
308
+ popen .assert_called_with (['tensorflow_model_server' ,
309
+ '--port={}' .format (FIRST_PORT ),
310
+ '--model_name=generic_model' ,
311
+ '--model_base_path=/opt/ml/model/export/Servo' ])
312
+
313
+
288
314
@patch ('tf_container.proxy_client.GRPCProxyClient' )
289
315
def test_wait_model_to_load (proxy_client , serve ):
290
316
client = proxy_client ()
0 commit comments