blob: 8ecda35263847b13d405cbcb46befa978e16a754 [file] [log] [blame]
What is this?
Test fixtures for testing updating from version X to version Y.
products/* -- Minimal platform with installer
sites/* -- Update site to update platform to specified destination version
(don't want to use full update site because we don't want to update the bootstrapper)
The table below summarizes for each release if the "driver bundle" is the RCP Example
or the Bootstrapper and which API was the "default" API path through the installer
for that release:
4.0.0 - RCP Example -> BundleUpdater#update(String)
4.1.1 - RCP Example -> BundleUpdater#update(String)
4.2.0 - Bootstrapper -> BundleUpdaterHelper#updateWithProgressDialog() -> BundleUpdater#update(String)
4.3.0 - Bootstrapper -> BundleUpdaterHelper#updateWithProgressDialog() -> BundleUpdater#update(String)
4.4.1 - Bootstrapper -> BundleUpdaterHelper#updateWithProgressDialog() -> BundleUpdater#update(URL, File)
The installer test verifies the following:
Given versions V(4.0.0) to V(4.n), for all V(x), the installer test ensures that we can
successfully update from V(x) to V(x+1), V(x+2), ..., V(n).
In each case, we do *not* update the "driver bundle" (ie: the RCP example bundle or the
bootstrapper), but only the installer, and verify that the resulting installation works. We
also test some other minimal invariants. This results in the following observation from the
above table:
For versions 4.0.0-4.3.0, the default installer execution path always went through
#update(String). For versions subsequent to 4.3.0, the default installer execution path goes
through #update(URL, File).
Consequently, the platform fixture for versions 4.0.0-4.3.0 will only execute the #update(String)
code path. Similarly, versions after 4.3.0 (noninclusive) will only execute the #update(URL, File)
code path. Since the various #update methods are only convenience methods that delegate to
the "real" #update method and don't do any work of their own, this seems like a reasonable
compromise over testing all permutations of #update methods for each pair of version upgrades.
Lastly, version 4.4.0 removed all permutations of the legacy #update(String) method. For testability
and to ease customer migration, 4.4.1 adds back a single #update(String) method but marks it as
@deprecated. This will enable all customers who used the default installer code path up through 4.3.0
to upgrade to 4.4.1 without needing to also upgrade their bootstrapper. They can then upgrade
their bootstrapper separately when needed.
-------------------------------
In order to run the Integration tests contained within this plug-in you need to;
1) Open up install.product and export to a directory somewhere
2) Open up the InstallerIntegrationTest class (under org.eclipse.e4.enterprise.installer.test.integration)
3) Change the EXPORT_DIR constant to match the directory where you exported in Step 1)
(Don't include any eclipse sub directory)
4) Right click InstallerIntegrationTest and click "Run as Junit test"
---------
Problems writing an integration test for upgrade problem:
1) Unlike all the other tests, this test must start with a fixture that is at a specific version.
What this is *really* chasing is: Can we upgrade from any prior version of the platform to the current
version and guarantee that (1) it works, and (2) there is some minimal consistent behavior.