Dependents/Clients

Dependents:

Clients:

General Recommendations

Note: You'll want to begin each test in a "fresh" state. Specifically, make sure that before you start a test, the system-image-dbus process is not running. I've noticed that this process may already be running after a reboot, and this could affect the success of your test. You can check this with:

adb shell ps -waux | grep system-image-dbus

If you see something like the following, then the process is running and you'll need to kill it (e.g. via SIGTERM) or rebooting.

You may also want to clear the log file of any previous results:

truncate -s 0 /var/log/system-image/client.log

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:

Alternatively, just download the .debs from the silo PPA and dpkg -i *.deb manually.

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.

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

There are two sets of test plans depending on whether you're QAing system-image 2.5 or system-image 3.

Test Plan for system-image 3

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.

Test B -- 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.

Test Plan for system-image 2.5

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.

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.

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.

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.

Test E -- Auto Download Multiple Checks

Test F

Test G -- Phased Updates

This test verifies the operation of phased updates. Phased updates means that a percentage is assigned to an end-point target image, and only that percentage of devices should be updated to that image. Devices with a percentage outside that range will fall back to the previous image. The server guarantees that only end-point images will have a phased update other than 100% (and the absence of a phased-percentage key in the JSON is equivalent to 100%). The client ignores phased percentages on any mid-point image in an upgrade path. An image with a phased percentage of 0% is never selected.

As an example, let's say that channel 'devel' has an image 10 and a new image 11 is released with a phased percentage of 25%. Each device on channel 'devel' calculates its own percentage (its guinea pig value) from the following tuple of information:

Let's say the device calculates its percentage as 17%; this device would elect to apply the image 11 update. Let's say another device calculates its percentage as 33%; this device would elect to ignore the image 11 update.

When there are multiple upgrade candidate paths available, the client scores each candidate independent of the phased percentage, and sorts them in winning order from lowest score to highest. If the lowest scored path has a phased percentage lower than the device's percentage, this candidate is discarded and the next lowest scoring candidate is considered. This continues until a candidate upgrade path with a phased percentage greater than or equal to the device's percentage; this candidate is then selected as the winning upgrade path. If no candidate matches this criteria, the device is considered up-to-date.

A missing phase percentage means every device should update; it's equivalent to an image percentage of 100%. An image percentage of 0% means that the image has been effectively pull from release, and no devices will update to it.

To test this scenario, we need a staging server with a known end-point update on a particular channel with a non-100% phase percentage. We currently have available:

You also need a way to override the device's default phase percentage calculation, which can be done with system-image-cli -p.

Performing the test

Be sure to restore your archive-master files and channel.ini file if you want to do other tests.

Additional tests candidates for automation

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

Testing the image update path

Testing the image updater software

Process/Merges/TestPlan/ubuntu-system-image (last edited 2016-03-04 20:58:34 by localhost)