PackageTesting

Revision 5 as of 2009-05-29 14:35:29

Clear message

Summary

Setting up regular piuparts and lintian runs.

Release Note

This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the release notes of the first release in which it is implemented. (Not all of these will actually be included in the release notes, at the release manager's discretion; but writing them is a useful exercise.)

It is mandatory.

Rationale

This should cover the _why_: why is this change being proposed, what justifies it, where we see this justified.

User stories

Assumptions

Design

You can have subsections that better describe specific parts of the issue.

Implementation

This section should describe a plan of action (the "how") to implement the changes discussed. Could include subsections like:

UI Changes

Should cover changes required to the UI, or specific UI that is required to implement this

Code Changes

Code changes should include an overview of what needs to change, and in some cases even the specific details.

Migration

Include:

  • data migration, if any
  • redirects from old URLs to new ones, if any
  • how users will be pointed to the new way of doing things, if necessary.

Test/Demo Plan

It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage.

This need not be added or completed until the specification is nearing beta.

Unresolved issues

This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved.

BoF agenda and discussion

Goal

  • Catch package issues more quickly

Tools

  • lintian
    • checks for package bugs
    • will not catch post-install script errors
    • already done by Debian, so might not give us a large bang for buck
  • apport
    • reports bugs when install scripts fail or crash
    • we have some data on this, but nobody has really fixed any of it
  • conflictchecker

  • piuparts
  • autopackagetest

Want to move piuparts sessions into the cloud

  • currently chroot-based
  • need to do this to do things like run services, do upgrades, etc.

Historically we get most bang for our buck by doing large-scale system testing

  • Install a system, do install/upgrade of a lot of packages, test
  • Is it now time to start testing at a package level?

Would be great to pool resources and do all this package testing together... Currently just have people doing it ad-hoc

When should we run these tools?

  • Package testing probably does not fall into Checkbox
  • Could this be tied into the build process? As part of build process, test install and uninstall of package
    • Need to run conflict-checker on packages
  • At times we need to touch every package in the archive
    • E.g. "If you call a certain function, how many applications use that function?"
    • Can we use a similar process?
      • Need a local mirror... use a machine to run this in the datacenter
  • Should run lintian on everything, whenever a package gets updated
    • Can specify lintian verbosity
    • we should probably start with just errors and leave warnings off to minimize data firehose
  • Should we set up some VMs and install a ton of packages?
    • we'd have to set the debconf level to critical or be overwhelmed by debconf questions
      • we'll still probably get some questions, so someone will have to monitor it

When do we not want to run these?

  • Do not want to make it a requirement to go into the archive
    • Only block a package when it fails when we are coming up on a milestone?
    • Even if we don't block in a milestone, we should notify the developer

Where do we run these?

  • A QA server to be determined
    • will probably run in a VM

Proposals

lintian
  • Run lintian on all packages in archive (once)
    • or how about only packages with Ubuntu delta, as we assume Debian tests all of theirs
  • After that run it whenever a package is checked in
    • watch archive for package updates
    • download and run lintian

Upgrade Testing
  • Create a VM of the previous release (once) and clone it every day
  • Upgrade to latest version of previous release
  • Dist-upgrade to latest release

First Step
  • Henrik Omma and Ronald McCollam will coordinate and learn how to use lintian

    • Coordinate with Steve Beattie and Juanje Ojeda from Guadalinex (juanje on Launchpad)
    • Further discussions reveal that conflictchecker would have a greater impact and would be a better start
  • Ronald McCollam will begin running these tests and evaluate how much value they provide

  • run tests as described in "lintian" proposal provide output on a webpage somewhere
    • Marc Tardif requests having conflict-checker as well
  • NB: There is similar work going on here: https://blueprints.edge.launchpad.net/ubuntu/+spec/server-karmic-automate-pkg-testing-in-the-cloud

    • we should coordinate work to avoid duplicating effort

Next Steps
  • include piuparts or autopkgtest
    • these tools may need some updates or work and bugfixes before they are useful
    • another issue here will be receiving a number of false positives
    • piuparts is/will be better maintained than autopkgtest for the immediate future and gives results that are more immediately relevant


CategorySpec