Test suite fails if previous run did not tear down Librarian fully.
Bug #692872 reported by
Stuart Bishop
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Launchpad itself |
Fix Released
|
High
|
Stuart Bishop |
Bug Description
If the Librarian is left running by a test run, or if the Librarian pid file is left in place, future test runs will fail.
This is caused because we use a static path for librarian data in test runs. We should allocate them dynamically.
Infrastructure work to permit this has been done - see the attached branch, which is landable - but doesn't quite go the final step - it was getting too big.
Related branches
lp:~lifeless/launchpad/librarian
- Jeroen T. Vermeulen (community): Approve
-
Diff: 30005 lines (+13327/-6313)278 files modifiedMakefile (+1/-1)
daemons/librarian.tac (+20/-10)
database/replication/slon_ctl.py (+1/-1)
database/sampledata/current-dev.sql (+724/-724)
database/sampledata/current.sql (+719/-719)
database/schema/comments.sql (+10/-8)
database/schema/patch-2208-01-1.sql (+10/-0)
database/schema/patch-2208-27-0.sql (+10/-0)
database/schema/patch-2208-28-0.sql (+7/-0)
database/schema/patch-2208-28-1.sql (+24/-0)
database/schema/patch-2208-29-0.sql (+10/-0)
database/schema/patch-2208-30-0.sql (+29/-0)
database/schema/patch-2208-31-0.sql (+16/-0)
database/schema/security.cfg (+3/-2)
database/schema/security.py (+67/-39)
database/schema/trusted.sql (+2/-2)
database/schema/upgrade.py (+46/-0)
lib/canonical/database/harness.py (+3/-0)
lib/canonical/launchpad/database/launchpadstatistic.py (+8/-5)
lib/canonical/launchpad/doc/old-testing.txt (+5/-5)
lib/canonical/launchpad/ftests/__init__.py (+0/-39)
lib/canonical/launchpad/helpers.py (+0/-23)
lib/canonical/launchpad/interfaces/_schema_circular_imports.py (+1/-1)
lib/canonical/launchpad/security.py (+6/-8)
lib/canonical/launchpad/windmill/testing/widgets.py (+1/-1)
lib/canonical/librarian/testing/server.py (+101/-97)
lib/canonical/librarian/testing/tests/test_server_fixture.py (+105/-13)
lib/canonical/librarian/tests/test_sigdumpmem.py (+3/-5)
lib/canonical/testing/ftests/test_layers.py (+94/-27)
lib/canonical/testing/layers.py (+6/-2)
lib/lp/answers/doc/karma.txt (+1/-1)
lib/lp/answers/doc/questionsets.txt (+18/-2)
lib/lp/answers/model/question.py (+7/-4)
lib/lp/answers/stories/questions-index.txt (+15/-0)
lib/lp/archivepublisher/scripts/generate_ppa_htaccess.py (+7/-5)
lib/lp/archivepublisher/tests/test_generate_ppa_htaccess.py (+2/-2)
lib/lp/archiveuploader/dscfile.py (+1/-1)
lib/lp/archiveuploader/tests/test_utils.py (+1/-1)
lib/lp/archiveuploader/tests/upload-karma.txt (+1/-3)
lib/lp/archiveuploader/utils.py (+1/-1)
lib/lp/blueprints/browser/configure.zcml (+1/-1)
lib/lp/blueprints/browser/specification.py (+1/-1)
lib/lp/blueprints/browser/tests/test_specification.py (+4/-1)
lib/lp/blueprints/configure.zcml (+1/-1)
lib/lp/blueprints/interfaces/specification.py (+1/-1)
lib/lp/blueprints/model/specification.py (+1/-1)
lib/lp/blueprints/subscribers.py (+1/-1)
lib/lp/bugs/browser/bugsubscription.py (+1/-2)
lib/lp/bugs/doc/externalbugtracker-comment-imports.txt (+1/-1)
lib/lp/bugs/doc/malone-karma.txt (+1/-1)
lib/lp/bugs/interfaces/bugtask.py (+1/-1)
lib/lp/bugs/javascript/official_bug_tags.js (+1/-1)
lib/lp/bugs/model/bugtask.py (+1/-1)
lib/lp/bugs/scripts/checkwatches/core.py (+1/-1)
lib/lp/bugs/tests/test_bugtask_search.py (+2/-5)
lib/lp/code/browser/branch.py (+1/-1)
lib/lp/code/browser/branchmergeproposal.py (+1/-1)
lib/lp/code/browser/tests/test_branchmergeproposal.py (+2/-4)
lib/lp/code/browser/tests/test_branchmergeproposallisting.py (+1/-1)
lib/lp/code/browser/tests/test_sourcepackagerecipe.py (+6/-6)
lib/lp/code/doc/branch-karma.txt (+1/-1)
lib/lp/code/interfaces/branchmergeproposal.py (+1/-1)
lib/lp/code/interfaces/diff.py (+1/-1)
lib/lp/code/interfaces/sourcepackagerecipe.py (+4/-4)
lib/lp/code/interfaces/sourcepackagerecipebuild.py (+1/-2)
lib/lp/code/mail/codehandler.py (+1/-1)
lib/lp/code/mail/tests/test_branchmergeproposal.py (+1/-1)
lib/lp/code/mail/tests/test_codehandler.py (+1/-1)
lib/lp/code/model/branchmergeproposal.py (+6/-2)
lib/lp/code/model/diff.py (+1/-2)
lib/lp/code/model/sourcepackagerecipe.py (+5/-12)
lib/lp/code/model/sourcepackagerecipebuild.py (+1/-1)
lib/lp/code/model/sourcepackagerecipedata.py (+25/-4)
lib/lp/code/model/tests/test_branch.py (+1/-1)
lib/lp/code/model/tests/test_branchmergeproposal.py (+6/-3)
lib/lp/code/model/tests/test_branchmergeproposaljobs.py (+4/-1)
lib/lp/code/model/tests/test_codereviewvote.py (+1/-1)
lib/lp/code/model/tests/test_diff.py (+6/-2)
lib/lp/code/model/tests/test_recipebuilder.py (+11/-7)
lib/lp/code/model/tests/test_sourcepackagerecipe.py (+68/-16)
lib/lp/code/scripts/tests/test_merge_proposal_jobs.py (+3/-3)
lib/lp/code/templates/branch-register-merge.pt (+1/-1)
lib/lp/code/tests/helpers.py (+3/-3)
lib/lp/code/windmill/tests/test_branchmergeproposal_review.py (+13/-2)
lib/lp/codehosting/scanner/tests/test_bzrsync.py (+8/-3)
lib/lp/coop/answersbugs/model.py (+1/-1)
lib/lp/registry/browser/peoplemerge.py (+1/-1)
lib/lp/registry/browser/team.py (+1/-1)
lib/lp/registry/browser/tests/test_peoplemerge.py (+1/-1)
lib/lp/registry/configure.zcml (+2/-2)
lib/lp/registry/doc/person-karma.txt (+1/-1)
lib/lp/registry/doc/product.txt (+10/-0)
lib/lp/registry/doc/projectgroup.txt (+11/-0)
lib/lp/registry/interfaces/distribution.py (+1/-1)
lib/lp/registry/interfaces/distroseries.py (+1/-1)
lib/lp/registry/interfaces/product.py (+2/-6)
lib/lp/registry/interfaces/projectgroup.py (+1/-1)
lib/lp/registry/model/distribution.py (+28/-1)
lib/lp/registry/model/distroseries.py (+3/-2)
lib/lp/registry/model/product.py (+33/-26)
lib/lp/registry/model/projectgroup.py (+32/-20)
lib/lp/registry/stories/object/xx-object-branding.txt (+2/-5)
lib/lp/registry/stories/person/xx-person-edit-profile-picture.txt (+1/-1)
lib/lp/registry/stories/person/xx-person-rdf.txt (+1/-1)
lib/lp/registry/tests/test_teammembership.py (+1/-1)
lib/lp/registry/windmill/tests/test_product_configuration_hidden.py (+1/-0)
lib/lp/scripts/garbo.py (+1/-1)
lib/lp/scripts/utilities/pageperformancereport.py (+3/-3)
lib/lp/scripts/utilities/tests/test_pageperformancereport.py (+1/-2)
lib/lp/services/features/testing.py (+5/-1)
lib/lp/services/features/tests/test_helpers.py (+1/-1)
lib/lp/services/features/tests/test_webapp.py (+1/-1)
lib/lp/services/mail/incoming.py (+1/-1)
lib/lp/services/mail/mailbox.py (+1/-1)
lib/lp/services/mail/notificationrecipientset.py (+1/-1)
lib/lp/services/mail/signedmessage.py (+1/-1)
lib/lp/services/mailman/testing/sync.py (+1/-1)
lib/lp/services/scripts/base.py (+1/-1)
lib/lp/services/scripts/model/scriptactivity.py (+1/-1)
lib/lp/services/worlddata/interfaces/language.py (+4/-0)
lib/lp/services/worlddata/model/language.py (+11/-1)
lib/lp/services/worlddata/tests/test_language.py (+11/-2)
lib/lp/soyuz/adapters/archivesourcepublication.py (+1/-1)
lib/lp/soyuz/browser/tests/distroseriesqueue-views.txt (+2/-2)
lib/lp/soyuz/doc/distroseriesqueue-notify.txt (+2/-2)
lib/lp/soyuz/doc/distroseriesqueue.txt (+2/-2)
lib/lp/soyuz/interfaces/distributionjob.py (+2/-3)
lib/lp/soyuz/interfaces/sourcepackagerelease.py (+4/-4)
lib/lp/soyuz/model/publishing.py (+2/-4)
lib/lp/soyuz/model/sourcepackagerelease.py (+2/-2)
lib/lp/soyuz/scripts/gina/packages.py (+1/-1)
lib/lp/soyuz/scripts/tests/test_queue.py (+3/-3)
lib/lp/soyuz/scripts/tests/test_sync_source.py (+5/-3)
lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt (+2/-2)
lib/lp/soyuz/tests/test_initialisedistroseriesjob.py (+1/-3)
lib/lp/testing/__init__.py (+39/-1)
lib/lp/testing/branding.py (+48/-0)
lib/lp/testing/factory.py (+179/-20)
lib/lp/testing/karma.py (+86/-17)
lib/lp/testing/mail.py (+1/-1)
lib/lp/testing/tests/test_factory.py (+98/-5)
lib/lp/testing/tests/test_karma.py (+130/-0)
lib/lp/translations/browser/configure.zcml (+2/-2)
lib/lp/translations/browser/customlanguagecode.py (+1/-1)
lib/lp/translations/browser/pofile.py (+23/-41)
lib/lp/translations/browser/potemplate.py (+1/-3)
lib/lp/translations/browser/tests/pofile-base-views.txt (+1/-3)
lib/lp/translations/browser/tests/test_pofile_view.py (+7/-7)
lib/lp/translations/browser/tests/test_translatablemessage_view.py (+3/-3)
lib/lp/translations/browser/tests/test_translationmessage_view.py (+339/-60)
lib/lp/translations/browser/tests/translationmessage-views.txt (+40/-152)
lib/lp/translations/browser/translationimportqueue.py (+4/-4)
lib/lp/translations/browser/translationmessage.py (+290/-203)
lib/lp/translations/configure.zcml (+13/-0)
lib/lp/translations/doc/distroseries-translations-copy.txt (+1/-1)
lib/lp/translations/doc/gettext-check-messages.txt (+34/-38)
lib/lp/translations/doc/poexport-language-pack.txt (+7/-9)
lib/lp/translations/doc/poexport-queue.txt (+13/-4)
lib/lp/translations/doc/pofile-verify-stats.txt (+2/-2)
lib/lp/translations/doc/pofile.txt (+42/-109)
lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt (+16/-16)
lib/lp/translations/doc/poimport-pofile-old-po-imported.txt (+12/-11)
lib/lp/translations/doc/poimport-pofile-syntax-error.txt (+4/-4)
lib/lp/translations/doc/poimport-potemplate-syntax-error.txt (+4/-4)
lib/lp/translations/doc/poimport-script.txt (+342/-0)
lib/lp/translations/doc/poimport.txt (+71/-418)
lib/lp/translations/doc/potemplate.txt (+6/-2)
lib/lp/translations/doc/potmsgset.txt (+35/-40)
lib/lp/translations/doc/remove-translations-by.txt (+7/-8)
lib/lp/translations/doc/rosetta-karma.txt (+18/-18)
lib/lp/translations/doc/rosetta-translation.txt (+29/-28)
lib/lp/translations/doc/translationimportqueue.txt (+16/-16)
lib/lp/translations/doc/translationmessage.txt (+7/-7)
lib/lp/translations/doc/translations-export-to-branch.txt (+4/-3)
lib/lp/translations/doc/translationsoverview.txt (+18/-0)
lib/lp/translations/doc/vpoexport.txt (+16/-7)
lib/lp/translations/help/imported-upload.html (+0/-61)
lib/lp/translations/help/pofile-upload.html (+3/-7)
lib/lp/translations/interfaces/pofile.py (+16/-13)
lib/lp/translations/interfaces/potemplate.py (+40/-0)
lib/lp/translations/interfaces/potmsgset.py (+105/-19)
lib/lp/translations/interfaces/rosettastats.py (+1/-1)
lib/lp/translations/interfaces/side.py (+73/-0)
lib/lp/translations/interfaces/translatablemessage.py (+10/-10)
lib/lp/translations/interfaces/translationgroup.py (+0/-19)
lib/lp/translations/interfaces/translationimporter.py (+2/-2)
lib/lp/translations/interfaces/translationimportqueue.py (+14/-11)
lib/lp/translations/interfaces/translationmessage.py (+58/-10)
lib/lp/translations/interfaces/translationpolicy.py (+153/-0)
lib/lp/translations/interfaces/translations.py (+4/-3)
lib/lp/translations/interfaces/vpoexport.py (+2/-2)
lib/lp/translations/model/pofile.py (+100/-251)
lib/lp/translations/model/potemplate.py (+205/-94)
lib/lp/translations/model/potmsgset.py (+646/-138)
lib/lp/translations/model/side.py (+72/-0)
lib/lp/translations/model/translatablemessage.py (+12/-14)
lib/lp/translations/model/translationgroup.py (+20/-6)
lib/lp/translations/model/translationimportqueue.py (+12/-12)
lib/lp/translations/model/translationmessage.py (+116/-99)
lib/lp/translations/model/translationpolicy.py (+186/-0)
lib/lp/translations/model/translationsoverview.py (+11/-8)
lib/lp/translations/model/translationsperson.py (+8/-6)
lib/lp/translations/model/vpoexport.py (+2/-2)
lib/lp/translations/scripts/gettext_check_messages.py (+22/-15)
lib/lp/translations/scripts/message_sharing_migration.py (+28/-20)
lib/lp/translations/scripts/migrate_current_flag.py (+5/-5)
lib/lp/translations/scripts/migrate_variants.py (+0/-198)
lib/lp/translations/scripts/remove_translations.py (+24/-17)
lib/lp/translations/scripts/tests/test_message_sharing_migration.py (+40/-37)
lib/lp/translations/scripts/tests/test_migrate_current_flag.py (+46/-41)
lib/lp/translations/scripts/tests/test_migrate_variants.py (+0/-139)
lib/lp/translations/scripts/tests/test_remove_translations.py (+81/-74)
lib/lp/translations/scripts/tests/test_translations_to_branch.py (+3/-2)
lib/lp/translations/scripts/translations_to_branch.py (+6/-6)
lib/lp/translations/stories/standalone/xx-licensing.txt (+0/-11)
lib/lp/translations/stories/standalone/xx-pofile-details.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-pofile-export.txt (+7/-20)
lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt (+6/-6)
lib/lp/translations/stories/standalone/xx-pofile-translate.txt (+0/-15)
lib/lp/translations/stories/standalone/xx-products-with-translations.txt (+17/-0)
lib/lp/translations/stories/standalone/xx-rosetta-homepage.txt (+18/-1)
lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt (+12/-12)
lib/lp/translations/stories/translationgroups/55-pofile-upload.txt (+4/-18)
lib/lp/translations/stories/translationgroups/60-translation-suggestions.txt (+2/-2)
lib/lp/translations/stories/translations/30-rosetta-pofile-translation-gettext-error.txt (+12/-20)
lib/lp/translations/stories/translations/43-distrorelease-translations.txt (+5/-5)
lib/lp/translations/stories/translations/55-rosetta-potemplates.txt (+5/-5)
lib/lp/translations/templates/currenttranslationmessage-translate-one.pt (+6/-6)
lib/lp/translations/templates/pofile-translate.pt (+3/-3)
lib/lp/translations/templates/pofile-upload.pt (+4/-31)
lib/lp/translations/templates/potemplate-chart.pt (+1/-1)
lib/lp/translations/templates/rosetta-status-legend.pt (+1/-1)
lib/lp/translations/templates/serieslanguage-index.pt (+1/-1)
lib/lp/translations/templates/translations-macros.pt (+1/-1)
lib/lp/translations/tests/helpers.py (+150/-0)
lib/lp/translations/tests/potmsgset-update-translation.txt (+30/-37)
lib/lp/translations/tests/test_clearcurrenttranslation.py (+284/-0)
lib/lp/translations/tests/test_empty_messages.py (+34/-32)
lib/lp/translations/tests/test_helpers.py (+180/-0)
lib/lp/translations/tests/test_pofile.py (+718/-467)
lib/lp/translations/tests/test_potemplate.py (+56/-4)
lib/lp/translations/tests/test_potmsgset.py (+1084/-273)
lib/lp/translations/tests/test_setcurrenttranslation.py (+1184/-0)
lib/lp/translations/tests/test_shared_potemplate.py (+474/-13)
lib/lp/translations/tests/test_side.py (+186/-0)
lib/lp/translations/tests/test_suggestions.py (+12/-11)
lib/lp/translations/tests/test_translatablemessage.py (+48/-37)
lib/lp/translations/tests/test_translatedlanguage.py (+71/-48)
lib/lp/translations/tests/test_translationmessage.py (+461/-1)
lib/lp/translations/tests/test_translationpermission.py (+7/-24)
lib/lp/translations/tests/test_translationpolicy.py (+411/-0)
lib/lp/translations/tests/test_translations_to_review.py (+3/-3)
lib/lp/translations/utilities/doc/kde-po-file-format.txt (+1/-2)
lib/lp/translations/utilities/gettext_po_importer.py (+2/-2)
lib/lp/translations/utilities/mozilla_xpi_importer.py (+3/-3)
lib/lp/translations/utilities/sanitize.py (+194/-0)
lib/lp/translations/utilities/tests/helpers.py (+7/-5)
lib/lp/translations/utilities/tests/import-flags.txt (+8/-8)
lib/lp/translations/utilities/tests/test_file_importer.py (+173/-34)
lib/lp/translations/utilities/tests/test_gettext_po_exporter.py (+3/-3)
lib/lp/translations/utilities/tests/test_gettext_po_importer.py (+4/-4)
lib/lp/translations/utilities/tests/test_kde_po_importer.py (+13/-10)
lib/lp/translations/utilities/tests/test_sanitize.py (+276/-0)
lib/lp/translations/utilities/tests/test_superfastimports.py (+62/-51)
lib/lp/translations/utilities/tests/test_translation_importer.py (+73/-76)
lib/lp/translations/utilities/tests/test_validate.py (+86/-0)
lib/lp/translations/utilities/tests/test_xpi_import.py (+3/-4)
lib/lp/translations/utilities/tests/test_xpi_po_exporter.py (+2/-2)
lib/lp/translations/utilities/translation_import.py (+215/-220)
lib/lp/translations/utilities/validate.py (+51/-0)
lib/lp/translations/windmill/tests/test_pofile_translate.py (+4/-5)
scripts/ftpmaster-tools/sync-source.py (+6/-9)
scripts/rosetta/migrate_current_flag.py (+4/-4)
scripts/rosetta/migrate_variants.py (+0/-30)
scripts/rosetta/share-jaunty-translations.py (+0/-134)
setup.py (+2/-0)
versions.cfg (+1/-1)
lp:~stub/launchpad/librarian-layer
- Stuart Bishop (community): Approve
-
Diff: 1015 lines (+139/-136)40 files modifiedlib/canonical/config/fixture.py (+0/-1)
lib/canonical/config/tests/test_fixture.py (+3/-6)
lib/canonical/launchpad/doc/canonical-config.txt (+0/-8)
lib/canonical/launchpad/doc/librarian.txt (+25/-18)
lib/canonical/launchpad/doc/message.txt (+0/-2)
lib/canonical/launchpad/doc/old-testing.txt (+2/-1)
lib/canonical/launchpad/pagetests/webservice/xx-hostedfile.txt (+3/-3)
lib/canonical/launchpad/scripts/ftests/librarianformatter.txt (+6/-6)
lib/canonical/librarian/ftests/test_web.py (+9/-20)
lib/canonical/librarian/testing/server.py (+17/-3)
lib/canonical/librarian/testing/tests/test_server_fixture.py (+17/-6)
lib/canonical/testing/ftests/test_layers.py (+2/-2)
lib/canonical/testing/layers.py (+10/-7)
lib/lp/bugs/browser/tests/test_bugattachment_file_access.py (+5/-5)
lib/lp/bugs/stories/webservice/xx-bug.txt (+1/-1)
lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt (+1/-1)
lib/lp/hardwaredb/stories/hwdb/02-view-submissions.txt (+3/-3)
lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt (+1/-1)
lib/lp/registry/stories/product/xx-product-files.txt (+4/-4)
lib/lp/registry/stories/webservice/xx-project-registry.txt (+2/-2)
lib/lp/registry/tests/test_distroseriesdifference.py (+1/-2)
lib/lp/soyuz/doc/distroarchseries.txt (+1/-1)
lib/lp/soyuz/doc/soyuz-files.txt (+2/-2)
lib/lp/soyuz/stories/ppa/xx-ppa-files.txt (+2/-2)
lib/lp/soyuz/stories/soyuz/xx-distro-package-pages.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-queue-pages-delayed-copies.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt (+2/-2)
lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt (+1/-1)
lib/lp/soyuz/tests/test_publishing_models.py (+4/-6)
lib/lp/testing/__init__.py (+1/-6)
lib/lp/translations/doc/poexport-queue.txt (+1/-1)
lib/lp/translations/doc/poexport-request-productseries.txt (+1/-1)
lib/lp/translations/doc/poexport-request.txt (+2/-2)
lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt (+1/-1)
lib/lp/translations/doc/poimport-pofile-old-po-imported.txt (+1/-1)
lib/lp/translations/doc/poimport-pofile-syntax-error.txt (+1/-1)
lib/lp/translations/doc/poimport-potemplate-syntax-error.txt (+2/-2)
lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt (+1/-1)
Changed in launchpad: | |
status: | Won't Fix → Triaged |
status: | Triaged → In Progress |
importance: | Undecided → High |
description: | updated |
Changed in launchpad: | |
importance: | Medium → High |
tags: |
added: qa-untestable removed: qa-needstesting |
Changed in launchpad: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
I removed code that did this because it was masking terrible fixture management issues: we were running a librarian per test runner instance - which was many in a full run - because of the zope testrunner reinvocation logic.
My librarian branch, if landed, should take us a long way to unique librarian instances per run with no interactions with the remains of the previous run.