James Hunt has proposed merging lp:~jamesodhunt/upstart/fix-python-tests into lp:upstart.
Requested reviews: Upstart Reviewers (upstart-reviewers) For more details, see: https://code.launchpad.net/~jamesodhunt/upstart/fix-python-tests/+merge/195210 -- https://code.launchpad.net/~jamesodhunt/upstart/fix-python-tests/+merge/195210 Your team Upstart Reviewers is requested to review the proposed merge of lp:~jamesodhunt/upstart/fix-python-tests into lp:upstart.
=== modified file 'scripts/Makefile.am' --- scripts/Makefile.am 2013-08-06 16:54:28 +0000 +++ scripts/Makefile.am 2013-11-14 11:47:19 +0000 @@ -1,5 +1,9 @@ ## Process this file with automake to produce Makefile.in +UPSTART_BINARY = $(abs_top_builddir)/init/init +INITCTL_BINARY = $(abs_top_builddir)/util/initctl +FILE_BRIDGE_BINARY = $(abs_top_builddir)/extra/upstart-file-bridge + SUBDIRS = data install_scripts = \ @@ -7,13 +11,26 @@ init-checkconf.sh \ upstart-monitor.py +noinst_SCRIPTS = \ + pyupstart.py + +CLEANFILES = \ + pyupstart.py + EXTRA_DIST = \ $(install_scripts) \ - pyupstart.py \ + pyupstart.py.in \ tests/__init__.py \ tests/test_pyupstart_session_init.py \ tests/test_pyupstart_system_init.py +pyupstart.py: pyupstart.py.in Makefile + sed -e 's|[@]built_init_binary[@]|$(UPSTART_BINARY)|g' \ + -e 's|[@]built_initctl_binary[@]|$(INITCTL_BINARY)|g' \ + -e 's|[@]built_file_bridge_binary[@]|$(FILE_BRIDGE_BINARY)|g' \ + $< > $@ + chmod +x $@ + dist_man_MANS = \ man/initctl2dot.8 \ man/init-checkconf.8 \ === renamed file 'scripts/pyupstart.py' => 'scripts/pyupstart.py.in' --- scripts/pyupstart.py 2013-09-12 10:56:22 +0000 +++ scripts/pyupstart.py.in 2013-11-14 11:47:19 +0000 @@ -32,10 +32,17 @@ VERSION = '0.1' NAME = 'TestUpstart' -UPSTART = '/sbin/init' -INITCTL = '/sbin/initctl' +# FIXME: should really take account of autoconf prefix +SYSTEM_UPSTART = '/sbin/init' +SYSTEM_INITCTL = '/sbin/initctl' +SYSTEM_FILE_BRIDGE = '/sbin/upstart-file-bridge' + +BUILT_UPSTART = '@built_init_binary@' +BUILT_INITCTL = '@built_initctl_binary@' +BUILT_FILE_BRIDGE = '@built_file_bridge_binary@' UPSTART_SESSION_ENV = 'UPSTART_SESSION' +USE_SYSTEM_BINARIES_ENV = 'UPSTART_TEST_USE_SYSTEM_BINARIES' UPSTART_STATE_FILE = 'upstart.state' @@ -77,6 +84,41 @@ #--------------------------------------------------------------------- +def get_init(): + """ + Return full path to an appropriate init daemon binary. + """ + if os.environ.get(USE_SYSTEM_BINARIES_ENV, None): + binary = SYSTEM_UPSTART + else: + binary = BUILT_UPSTART + + assert (os.path.exists(binary)) + return binary + +def get_initctl(): + """ + Return full path to an appropriate initctl binary. + """ + if os.environ.get(USE_SYSTEM_BINARIES_ENV, None): + binary = SYSTEM_INITCTL + else: + binary = BUILT_INITCTL + + assert (os.path.exists(binary)) + return binary + +def get_file_bridge(): + """ + Return full path to an appropriate upstart-file-bridge binary. + """ + if os.environ.get(USE_SYSTEM_BINARIES_ENV, None): + binary = SYSTEM_FILE_BRIDGE + else: + binary = BUILT_FILE_BRIDGE + + assert (os.path.exists(binary)) + return binary def dbus_encode(str): """ @@ -136,7 +178,6 @@ if os.path.exists(path): return True time.sleep(0.1) - return False @@ -925,8 +966,8 @@ """ Stop the instance and cleanup. - Note: If the instance specified retain when created, this will - be a NOP. + Note: If the instance specified retain when created, this will + be a NOP. """ if not self.job.retain: self.stop() @@ -969,7 +1010,7 @@ sessions = {} - args = [INITCTL, 'list-sessions'] + args = [get_initctl(), 'list-sessions'] for line in subprocess.check_output(args, universal_newlines=True).splitlines(): @@ -1028,6 +1069,9 @@ args = [] pid = os.getpid() + init_binary = get_init() + + self.logger.debug('Using init binary %s' % init_binary) self.conf_dir = \ tempfile.mkdtemp(prefix="%s-confdir-%d-" % (NAME, pid)) @@ -1035,7 +1079,7 @@ self.log_dir = \ tempfile.mkdtemp(prefix="%s-logdir-%d-" % (NAME, pid)) - args.extend([UPSTART, '--user', + args.extend([init_binary, '--user', '--confdir', self.conf_dir, '--logdir', self.log_dir]) === modified file 'scripts/tests/test_pyupstart_session_init.py' --- scripts/tests/test_pyupstart_session_init.py 2013-11-03 00:28:07 +0000 +++ scripts/tests/test_pyupstart_session_init.py 2013-11-14 11:47:19 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- #--------------------------------------------------------------------- -# Copyright © 2013 Canonical Ltd. +# Copyright 2013 Canonical Ltd. # # Author: James Hunt <james.h...@canonical.com> # @@ -89,7 +89,7 @@ self.upstart = None self.logger = logging.getLogger(self.__class__.__name__) - for cmd in UPSTART, INITCTL: + for cmd in get_init(), get_initctl(): if not os.path.exists(cmd): raise UpstartException('Command %s not found' % cmd) @@ -141,10 +141,23 @@ def test_init_start_file_bridge(self): self.start_session_init() - # Create the file-bridge job in the correct test location by copying - # the session job from the source package. - with open(self.file_bridge_conf, 'r', encoding='utf-8') as f: - lines = f.readlines() + # Create upstart-file-bridge.conf + # + # Note that we do not use the bundled user job due to our + # requirement for a different start condition and different + # command options. + cmd = '{} --daemon --user --debug'.format(get_file_bridge()) + lines = """ + start on startup + stop on session-end + + emits file + + expect daemon + respawn + exec {} + """.format(cmd) + file_bridge = self.upstart.job_create('upstart-file-bridge', lines) self.assertTrue(file_bridge) file_bridge.start() === modified file 'scripts/tests/test_pyupstart_system_init.py' --- scripts/tests/test_pyupstart_system_init.py 2013-09-12 10:56:22 +0000 +++ scripts/tests/test_pyupstart_system_init.py 2013-11-14 11:47:19 +0000 @@ -134,7 +134,7 @@ self.assertTrue(os.path.exists(chroot_path)) # Ensure Upstart is installed in the chroot - chroot_initctl = '{}{}{}'.format(chroot_path, os.sep, INITCTL) + chroot_initctl = '{}{}{}'.format(chroot_path, os.sep, get_initctl()) self.assertTrue(os.path.exists(chroot_initctl)) # No sessions should exist before the test starts @@ -142,7 +142,7 @@ # Create an Upstart chroot session by talking from the chroot # back to PID 1. - ret = subprocess.call(['chroot', chroot_path, INITCTL, 'list']) + ret = subprocess.call(['chroot', chroot_path, get_initctl(), 'list']) self.assertEqual(0, ret) # Ensure a session now exists
-- upstart-devel mailing list upstart-devel@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/upstart-devel