diff options
| author | Joffrey F <joffrey@docker.com> | 2019-04-30 23:47:09 -0700 |
|---|---|---|
| committer | Joffrey F <joffrey@docker.com> | 2019-04-30 23:47:09 -0700 |
| commit | b06e437da89ec391d72de2158f40f2b1a37dbc43 (patch) | |
| tree | 12c12d07bfc83f081fdd00395592e1663862f467 | |
| parent | 0287cd9f2e3cb5db39a01afdba334bdd77d4b5fc (diff) | |
| download | docker-py-b06e437da89ec391d72de2158f40f2b1a37dbc43.tar.gz | |
Avoid demux test flakiness
Signed-off-by: Joffrey F <joffrey@docker.com>
| -rw-r--r-- | tests/integration/api_exec_test.py | 48 |
1 files changed, 21 insertions, 27 deletions
diff --git a/tests/integration/api_exec_test.py b/tests/integration/api_exec_test.py index e6079eb..602e69a 100644 --- a/tests/integration/api_exec_test.py +++ b/tests/integration/api_exec_test.py @@ -1,10 +1,10 @@ +from docker.utils.proxy import ProxyConfig from docker.utils.socket import next_frame_header from docker.utils.socket import read_exactly -from docker.utils.proxy import ProxyConfig -from .base import BaseAPIIntegrationTest, BUSYBOX +from .base import BUSYBOX, BaseAPIIntegrationTest from ..helpers import ( - requires_api_version, ctrl_with, assert_cat_socket_detached_with_keys + assert_cat_socket_detached_with_keys, ctrl_with, requires_api_version, ) @@ -125,9 +125,6 @@ class ExecTest(BaseAPIIntegrationTest): script = ' ; '.join([ # Write something on stdout 'echo hello out', - # Busybox's sleep does not handle sub-second times. - # This loops takes ~0.3 second to execute on my machine. - 'for i in $(seq 1 50000); do echo $i>/dev/null; done', # Write something on stderr 'echo hello err >&2']) cmd = 'sh -c "{}"'.format(script) @@ -135,15 +132,15 @@ class ExecTest(BaseAPIIntegrationTest): # tty=False, stream=False, demux=False res = self.client.exec_create(id, cmd) exec_log = self.client.exec_start(res) - assert exec_log == b'hello out\nhello err\n' + assert 'hello out\n' in exec_log + assert 'hello err\n' in exec_log # tty=False, stream=True, demux=False res = self.client.exec_create(id, cmd) - exec_log = self.client.exec_start(res, stream=True) - assert next(exec_log) == b'hello out\n' - assert next(exec_log) == b'hello err\n' - with self.assertRaises(StopIteration): - next(exec_log) + exec_log = list(self.client.exec_start(res, stream=True)) + assert len(exec_log) == 2 + assert 'hello out\n' in exec_log + assert 'hello err\n' in exec_log # tty=False, stream=False, demux=True res = self.client.exec_create(id, cmd) @@ -152,11 +149,10 @@ class ExecTest(BaseAPIIntegrationTest): # tty=False, stream=True, demux=True res = self.client.exec_create(id, cmd) - exec_log = self.client.exec_start(res, demux=True, stream=True) - assert next(exec_log) == (b'hello out\n', None) - assert next(exec_log) == (None, b'hello err\n') - with self.assertRaises(StopIteration): - next(exec_log) + exec_log = list(self.client.exec_start(res, demux=True, stream=True)) + assert len(exec_log) == 2 + assert (b'hello out\n', None) in exec_log + assert (None, b'hello err\n') in exec_log # tty=True, stream=False, demux=False res = self.client.exec_create(id, cmd, tty=True) @@ -165,11 +161,10 @@ class ExecTest(BaseAPIIntegrationTest): # tty=True, stream=True, demux=False res = self.client.exec_create(id, cmd, tty=True) - exec_log = self.client.exec_start(res, stream=True) - assert next(exec_log) == b'hello out\r\n' - assert next(exec_log) == b'hello err\r\n' - with self.assertRaises(StopIteration): - next(exec_log) + exec_log = list(self.client.exec_start(res, stream=True)) + assert len(exec_log) == 2 + assert 'hello out\r\n' in exec_log + assert 'hello err\r\n' in exec_log # tty=True, stream=False, demux=True res = self.client.exec_create(id, cmd, tty=True) @@ -178,11 +173,10 @@ class ExecTest(BaseAPIIntegrationTest): # tty=True, stream=True, demux=True res = self.client.exec_create(id, cmd, tty=True) - exec_log = self.client.exec_start(res, demux=True, stream=True) - assert next(exec_log) == (b'hello out\r\n', None) - assert next(exec_log) == (b'hello err\r\n', None) - with self.assertRaises(StopIteration): - next(exec_log) + exec_log = list(self.client.exec_start(res, demux=True, stream=True)) + assert len(exec_log) == 2 + assert (b'hello out\r\n', None) in exec_log + assert (b'hello err\r\n', None) in exec_log def test_exec_start_socket(self): container = self.client.create_container(BUSYBOX, 'cat', |
