summaryrefslogtreecommitdiff
path: root/oslo_concurrency/tests/unit/test_processutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'oslo_concurrency/tests/unit/test_processutils.py')
-rw-r--r--oslo_concurrency/tests/unit/test_processutils.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/oslo_concurrency/tests/unit/test_processutils.py b/oslo_concurrency/tests/unit/test_processutils.py
index fde6a54..5d636c3 100644
--- a/oslo_concurrency/tests/unit/test_processutils.py
+++ b/oslo_concurrency/tests/unit/test_processutils.py
@@ -25,6 +25,7 @@ import stat
import subprocess
import sys
import tempfile
+import time
from unittest import mock
import fixtures
@@ -87,7 +88,7 @@ class UtilsTest(test_base.BaseTestCase):
on_execute_callback = mock.Mock()
on_completion_callback = mock.Mock()
- def fake_communicate(*args):
+ def fake_communicate(*args, timeout=None):
raise IOError("Broken pipe")
mock_comm.side_effect = fake_communicate
@@ -145,9 +146,9 @@ class UtilsTest(test_base.BaseTestCase):
if use_eventlet:
mock_tpool.execute.assert_called_once_with(
- mock_comm, fake_pinput)
+ mock_comm, fake_pinput, timeout=None)
else:
- mock_comm.assert_called_once_with(fake_pinput)
+ mock_comm.assert_called_once_with(fake_pinput, timeout=None)
def test_windows_execute_without_eventlet(self):
self._test_windows_execute()
@@ -513,6 +514,19 @@ grep foo
self.assertEqual('my description', exc.description)
self.assertEqual(str(exc), exc_message)
+ def test_timeout(self):
+ start = time.time()
+ # FIXME(dtantsur): I'm not sure what fancy mocking is happening in unit
+ # tests here, but I cannot check for a more precise exception because
+ # subprocess.TimeoutException != subprocess.TimeoutException.
+ # Checking the error message instead.
+ self.assertRaisesRegex(Exception,
+ 'timed out after 1 seconds',
+ processutils.execute,
+ '/usr/bin/env', 'sh', '-c', 'sleep 10',
+ timeout=1)
+ self.assertLess(time.time(), start + 5)
+
class ProcessExecutionErrorLoggingTest(test_base.BaseTestCase):
def setUp(self):