Diff for "PythonMigrationStatus"

Not logged in - Log In / Register

Differences between revisions 102 and 190 (spanning 88 versions)
Revision 102 as of 2009-10-31 11:41:20
Size: 30556
Editor: maxb
Comment:
Revision 190 as of 2019-07-25 14:47:56
Size: 0
Editor: cjwatson
Comment: Long obsolete; Launchpad now requires Python 2.7
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= 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 ==

 * The `Makefile`s of pygettextpo & pygpgme (in sourcecode/) make direct reference to Python 2.4, you'll need to amend them appropriately.

== 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 [[https://launchpad.net/bugs/438634|not-so-mysterious problem]], hence we have eggs in download-cache.

=== Cleanup potential ===

 * 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).

=== Getting started ===

 * Apply [[http://paste.ubuntu.com/297812/|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
}}}