geode-old-versions
ModuleThis module provides old Geode product versions for use by DUnit upgrade tests.
Subprojects are added to this project from the outside. For example Geode's settings.gradle
has code like this:
['1.0.0-incubating', /* etc */ '1.12.0'].each { include 'geode-old-versions:'.concat(it) }
For each subproject this project will download the artifacts (from whatever Maven repositories) are in effect. It'll unpack artifacts into subproject-specific build dirs.
After everything is downloaded, two manifest-like files will be created for use by e.g. VersionManager
:
*. geodeOldVersionInstalls.txt
: a map of version to install directory *. geodeOldVersionClasspaths.txt
: a map of version to Java classpath
If you find a Geode rolling upgrade bug that necessitates a patch to an old line of development, you‘d like to be able to branch that old line of development and build-and-publish artifacts locally. You’d then like this module to consume your locally-built artifacts instead of the ones acquired from remote Maven repositories.
Here's an example of how you can convince Gradle to use your locally-published artifacts.
Let‘s say you’ve found a rolling upgrade bug that necessitates a change to Geode 1.12.0 (an old version.)
1. clear, from the Gradle cache, 1.12.0 artifacts downloaded from non-local Maven repos
cd geode # from the root of your Git clone find ./.gradle -name "*1.12.0*" | xargs rm -fr {} \; find ~/.gradle -name "*1.12.0*" | xargs rm -fr {} \;
2. delete the (synthesized) 1.12.0 subproject
rm -fr ./geode-old-versions/1.12.0
3. manually rebuild (via Gradle, not IntelliJ) the geode-old-versions
module
./gradlew :geode-old-versions:build
4. verify we are seeing the locally-built-and-published code (see sha and branch)
./geode-old-versions/1.12.0/build/apache-geode-1.12.0/bin/gfsh version --full
e.g. I named my 1.12.0-based feature branch feature/GEODE-8240-1-12-0-version-ordinal
and I see:
Source-Repository: feature/GEODE-8240-1-12-0-version-ordinal Source-Revision: c38a0aa0df2f89fc657aa4f1e15fc152df32c99c
Now any upgradeTest
e.g. RollingUpgradeRollServersOnReplicatedRegion_dataserializable
that calls for Geode 1.12.0 will get the locally-published one.