ubuntu-system-image

Revision 13 as of 2014-07-24 18:42:52

Clear message

Dependents/Clients

Dependents:

  • ubuntu-download-manager

Clients:

  • ubuntu-system-settings

General Recommendations

If you're testing packages in a landing silo, after flashing your device as instructed in the test plans below, you will want to install the new packages from the silo. You can do that this way:

  • Install freshly built MPs that are needed for landing, e.g.
    • Make device writable
      • touch /userdata/.writable_image

      • reboot
    • add-apt-repository the relevant PPA.

    • apt-get update

    • apt-get install system-image-cli system-image-common system-image-dbus

  • Do not install the system-image-dev package as this is normally not installed on devices and its absence/presence has an effect on the operation of system-image.

  • Do not do an apt-get upgrade

  • Install any new versions of ubuntu-download-manager and ubuntu-system-settings from the same silo.

  • Possibly install any new versions of the Qt networking stack that may also be part of the silo.

If any of the tests fail, file a bug attaching the following information. It is requested that you file the bug on the upstream package (using that link), although it's okay -- but not necessary -- to also file a bug on the Ubuntu package. In either case, please tag the bug with the client tag.

  • If the test fails, capture the log files:
    • adb pull /var/log/system-image/client.log

    • Optionally capture the u-d-m log files (TBD)
  • Attach these logs to the bug.

After you flash your device with --bootstrap you will probably lose your network settings. Restore them with:

  • adb shell nmcli dev wifi connect <network> password <password>

Test Plan

This test plan is not supposed to be complete; use it to guide your manual testing so they don't miss big functional areas that are part in the component; also this should be used as guideline to inspire the exploratory testing which should be adapted smartly based on the real content of a merge proposal.

Test A -- Good Path Automatic Download

This tests standard upgrading from an older version to the current version. It's important to note that this test is dependent on the set of packages in the older version, so it may not be appropriate when significant changes in the upgrade stack (e.g. s-i, u-d-m, or packages they depend on) are in the latest revision.

  • Flash device to an older version than the current one, e.g. ubuntu-device-flash --channel ubuntu-touch/devel-proposed --revision -5 --bootstrap

  • Open System Settings panel.
  • Wait for it to say there is an update available.
  • Click on Updates available

  • Wait for updates to finish downloading.
  • Click on Install & restart

  • After the reboot, open System Settings panel, then Updates. It should report that your Software is up to date

Test B -- Good Path Automatic Download Current Packages

This tests standard upgrading like above, but it uses the current set of packages and fakes the system upgrading to a newer version. It actually upgrades from the newest version to the newest version because we're going to lie about what version the device is actually on. This is a good test to run to ensure that the current latest build is working as expected.

  • Flash device to the current version, e.g. ubuntu-device-flash --channel ubuntu-touch/devel-proposed --bootstrap

  • Falsify which version your device thinks it's on:
    • adb shell

    • cd /etc/system-image

    • cat channel.ini

    • Look at the build_number line to get the current build number. Subtract 1. (Next line assumes you're at build 246.)

    • sed -e "s/246/245/" -i.bak channel.ini

    • (If this gets messed up, just restore channel.ini from channel.ini.bak)

  • Open System Settings panel.
  • Wait for it to say there is an update available.
  • Click on Updates available

  • Wait for updates to finish downloading.
  • Click on Install & restart

  • After the reboot, open System Settings panel, then Updates. It should report that your Software is up to date

Test C -- Good Path Manual Download

This tests standard upgrading from an older version to the current version. It's important to note that this test is dependent on the set of packages in the older version, so it may not be appropriate when significant changes in the upgrade stack (e.g. s-i, u-d-m, or packages they depend on) are in the latest revision.

  • Flash device to an older version than the current one, e.g. ubuntu-device-flash --channel ubuntu-touch/devel-proposed --revision -1 --bootstrap

  • Enable manual downloads:
    • adb shell system-image-cli --set auto_download=0

  • Open System Settings panel
  • Wait for it to say there is an update available.
  • Click on Updates available

  • Click on Install 1 update

  • Click on Install & restart

  • After the reboot, open System Settings panel, then Updates. It should report that your Software is up to date

  • Restore automatic downloads!

    • adb shell system-image-cli --set auto_download=1

Test D -- Good Path Manual Download Current Packages

This tests standard upgrading like above, but it uses the current set of packages and fakes the system upgrading to a newer version. It actually upgrades from the newest version to the newest version because we're going to lie about what version the device is actually on. This is a good test to run to ensure that the current latest build is working as expected.

  • Flash device to the current version, e.g. ubuntu-device-flash --channel ubuntu-touch/devel-proposed --bootstrap

  • Enable manual downloads:
    • adb shell

    • python3 -c "from systemimage.settings import Settings; Settings().set('auto_download', '0')"

  • Falsify which version your device thinks it's on:
    • adb shell

    • cd /etc/system-image

    • cat channel.ini

    • Look at the build_number line to get the current build number. Subtract 1. (Next line assumes you're at build 246.)

    • sed -e "s/246/245/" -i.bak channel.ini

    • (If this gets messed up, just restore channel.ini from channel.ini.bak)

  • Open System Settings panel.
  • Wait for it to say there is an update available.
  • Click on Updates available

  • Click on Install 1 update

  • Wait for updates to finish downloading.
  • Click on Install & restart

  • After the reboot, open System Settings panel, then Updates. It should report that your Software is up to date

  • Restore automatic downloads!

    • adb shell

    • python3 -c "from systemimage.settings import Settings; Settings().set('auto_download', '1')"

Test E -- Auto Download Multiple Checks

  • Flash device to an older version than the current one, e.g. ubuntu-device-flash --channel ubuntu-touch/devel-proposed --revision -1 --bootstrap

  • Open System Settings panel
  • After one second, open Updates panel
  • Watch for progress
  • If update completes and you are prompted to reboot, then the test succeeded
  • Optionally reboot
  • Install the update, let the system reboot, and then try again. This time you should be up-to-date.

Test F

  • Set the device to download manually.
  • Flash to an older revision
  • Open System Settings and wait for it to say Updates available

  • Click on About this phone

  • Click on Check for Update and wait for it to say Install 1 update

  • Click on Install 1 update and while the files are downloading, swipe up from the bottom and click Back

  • Click on Check for Update again

  • Wait for the Update System overlay to come up, and then install the update, and reboot

Additional tests candidates for automation

The following test cases are being automated. Work items are described in this blueprint.

Testing the image update path

  • Test that updates from image n-1 work
  • Test that updates from image n-2 work

Testing the image updater software

  • Test that the updater software in image n can do an update to a single newer version in a synthetic channel
  • Test that the updater software in image n can do a multi-step update (applying 5? updates in sequence) in a synthetic channel
  • Test that the updater software in image n correctly applies a full-image update when it’s a smaller download than a series of stacked partial upgrades