Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Why Testing of a Release Artifact Matters

For an apache project, a VOTE on a release candidate is a very important process.  By voting (particularly for PPMC members and committers), you are saying to the world that "yes, I have download, verified and tested using the project's procedure for testing".  Your +1, 0 or -1 vote is an indication of the success of the steps listed.

The more time that each individual spends reviewing the artifacts, the higher confidence we can have in both the release itself and our ability to pass an IPMC vote later on.  Remember, we, as a podling, are going to be held to a higher standard for our releases!  The IPMC (and our mentors) are looking for us to show that we understand what it means to have a high quality release.

Test with source code release

...

Note

Unless specified specifically, instruction steps should be assumed to be run from your local machine, not from within the DevCloud VM.  The DevCloud VM is the target runtime environment of the tests, but the instructions will push the code to that VM at the right time.

Note

You can follow the following screencast to watch the entire procedure.

Setup environment

Install the devcloud VM image.

...

Warning

These pre-requisite development tools are not part of the release validation itself. The instructions are being provided for those testers that may not normally have these tools installed on their test system, and want to perform the expected tests. The pre-requisites listed may be not be 100% complete (for example, we assume you have git, tar, etc... installed).  If you run into any issues, please ask on the cloudstack-dev@incubatordev@cloudstack.apache.org mailing list.

...

Note

If after the above steps, for any reason, mkisofs is still not installed, download it from the net. One good link to get mkisofs for Mac OS X is from Helios. Follow the instructions in the section "Download HELIOS 'mkisofs' tested binary versions". Use the macosx86 binary if you're running mac os x on an intel platform. After downloading the mkisofs binary, copy it over to /usr/local/bin/.

Next, you will need to install JSch.

First download the binary distribution of Ant.

Unpack the archive, and runInstall JSch:

Code Block
wget http://downloads.sourceforge.net/project/jsch/jsch.jar/0.1.48/jsch-0.1.48.jar
sudo cp jsch-0.1.48.jar /usrsudo cp lib/ant-jsch.jar /usr/share/ant/lib/

Install Boto (assumes you have Python and Python Setup Tools already installed):

...

Clean up your environment (and DevCloud)

Note

Since we have graduated from the incubator, the git remote URL thats embedded in the original DevCloud image is incorrect.  Before following the step below, ssh into the devcloud image (run "ssh root@localhost -p 2222" and password is "password") and edit

Code Block
rm -Rf /tmp/cloudstack rm -Rf ~/.m2 ssh root@localhost -p 2222 'cd

/opt/cloudstack/

; rm -rf apache-tomcat-6.0.32; unzip apache-tomcat-6.0.32.zip; cd incubator-cloudstack; git clean -f; git reset --hard; git pull --rebase; git clean -f; git checkout origin/4.0 -b 4.0 -f '

Type the password "password" during the ssh promote.

Download the source build

Download the artifacts:

Code Block

mkdir /tmp/cloudstack; cd /tmp/cloudstack
wget http://people.apache.org/~chipchilders/dist/cloudstack/KEYS
wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.bz2
wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.bz2.asc
wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.bz2.md5
wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.bz2.sha

Install gpg (if needed): sudo apt-get install gpg

Import keys:  

This can be done by importing the keys stored in the source distribution's KEYS file:  gpg --import KEYS

Alternatively, you could download the signing keys (ID's found in the KEYS file) individually via a keyserver.  Ex:  gpg --recv-keys CC56CEA8

Verify signatures and hash files:

Code Block

gpg --verify apache-cloudstack-4.0.0-incubating-src.tar.bz2.asc
gpg --verify apache-cloudstack-4.0.0-incubating-src.zip.asc

Both of these commands should return "Good Signature".

incubator-cloudstack/.git/config to modify the URL from https://git-wip-us.apache.org/repos/asf/*incubator-*cloudstack.git (https://git-wip-us.apache.org/repos/asf/*incubator\-*cloudstack.git) to https://git-wip-us.apache.org/repos/asf/cloudstack.git

Once that's done, exit from your ssh session back to your local system.

Code Block
rm -Rf /tmp/cloudstack
rm -Rf ~/.m2
ssh root@localhost -p 2222 'cd /opt/cloudstack/; rm -rf apache-tomcat-6.0.32; unzip apache-tomcat-6.0.32.zip; cd incubator-cloudstack; git clean -f; git reset --hard; git pull --rebase; git clean -f; git  checkout origin/4.0 -b 4.0 -f '

Type the password "password" when prompted to by SSH.

Download the source build

Note

Some versions of wget will require that you add the --no-check-certificate param to the commands below. You need this, if you get an error stating "ERROR: The certificate of `dist.apache.org' is not trusted.".

Download the artifacts:

Code Block

mkdir /tmp/cloudstack; cd /tmp/cloudstack
wget https://dist.apache.org/repos/dist/release/cloudstack/KEYS
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2.asc
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2.md5
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2.sha

Replace VERSION with the version you are testing.

Install gpg (if needed): sudo apt-get install gpg

Import keys:  

This can be done by importing the keys stored in the source distribution's KEYS file:  gpg --import KEYS

Alternatively, you could download the signing keys (ID's found in the KEYS file) individually via a keyserver.  Ex:  gpg --recv-keys CC56CEA8

Verify signatures and hash files:

Code Block

gpg --verify apache-cloudstack-*-src.tar.bz2.asc

This command should return "Good Signature".

Code Block
Code Block

gpg --print-md MD5 apache-cloudstack-4.0.0-incubating-src.tar.bz2 | diff - apache-cloudstack-4.0.0-incubating-src.tar.bz2.md5
gpg --print-md MD5 apache-cloudstack-4.0.0-incubating-src.zip | diff - apache-cloudstack-4.0.0-incubating-src.zip.md5
gpg --print-md SHA512MD5 apache-cloudstack-4.0.0-incubating*-src.tar.bz2 | diff - apache-cloudstack-4.0.0-incubating*-src.tar.bz2.shamd5
gpg --print-md SHA512 apache-cloudstack-4.0.0-incubating*-src.tar.zipbz2 | diff - apache-cloudstack-4.0.0-incubating*-src.tar.zipbz2.sha

Each of these commands should return no output. If there is any output from them, then there is a difference between the hash you generated locally and the hash that has been pulled from the server.

...

Code Block
git clone https://git-wip-us.apache.org/repos/asf/incubator-cloudstack.git /tmp/cloudstack/git
cd /tmp/cloudstack/git
git archive --prefix=/tmp/cloudstack/tree/ <commit-hash> | tar Pxf -

...

Code Block
cd /tmp/cloudstack
tar xvfj apache-cloudstack-4.0.0-incubating-cloudstack-*-src.tar.bz2

Compare the contents of the release artifact with the contents pulled from the repo:

Code Block
diff -r /tmp/cloudstack/apache-cloudstack-4.0.0-incubating*-src /tmp/cloudstack/tree

...

Verify the Code's License Headers

Code Block
cd /tmp/cloudstack/apache-cloudstack-4.0.0-incubating*-src
mvn --projects='org.apache.cloudstack:cloudstack' org.apache.rat:apache-rat-plugin:0.8:check

The build should FAIL if there are any non-compliant files that are not specifically excluded from the ASF license header requirement. You can optionally review the target/rat.txt file after the run completes. If the build passes, RAT is saying that we are compliant and this test passes.

...

passes.

Compile

Note: If you're on Ubuntu and using the PPA:natecarlson/maven3 (viz. Installing tools above), you've to use mvn3 instead of mvn, so mvn3 -P deps

Code Block
mvn -P deps
ant clean-all build-all

...

  • Access web UI: http://localhost:8080/client
  • Login with admin/password
  • Choose "I have used cloudstack before, skip this guide"
  • Click "Infrastructure", click the "View All" button in the "Zones" display box, click "add zone"
  • Select "basic zone" during the add zone wizard.
  • Type name "test cloud", dns1 "8.8.8.8", internal dns1 "10.0.2.3", hypervisor "Xenserver", select "local storage enabled" (Say Yes if prompted to agree), then click next.
  • Skip "physical network setup" page
  • In "pod" page, type: pod name: 'test pod', reserved system gateway: 10.0.2.2, reserved system mask: 255.255.255.0, start reserved system ip: 10.0.2.200, end reserved system ip: 10.0.2.220
  • In "guest traffic" page, guest gateway: 10.0.2.2, reserved system masknetmask: 255.255.255.0, guest start reserved system ip: 10.0.2.200100, guest end reserved system ip: 10.0.2.220199
  • In "cluster" page, type cluster name: "test cluster"
  • In "guest traffichost " page, guest gatewayhost name: 10.0.2.2, netmask: 255.255.255.0, guest start ip15, user name: root, password: password
  • In "secondary storage" page, server: 10.0.2.10015, guest end ip: 10.0.2.199path: /opt/storage/secondary
  • In "clusterzone creation comple" page, type cluster name: "test cluster"
  • In "host " page, host name: 10.0.2.15, user name: root, password: password
  • In "secondary storage" page, server: 10.0.2.15, path: /opt/storage/secondary
  • In "zone creation comple", select "yes" to enable zone.

Wait for secondary storage VM coming up.

  • select "yes" to enable zone.

Wait for secondary storage VM coming up.

Depending on your local system configuration, and available RAM / Disk IO / Net IO, this step will take varied amounts of time.  It's reasonable to expect 30 minutes (or more), but it could be less.

You can tell if the SSVM has been started by navigating to the Infrastructure page, and clicking on System VMs.  There should be 2 listed, and their status needs to be displayed as "Started"This may take a bit...

Add a new instance

  • In the first step of "Add instance " wizard ,  select template,
  • In step 2, select "tiny Linux"
  • In step 3, select "tinyOffering"
  • In step 4, select "No thanks"
  • Skip step 5 and 6.
  • Launch VM

...