add retries for docker port command

pull/3761/head
Jan Tattermusch 9 years ago
parent a9c1493551
commit 98c0be5228
  1. 17
      tools/run_tests/dockerjob.py

@ -49,10 +49,19 @@ def docker_kill(cid):
return subprocess.call(['docker','kill', str(cid)]) == 0
def docker_mapped_port(cid, port):
def docker_mapped_port(cid, port, timeout_seconds=15):
"""Get port mapped to internal given internal port for given container."""
output = subprocess.check_output('docker port %s %s' % (cid, port), shell=True)
return int(output.split(':', 2)[1])
started = time.time()
while time.time() - started < timeout_seconds:
try:
output = subprocess.check_output('docker port %s %s' % (cid, port),
stderr=_DEVNULL
shell=True)
return int(output.split(':', 2)[1])
except subprocess.CalledProcessError as e:
pass
raise Exception('Failed to get exposed port %s for container %s.' %
(port, cid))
def finish_jobs(jobs):
@ -68,7 +77,7 @@ def image_exists(image):
"""Returns True if given docker image exists."""
return subprocess.call(['docker','inspect', image],
stdout=_DEVNULL,
stderr=_DEVNULL) == 0
stderr=subprocess.STDOUT) == 0
def remove_image(image, skip_nonexistent=False, max_retries=10):

Loading…
Cancel
Save