Moving to newer Python versions
The ultimate goal is to migrate Launchpad to Python 2.6. Rather than go straight to Python 2.6, we are focusing on Python 2.5 first as a stepping stone. People involved in this effort: maxb, gary, salgado, barry, simono. We are treating this work as a sprint; come join us on #launchpad-sprint on freenode.
Update 2009-10-24: The sprint has concluded. We were successful in getting Launchpad to work under 2.5 + Zope Toolkit. Python 2.6 support will be postponed until the Lucid timeframe.
Relevant tagged bugs: https://bugs.launchpad.net/launchpad-foundations/+bugs?field.tag=python-upgrade
Branches
https://code.launchpad.net/~launchpad-dev/launchpad/python-migration was the master branch tracking the migration to Python 2.5. This was branched off of devel. Now that we have a working Python 2.5 + ZTK upgrade branch, the pure Python 2.5 branch is abandoned.
https://code.launchpad.net/~launchpad-dev/launchpad/ztk-2.5 is the python-migration branch with the latest Zope Toolkit updates, still on Python 2.5. It is the master result of the sprint and earmarked for landing on devel once Week 1 of 3.1.11 opens.
https://code.launchpad.net/~launchpad-dev/launchpad/python-migration2.6 is the ztk-2.5 branch with changes to get us on Python 2.6. It is not complete.
https://code.edge.launchpad.net/~salgado/shipit/py2.5 is the shipit branch that make it possible to run shipit under 2.5
https://code.edge.launchpad.net/~salgado/canonical-identity-provider/ztk-2.5 has a test fix, needed when we change to ztk on 2.5
Review process
You should submit merge proposals into the appropriate branch. gary, salgado, and barry will review all branches and we'll use a lightweight review process to manage this (simple cover letters, 5-minute reviews). Once approved, you can land your change by just merging it into a pristine local copy of the destination and pushing it; there is no pqm gateway.
Merge flow
In general, we'll merge from devel -> ztk-2.5 -> python-migration2.6.
Things you'll need to do
https://code.edge.launchpad.net/~maxb/pygettextpo/makefile-fix-version is needed to fix a non-fatal invocation of the incorrect pydoc.
Known/Open issues
Bustimications
The extension modules in your sourcecode directory will have been built for Python 2.4 and these will break for your 2.5 branch. The simple thing to do is to move your old sourcecode aside and run utilities/rocketfuel-get to get it again with Python 2.5. A more complex but useful thing to do to manage sourcecode directories for multiple python versions is:
cd ~/launchpad/lp-sourcedeps mkdir 2.5 cd 2.5 ln -s ../download-cache ln -s ../eggs mkdir sourcecode cd sourcecode for i in ../../sourcecode/*; do bzr checkout --lightweight "$i"; done
and now point utilities/link-external-sourcecode to ../../lp-sourcedeps/2.5 - if you do that you'll need to be aware that rocketfuel-get won't know about it, and your extra directories will require occasional manual updating.
The pytz source package has a not-so-mysterious problem, hence we have eggs in download-cache.
Cleanup potential
- BEFORE we go to production with Python 2.5, is there any reason we need ipython-0.9.1-py2.5.egg in egg, not tarball, form?
- Presumably we could bin the wadllib 0.1 eggs too.
Eventually we should get rid of all the scripts hardcoded /usr/bin/pythonX.Y and use buildout's shebang munging.
scripts/branch-rewrite.py uses /usr/bin/pythonX.Y -u. We should figure out if this is significant and why this script has to be different from other scripts.
scripts/ftpmaster-tools/_syncorigins.py uses /usr/bin/env pythonX.Y... why?!
cronscripts/mirror-prober.sh and cronscripts/nightly.sh are invoking python scripts with explicit interpreters. Why are they not using the shebangs? This leads to versions being defined in two places.
Python 2.5 w/Zope Toolkit
This is a branch off of python-migration which uses Python 2.5 and the Zope Toolkit.
test failures
- lib/canonical/shipit/tests/../doc/shipit.txt
- Salgado has a branch that fixes this
- lib/canonical/signon/browser/tests/loginservice-unauthorized-view.txt
- Salgado has a branch that fixes this
Python 2.6
This is the ztk-2.5 branch, converted to use Python 2.6.
Also, a multitude of modules of modules (sha, md5, sets, ...) are deprecated in Python 2.6, and many tests will fail merely because of unexpected DeprecationWarnings (but see below).
Overview of content of the python-migration2.6 branch
I suspect we may decide to bin the python-migration2.6 branch, as much of its present content is either ZTK updates, trivial shebang munging, or fixes which can be opportunistically landed on devel whilst it is still targetting 2.5. Therefore I'm making a summary of the content of the branch:
- shebang updates / Makefile PYTHON_VERSION updates all over the place
versions.cfg changes:
lazr.restful = 0.9.14 lazr.smtptest = 1.2 zope.app.component = 3.5.0 zope.app.form = 3.6.4 zope.app.publisher = 3.6.2
- Make import_fascist compatible with Python 2.6. (landable for 2.5)
- Use hashlib. (landable for 2.5)
- Additional clean_modules (but we don't do that any more on devel).
- Deprecation warning suppression.
- assert parentheses misuse (landable for 2.5)
Getting started
Apply this patch and re-run bin/buildout to temporarily suppress the turning of warnings into errors. There are DeprecationErrors coming from Twisted that we can't seem to turn off any other way.
sudo apt-get install python-pyasn1 (for lp:twisted)
Test failures
Running canonical.testing.layers.BaseLayer tests:
test_import (lp.codehosting.codeimport.tests.test_worker.TestGitImport)
Error in test test_import (lp.codehosting.codeimport.tests.test_worker.TestGitImport) Traceback (most recent call last): File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/tests/__init__.py", line 1470, in run testMethod() File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/tests/test_worker.py", line 641, in test_import worker.run() File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 398, in run self._doImport() File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 495, in _doImport self.pushBazaarWorkingTree(bazaar_tree) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 525, in pushBazaarWorkingTree 'git.db', bazaar_tree.branch.repository._transport) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 254, in put local_file = source_transport.get(filename) File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/transport/local.py", line 167, in get self._translate_error(e, path) File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/transport/__init__.py", line 306, in _translate_error raise errors.NoSuchFile(path, extra=e) NoSuchFile: No such file: u'/var/tmp/codeimport/data/worker-for-branch-1/bzr_working_tree/.bzr/repository/git.db': [Errno 2] No such file or directory: u'/var/tmp/codeimport/data/worker-for-branch-1/bzr_working_tree/.bzr/repository/git.db'
test_import_script (lp.codehosting.codeimport.tests.test_worker.TestGitImport)
Failure in test test_import_script (lp.codehosting.codeimport.tests.test_worker.TestGitImport) Traceback (most recent call last): File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/tests/__init__.py", line 1470, in run testMethod() File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/tests/test_worker.py", line 688, in test_import_script self.assertEqual(retcode, 0) File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/tests/__init__.py", line 958, in assertEqual pformat(a), pformat(b))) AssertionError: not equal: a = 1 b = 0
test_sync (lp.codehosting.codeimport.tests.test_worker.TestGitImport)
Error in test test_sync (lp.codehosting.codeimport.tests.test_worker.TestGitImport) Traceback (most recent call last): File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/tests/__init__.py", line 1470, in run testMethod() File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/tests/test_worker.py", line 649, in test_sync worker.run() File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 398, in run self._doImport() File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 495, in _doImport self.pushBazaarWorkingTree(bazaar_tree) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 525, in pushBazaarWorkingTree 'git.db', bazaar_tree.branch.repository._transport) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/worker.py", line 254, in put local_file = source_transport.get(filename) File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/transport/local.py", line 167, in get self._translate_error(e, path) File "/home/barry/projects/launchpad/eggs/bzr-2.0.0_lp_1-py2.6-linux-x86_64.egg/bzrlib/transport/__init__.py", line 306, in _translate_error raise errors.NoSuchFile(path, extra=e) NoSuchFile: No such file: u'/var/tmp/codeimport/data/worker-for-branch-1/bzr_working_tree/.bzr/repository/git.db': [Errno 2] No such file or directory: u'/var/tmp/codeimport/data/worker-for-branch-1/bzr_working_tree/.bzr/repository/git.db'
Running canonical.testing.layers.LaunchpadScriptLayer tests:
test_initZopelessTwice (canonical.lp.ftests.test_zopeless.TestInitZopeless)
Error in test test_initZopelessTwice (canonical.lp.ftests.test_zopeless.TestInitZopeless) Traceback (most recent call last): File "/usr/lib/python2.6/unittest.py", line 279, in run testMethod() File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/lp/ftests/test_zopeless.py", line 45, in test_initZopelessTwice dbuser='launchpad') File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/lp/__init__.py", line 84, in initZopeless dbname=dbname, dbhost=dbhost, dbuser=dbuser, isolation=isolation) File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/database/sqlbase.py", line 328, in initZopeless warnings.warn(alreadyInstalledMsg, stacklevel=3) UserWarning: A ZopelessTransactionManager with these settings is already installed. This is probably caused by calling initZopeless twice.
Running canonical.testing.layers.LaunchpadZopelessLayer tests:
lib/lp/soyuz/tests/../doc/buildd-slave.txt
Failure in test lib/lp/soyuz/tests/../doc/buildd-slave.txt Failed doctest test for buildd-slave.txt File "lib/lp/soyuz/tests/../doc/buildd-slave.txt", line 0 ---------------------------------------------------------------------- File "lib/lp/soyuz/tests/../doc/buildd-slave.txt", line 102, in buildd-slave.txt Failed example: s.info() Differences (ndiff with -expected +actual): Traceback (most recent call last): - ... + File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/doctest.py", line 1361, in __run + compileflags, 1) in test.globs + File "<doctest buildd-slave.txt[line 102, example 38]>", line 1, in <module> + File "/usr/lib/python2.6/xmlrpclib.py", line 1199, in __call__ + return self.__send(self.__name, args) + File "/usr/lib/python2.6/xmlrpclib.py", line 1489, in __request + verbose=self.__verbose + File "/usr/lib/python2.6/xmlrpclib.py", line 1235, in request + self.send_content(h, request_body) + File "/usr/lib/python2.6/xmlrpclib.py", line 1349, in send_content + connection.endheaders() + File "/usr/lib/python2.6/httplib.py", line 892, in endheaders + self._send_output() + File "/usr/lib/python2.6/httplib.py", line 764, in _send_output + self.send(msg) + File "/usr/lib/python2.6/httplib.py", line 723, in send + self.connect() + File "/usr/lib/python2.6/httplib.py", line 704, in connect + self.timeout) + File "/usr/lib/python2.6/socket.py", line 514, in create_connection + raise error, msg - error: (111, 'Connection refused') ? ^ ^^^ -- + error: [Errno 111] Connection refused ? ^^^^^^^ ^^
lib/lp/soyuz/tests/../doc/manage-chroot.txt
Failure in test lib/lp/soyuz/tests/../doc/manage-chroot.txt Failed doctest test for manage-chroot.txt File "lib/lp/soyuz/tests/../doc/manage-chroot.txt", line 0 ---------------------------------------------------------------------- File "lib/lp/soyuz/tests/../doc/manage-chroot.txt", line 189, in manage-chroot.txt Failed example: try: manage_chroot.mainTask() except SoyuzScriptError, info: print info else: print "Did not get expected exception" Differences (ndiff with -expected +actual): - DEBUG Initialising ChrootManager for 'The Hoary Hedgehog Release for i386 (x86)' ? -- + DEBUG Initialising ChrootManager for 'The Hoary Hedgehog Release for i386 (x86)' - Librarian upload failed: [...]: (111, 'Connection refused') ? ^^^ ^ ^^^ -- + Librarian upload failed: [localhost:57930]: [Errno 111] Connection refused ? ^^^^^^^^^^^^^^^ ^^^^^^^ ^^
lib/canonical/launchpad/ftests/../doc/incomingmail.txt
Failure in test lib/canonical/launchpad/ftests/../doc/incomingmail.txt Failed doctest test for incomingmail.txt File "lib/canonical/launchpad/ftests/../doc/incomingmail.txt", line 0 ---------------------------------------------------------------------- File "lib/canonical/launchpad/ftests/../doc/incomingmail.txt", line 377, in incomingmail.txt Failed example: handleMail(transaction) Differences (ndiff with -expected +actual): - ERROR:...:Upload to Librarian failed... ? ^^^ --- + ERROR:process-mail:Upload to Librarian failed ? ^^^^^^^^^^^^ - ... - UploadFailed: [...]: (111, 'Connection refused') + Traceback (most recent call last): + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/launchpad/mail/incoming.py", line 202, in handleMail + cStringIO(raw_mail), 'message/rfc822') + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/launchpad/database/librarian.py", line 210, in create + fid = client.addFile(name, size, file, contentType, expires, debugID) + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/librarian/client.py", line 104, in addFile + self._connect() + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/librarian/client.py", line 56, in _connect + '[%s:%s]: %s' % (self.upload_host, self.upload_port, x)) + UploadFailed: [localhost:57930]: [Errno 111] Connection refused + ERROR:process-mail:Upload to Librarian failed + Traceback (most recent call last): + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/launchpad/mail/incoming.py", line 202, in handleMail + cStringIO(raw_mail), 'message/rfc822') + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/launchpad/database/librarian.py", line 210, in create + fid = client.addFile(name, size, file, contentType, expires, debugID) + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/librarian/client.py", line 104, in addFile + self._connect() + File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/librarian/client.py", line 56, in _connect + '[%s:%s]: %s' % (self.upload_host, self.upload_port, x)) + UploadFailed: [localhost:57930]: [Errno 111] Connection refused
Running canonical.testing.layers.LaunchpadFunctionalLayer tests:
Set up canonical.testing.layers.GoogleServiceLayer
Traceback (most recent call last): File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/runner.py", line 364, in run_layer setup_layer(options, layer, setup_layers) File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/runner.py", line 624, in setup_layer setup_layer(options, base, setup_layers) File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/runner.py", line 629, in setup_layer layer.setUp() File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/testing/layers.py", line 1009, in setUp google.setUp() File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/launchpad/testing/tests/googleserviceharness.py", line 76, in setUp self.startService() File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/launchpad/testing/tests/googleserviceharness.py", line 88, in startService googletestservice.wait_for_service() File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/launchpad/testing/googletestservice.py", line 126, in wait_for_service sock.connect((host, port)) File "<string>", line 1, in connect error: [Errno 103] Software caused connection abort
Running canonical.testing.layers.AppServerLayer tests:
- Same layer failure as above
Running canonical.testing.layers.DatabaseFunctionalLayer tests:
lib/canonical/shipit/tests/../doc/shipit-process-requests.txt
Failure in test lib/canonical/shipit/tests/../doc/shipit-process-requests.txt Failed doctest test for shipit-process-requests.txt File "lib/canonical/shipit/tests/../doc/shipit-process-requests.txt", line 0 ---------------------------------------------------------------------- File "lib/canonical/shipit/tests/../doc/shipit-process-requests.txt", line 96, in shipit-process-requests.txt Failed example: out, err Differences (ndiff with -expected +actual): - ('', '') + ('', '/home/barry/projects/launchpad/python-migration2.6/lib/cscvs/dircompare/dirsums.py:18: DeprecationWarning: the md5 module is deprecated; use hashlib instead\n import md5\n/home/barry/projects/launchpad/python-migration2.6/lib/canonical/uuid.py:10: DeprecationWarning: the sha module is deprecated; use the hashlib module instead\n import time, random, subprocess, thread, sha\n')
canonical.signon.browser.tests.test_openidserver.OpenIDMixin_checkTeamMembership_TestCase.test_full_fledged_account
Error in test canonical.signon.browser.tests.test_openidserver.OpenIDMixin_checkTeamMembership_TestCase.test_full_fledged_account Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/testing/__init__.py", line 390, in run self.setUp() File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/signon/browser/tests/test_openidserver.py", line 268, in setUp self.openid_mixin = CheckTeamMembershipTest(None, self.request) File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/signon/browser/openidserver.py", line 101, in __init__ super(OpenIDMixin, self).__init__(context, request) TypeError: object.__init__() takes no parameters
canonical.signon.browser.tests.test_openidserver.OpenIDMixin_checkTeamMembership_TestCase.test_personless_account
Error in test canonical.signon.browser.tests.test_openidserver.OpenIDMixin_checkTeamMembership_TestCase.test_personless_account Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/testing/__init__.py", line 390, in run self.setUp() File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/signon/browser/tests/test_openidserver.py", line 268, in setUp self.openid_mixin = CheckTeamMembershipTest(None, self.request) File "/home/barry/projects/launchpad/python-migration2.6/lib/canonical/signon/browser/openidserver.py", line 101, in __init__ super(OpenIDMixin, self).__init__(context, request) TypeError: object.__init__() takes no parameters
- lots more of those
lib/canonical/signon/browser/tests/loginservice-unauthorized-view.txt
Failure in test lib/canonical/signon/browser/tests/loginservice-unauthorized-view.txt Failed doctest test for loginservice-unauthorized-view.txt File "lib/canonical/signon/browser/tests/loginservice-unauthorized-view.txt", line 0 ---------------------------------------------------------------------- File "lib/canonical/signon/browser/tests/loginservice-unauthorized-view.txt", line 39, in loginservice-unauthorized-view.txt Failed example: browser.open('http://openid.launchpad.dev/+edit') Differences (ndiff with -expected +actual): - ERROR:...
Running canonical.testing.layers.PageTestLayer tests:
- Google service layer failure again
Running canonical.testing.layers.TwistedLayer tests:
test_run_proces_with_timeout_success (canonical.twistedsupport.tests.test_processmonitor.TestRunProcessWithTimeout)
Error in test test_run_proces_with_timeout_success (canonical.twistedsupport.tests.test_processmonitor.TestRunProcessWithTimeout) Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 1250, in run warnings.warn_explicit(**w) PotentialZombieWarning: spawnProcess called, but the SIGCHLD handler is not installed. This probably means you have not yet called reactor.run, or called reactor.run(installSignalHandler=0). You will probably never see this process finish, and it may become a zombie process.
- more of the same
Running canonical.testing.layers.TwistedLaunchpadZopelessLayer tests:
test_import_git (lp.codehosting.codeimport.tests.test_workermonitor.TestWorkerMonitorIntegration)
Failure in test test_import_git (lp.codehosting.codeimport.tests.test_workermonitor.TestWorkerMonitorIntegration) Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/internet/defer.py", line 323, in _runCallbacks self.result = callback(self.result, *args, **kw) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/workermonitor.py", line 124, in transacted return function(*args, **kwargs) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/tests/test_workermonitor.py", line 531, in assertImported self.assertCodeImportResultCreated(code_import) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/tests/test_workermonitor.py", line 513, in assertCodeImportResultCreated self.assertEqual(result.status, CodeImportResultStatus.SUCCESS) File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 290, in failUnlessEqual % (msg, pformat(first), pformat(second))) FailTest: not equal: a = <DBItem CodeImportResultStatus.FAILURE, (200) Failure> b = <DBItem CodeImportResultStatus.SUCCESS, (100) Success>
test_import_git (lp.codehosting.codeimport.tests.test_workermonitor.TestWorkerMonitorIntegrationScript)
Failure in test test_import_git (lp.codehosting.codeimport.tests.test_workermonitor.TestWorkerMonitorIntegrationScript) Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/internet/defer.py", line 323, in _runCallbacks self.result = callback(self.result, *args, **kw) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/workermonitor.py", line 124, in transacted return function(*args, **kwargs) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/tests/test_workermonitor.py", line 531, in assertImported self.assertCodeImportResultCreated(code_import) File "/home/barry/projects/launchpad/python-migration2.6/lib/lp/codehosting/codeimport/tests/test_workermonitor.py", line 513, in assertCodeImportResultCreated self.assertEqual(result.status, CodeImportResultStatus.SUCCESS) File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 290, in failUnlessEqual % (msg, pformat(first), pformat(second))) FailTest: not equal: a = <DBItem CodeImportResultStatus.FAILURE, (200) Failure> b = <DBItem CodeImportResultStatus.SUCCESS, (100) Success> Error in test test_import_git (lp.codehosting.codeimport.tests.test_workermonitor.TestWorkerMonitorIntegrationScript) Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 1250, in run warnings.warn_explicit(**w) PotentialZombieWarning: spawnProcess called, but the SIGCHLD handler is not installed. This probably means you have not yet called reactor.run, or called reactor.run(installSignalHandler=0). You will probably never see this process finish, and it may become a zombie process.
Running canonical.testing.layers.TwistedAppServerLayer tests:
lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_lock_with_magic_id
/home/barry/projects/launchpad/python-migration2.6/lib/cscvs/dircompare/dirsums.py:18: DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5 Error in test lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_lock_with_magic_id Traceback (most recent call last): UnexpectedStderr: Unexpected standard error from subprocess: import md5 Error in test lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_lock_with_magic_id Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 1250, in run warnings.warn_explicit(**w) PotentialZombieWarning: spawnProcess called, but the SIGCHLD handler is not installed. This probably means you have not yet called reactor.run, or called reactor.run(installSignalHandler=0). You will probably never see this process finish, and it may become a zombie process.
lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_mirror
Error in test lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_mirror Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 1250, in run warnings.warn_explicit(**w) PotentialZombieWarning: spawnProcess called, but the SIGCHLD handler is not installed. This probably means you have not yet called reactor.run, or called reactor.run(installSignalHandler=0). You will probably never see this process finish, and it may become a zombie process. lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_mirror_with_destination_locked_by_another/home/barry/projects/launchpad/python-migration2.6/lib/cscvs/dircompare/dirsums.py:18: DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5 Error in test lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_mirror_with_destination_locked_by_another Traceback (most recent call last): UnexpectedStderr: Unexpected standard error from subprocess: import md5 Error in test lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_mirror_with_destination_locked_by_another Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 1250, in run warnings.warn_explicit(**w) PotentialZombieWarning: spawnProcess called, but the SIGCHLD handler is not installed. This probably means you have not yet called reactor.run, or called reactor.run(installSignalHandler=0). You will probably never see this process finish, and it may become a zombie process.
lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_mirror_with_destination_self_locked
Error in test lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_mirror_with_destination_self_locked Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 1250, in run warnings.warn_explicit(**w) PotentialZombieWarning: spawnProcess called, but the SIGCHLD handler is not installed. This probably means you have not yet called reactor.run, or called reactor.run(installSignalHandler=0). You will probably never see this process finish, and it may become a zombie process.
lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_stderrLoggedToOOPS
Error in test lp.codehosting.puller.tests.test_scheduler.TestPullerMasterIntegration.test_stderrLoggedToOOPS Traceback (most recent call last): File "/home/barry/projects/launchpad/python-migration2.6/lib/twisted/trial/unittest.py", line 1250, in run warnings.warn_explicit(**w) PotentialZombieWarning: spawnProcess called, but the SIGCHLD handler is not installed. This probably means you have not yet called reactor.run, or called reactor.run(installSignalHandler=0). You will probably never see this process finish, and it may become a zombie process.
Running canonical.testing.layers.ZopelessAppServerLayer tests:
lp.codehosting.puller.tests.test_acceptance.TestBranchPuller.test_mirror_hosted_loom_branch
C-c C-cTraceback (most recent call last): File "bin/test", line 246, in <module> result = testrunner.run([]) File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/__init__.py", line 32, in run failed = run_internal(defaults, args, script_parts=script_parts) File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/__init__.py", line 45, in run_internal runner.run() File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/runner.py", line 136, in run self.run_tests() File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/runner.py", line 235, in run_tests layers_to_run, self.failures, self.errors) File "/home/barry/projects/launchpad/eggs/zope.testing-3.8.1-py2.6.egg/zope/testing/testrunner/runner.py", line 584, in resume_tests time.sleep(0.01) # Keep the loop from being too tight. KeyboardInterrupt