From 900703ef2fa0d7f33f922bb007d4a0cc384e5214 Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Mon, 27 Jun 2016 18:00:55 -0700 Subject: [PATCH 1/3] signal in Client.kill can be a string containing the signal's name Signed-off-by: Joffrey F --- docker/api/container.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/api/container.py b/docker/api/container.py index b591b17312..9cc14dbd34 100644 --- a/docker/api/container.py +++ b/docker/api/container.py @@ -187,7 +187,9 @@ def kill(self, container, signal=None): url = self._url("/containers/{0}/kill", container) params = {} if signal is not None: - params['signal'] = int(signal) + if not isinstance(signal, six.string_types): + signal = int(signal) + params['signal'] = signal res = self._post(url, params=params) self._raise_for_status(res) From 4ed90bc8b8d1887704c533ed029852d2b6aa9acd Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Tue, 28 Jun 2016 11:05:01 -0700 Subject: [PATCH 2/3] Fix network aliases test with Engine 1.12 Signed-off-by: Joffrey F --- tests/integration/network_test.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/integration/network_test.py b/tests/integration/network_test.py index 26d27a5a83..f719fea485 100644 --- a/tests/integration/network_test.py +++ b/tests/integration/network_test.py @@ -138,9 +138,11 @@ def test_connect_with_aliases(self): self.client.connect_container_to_network( container, net_id, aliases=['foo', 'bar']) container_data = self.client.inspect_container(container) - self.assertEqual( - container_data['NetworkSettings']['Networks'][net_name]['Aliases'], - ['foo', 'bar']) + aliases = ( + container_data['NetworkSettings']['Networks'][net_name]['Aliases'] + ) + assert 'foo' in aliases + assert 'bar' in aliases @requires_api_version('1.21') def test_connect_on_container_create(self): @@ -183,10 +185,11 @@ def test_create_with_aliases(self): self.client.start(container) container_data = self.client.inspect_container(container) - self.assertEqual( - container_data['NetworkSettings']['Networks'][net_name]['Aliases'], - ['foo', 'bar'] + aliases = ( + container_data['NetworkSettings']['Networks'][net_name]['Aliases'] ) + assert 'foo' in aliases + assert 'bar' in aliases @requires_api_version('1.22') def test_create_with_ipv4_address(self): From 0d8624b49b8c8296785df6746e16432d787bd4cc Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Tue, 28 Jun 2016 11:55:13 -0700 Subject: [PATCH 3/3] Add integration tests for different types of kill signals Signed-off-by: Joffrey F --- tests/integration/container_test.py | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/integration/container_test.py b/tests/integration/container_test.py index 940e5b83ff..56b648a3cc 100644 --- a/tests/integration/container_test.py +++ b/tests/integration/container_test.py @@ -840,6 +840,36 @@ def test_kill_with_signal(self): self.assertIn('Running', state) self.assertEqual(state['Running'], False, state) + def test_kill_with_signal_name(self): + id = self.client.create_container(BUSYBOX, ['sleep', '60']) + self.client.start(id) + self.tmp_containers.append(id) + self.client.kill(id, signal='SIGKILL') + exitcode = self.client.wait(id) + self.assertNotEqual(exitcode, 0) + container_info = self.client.inspect_container(id) + self.assertIn('State', container_info) + state = container_info['State'] + self.assertIn('ExitCode', state) + self.assertNotEqual(state['ExitCode'], 0) + self.assertIn('Running', state) + self.assertEqual(state['Running'], False, state) + + def test_kill_with_signal_integer(self): + id = self.client.create_container(BUSYBOX, ['sleep', '60']) + self.client.start(id) + self.tmp_containers.append(id) + self.client.kill(id, signal=9) + exitcode = self.client.wait(id) + self.assertNotEqual(exitcode, 0) + container_info = self.client.inspect_container(id) + self.assertIn('State', container_info) + state = container_info['State'] + self.assertIn('ExitCode', state) + self.assertNotEqual(state['ExitCode'], 0) + self.assertIn('Running', state) + self.assertEqual(state['Running'], False, state) + class PortTest(helpers.BaseTestCase): def test_port(self):