test: give systemd chance to actually start the unit

In certain cases the expected enqueue-start-replace-continue
sequence would end up as enqueue-replace-start-continue which causes
unexpected fails even though the serialization/deserialization part
works as expected. As we can't use `--wait` in this case, let's give
sysetmd a second to actually start the unit before replacing it with
another one.

Also, switch from the single-letter test output to a bit verbose format.

Fixes: #14632
This commit is contained in:
Frantisek Sumsal 2020-02-03 13:07:45 +01:00
parent e2c1ddcc49
commit 5f04f4e470
1 changed files with 8 additions and 6 deletions

View File

@ -11,6 +11,7 @@ import time
import os
import tempfile
import subprocess
import sys
from enum import Enum
@ -32,7 +33,7 @@ class ExecutionResumeTest(unittest.TestCase):
unit_file_content = '''
[Service]
Type=oneshot
ExecStart=/bin/sleep 2
ExecStart=/bin/sleep 3
ExecStart=/bin/bash -c "echo foo >> {0}"
'''.format(self.output_file)
self.unit_files[UnitFileChange.NO_CHANGE] = unit_file_content
@ -41,7 +42,7 @@ class ExecutionResumeTest(unittest.TestCase):
[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo foo >> {0}"
ExecStart=/bin/sleep 2
ExecStart=/bin/sleep 3
'''.format(self.output_file)
self.unit_files[UnitFileChange.LINES_SWAPPED] = unit_file_content
@ -49,7 +50,7 @@ class ExecutionResumeTest(unittest.TestCase):
[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo bar >> {0}"
ExecStart=/bin/sleep 2
ExecStart=/bin/sleep 3
ExecStart=/bin/bash -c "echo foo >> {0}"
'''.format(self.output_file)
self.unit_files[UnitFileChange.COMMAND_ADDED_BEFORE] = unit_file_content
@ -57,7 +58,7 @@ class ExecutionResumeTest(unittest.TestCase):
unit_file_content = '''
[Service]
Type=oneshot
ExecStart=/bin/sleep 2
ExecStart=/bin/sleep 3
ExecStart=/bin/bash -c "echo foo >> {0}"
ExecStart=/bin/bash -c "echo bar >> {0}"
'''.format(self.output_file)
@ -67,7 +68,7 @@ class ExecutionResumeTest(unittest.TestCase):
[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo baz >> {0}"
ExecStart=/bin/sleep 2
ExecStart=/bin/sleep 3
ExecStart=/bin/bash -c "echo foo >> {0}"
ExecStart=/bin/bash -c "echo bar >> {0}"
'''.format(self.output_file)
@ -107,6 +108,7 @@ class ExecutionResumeTest(unittest.TestCase):
def setup_unit(self):
self.write_unit_file(UnitFileChange.NO_CHANGE)
subprocess.check_call(['systemctl', '--job-mode=replace', '--no-block', 'start', self.unit])
time.sleep(1)
def test_no_change(self):
expected_output = 'foo\n'
@ -207,4 +209,4 @@ class ExecutionResumeTest(unittest.TestCase):
self.reload()
if __name__ == '__main__':
unittest.main()
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=3))