1818import boto3
1919import numpy
2020import pytest
21- import tests .integ .local_mode_utils as local_mode_utils
21+ import tempfile
22+
23+ import tests .integ .lock as lock
2224from tests .integ import DATA_DIR , PYTHON_VERSION
2325from tests .integ .timeout import timeout
2426
2527from sagemaker .local import LocalSession , LocalSagemakerRuntimeClient , LocalSagemakerClient
2628from sagemaker .mxnet import MXNet
2729from sagemaker .tensorflow import TensorFlow
2830
31+ # endpoint tests all use the same port, so we use this lock to prevent concurrent execution
32+ LOCK_PATH = os .path .join (tempfile .gettempdir (), 'sagemaker_test_local_mode_lock' )
2933DATA_PATH = os .path .join (DATA_DIR , 'iris' , 'data' )
3034DEFAULT_REGION = 'us-west-2'
3135
@@ -101,7 +105,7 @@ def test_tf_local_mode(tf_full_version, sagemaker_local_session):
101105 print ('job succeeded: {}' .format (estimator .latest_training_job .name ))
102106
103107 endpoint_name = estimator .latest_training_job .name
104- with local_mode_utils .lock ():
108+ with lock .lock (LOCK_PATH ):
105109 try :
106110 json_predictor = estimator .deploy (initial_instance_count = 1 ,
107111 instance_type = 'local' ,
@@ -140,7 +144,7 @@ def test_tf_distributed_local_mode(sagemaker_local_session):
140144
141145 endpoint_name = estimator .latest_training_job .name
142146
143- with local_mode_utils .lock ():
147+ with lock .lock (LOCK_PATH ):
144148 try :
145149 json_predictor = estimator .deploy (initial_instance_count = 1 ,
146150 instance_type = 'local' ,
@@ -178,7 +182,7 @@ def test_tf_local_data(sagemaker_local_session):
178182 print ('job succeeded: {}' .format (estimator .latest_training_job .name ))
179183
180184 endpoint_name = estimator .latest_training_job .name
181- with local_mode_utils .lock ():
185+ with lock .lock (LOCK_PATH ):
182186 try :
183187 json_predictor = estimator .deploy (initial_instance_count = 1 ,
184188 instance_type = 'local' ,
@@ -217,7 +221,7 @@ def test_tf_local_data_local_script():
217221 print ('job succeeded: {}' .format (estimator .latest_training_job .name ))
218222
219223 endpoint_name = estimator .latest_training_job .name
220- with local_mode_utils .lock ():
224+ with lock .lock (LOCK_PATH ):
221225 try :
222226 json_predictor = estimator .deploy (initial_instance_count = 1 ,
223227 instance_type = 'local' ,
@@ -241,7 +245,7 @@ def test_local_mode_serving_from_s3_model(sagemaker_local_session, mxnet_model,
241245 s3_model .sagemaker_session = sagemaker_local_session
242246
243247 predictor = None
244- with local_mode_utils .lock ():
248+ with lock .lock (LOCK_PATH ):
245249 try :
246250 predictor = s3_model .deploy (initial_instance_count = 1 , instance_type = 'local' )
247251 data = numpy .zeros (shape = (1 , 1 , 28 , 28 ))
@@ -255,7 +259,7 @@ def test_local_mode_serving_from_s3_model(sagemaker_local_session, mxnet_model,
255259def test_local_mode_serving_from_local_model (tmpdir , sagemaker_local_session , mxnet_model ):
256260 predictor = None
257261
258- with local_mode_utils .lock ():
262+ with lock .lock (LOCK_PATH ):
259263 try :
260264 path = 'file://%s' % (str (tmpdir ))
261265 model = mxnet_model (path )
@@ -285,7 +289,7 @@ def test_mxnet_local_mode(sagemaker_local_session, mxnet_full_version):
285289 mx .fit ({'train' : train_input , 'test' : test_input })
286290 endpoint_name = mx .latest_training_job .name
287291
288- with local_mode_utils .lock ():
292+ with lock .lock (LOCK_PATH ):
289293 try :
290294 predictor = mx .deploy (1 , 'local' , endpoint_name = endpoint_name )
291295 data = numpy .zeros (shape = (1 , 1 , 28 , 28 ))
@@ -310,7 +314,7 @@ def test_mxnet_local_data_local_script(mxnet_full_version):
310314 mx .fit ({'train' : train_input , 'test' : test_input })
311315 endpoint_name = mx .latest_training_job .name
312316
313- with local_mode_utils .lock ():
317+ with lock .lock (LOCK_PATH ):
314318 try :
315319 predictor = mx .deploy (1 , 'local' , endpoint_name = endpoint_name )
316320 data = numpy .zeros (shape = (1 , 1 , 28 , 28 ))
@@ -365,7 +369,7 @@ def test_local_transform_mxnet(sagemaker_local_session, tmpdir, mxnet_full_versi
365369 transformer = mx .transformer (1 , 'local' , assemble_with = 'Line' , max_payload = 1 ,
366370 strategy = 'SingleRecord' , output_path = output_path )
367371
368- with local_mode_utils .lock ():
372+ with lock .lock (LOCK_PATH ):
369373 transformer .transform (transform_input , content_type = 'text/csv' , split_type = 'Line' )
370374 transformer .wait ()
371375
0 commit comments