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 PMC 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 the release.

Test with source code release

...

Setup Pre-requisites on an Ubuntu 12.04 or Mint 13 machine

Code Block

sudo aptitude install openjdk-6-jdk ant
sudo apt-getaptitude update
sudo apt-getaptitude install python-software-properties
sudo add-apt-repository ppa:natecarlson/maven3
sudo aptitude update
sudo aptitude install maven3

Install 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 /usr/share/ant/lib/

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

Code Block

sudo easy_install boto

Setup Pre-requisites on OSX

...

Unpack the archive, and run:

Code Block

sudo cp lib/ant-jsch.jar /usr/share/ant/lib

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

Code Block

sudo easy_install boto

Test the Build

Clean up your environment

Code Block

rm -Rf /tmp/cloudstack
rm -Rf ~/.m2

...

Download the artifacts:

Code Block

mkdir /tmp/cloudstack; cd /tmp/cloudstack
wget --no-check-certificate https://dist.apache.org/repos/dist/release/cloudstack/KEYS
wget --no-check-certificate https://dist.apache.org/repos/dist/dev/cloudstack/4.13.0/apache-cloudstack-4.13.0-src.tar.bz2
wget --no-check-certificate https://dist.apache.org/repos/dist/dev/cloudstack/4.13.0/apache-cloudstack-4.13.0-src.tar.bz2.asc
wget --no-check-certificate https://dist.apache.org/repos/dist/dev/cloudstack/4.13.0/apache-cloudstack-4.13.0-src.tar.bz2.md5
wget --no-check-certificate https://dist.apache.org/repos/dist/dev/cloudstack/4.13.0/apache-cloudstack-4.13.0-src.tar.bz2.sha

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

...

Verify signatures and hash files:

Code Block

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

This command should return "Good Signature".

Code Block

gpg --print-md MD5 apache-cloudstack-4.13.0-src.tar.bz2 | diff - apache-cloudstack-4.13.0-src.tar.bz2.md5
gpg --print-md SHA512 apache-cloudstack-4.13.0-src.tar.bz2 | diff - apache-cloudstack-4.13.0-src.tar.bz2.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.

...

Create two new temporary directories:

Code Block

mkdir /tmp/cloudstack/git
mkdir /tmp/cloudstack/tree

Pull down the git repo:

Code Block

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

Unpack the release artifact:

Code Block

cd /tmp/cloudstack
tar xvfj apache-cloudstack-4.13.0-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.13.0-src /tmp/cloudstack/tree

...

Verify the Code's License Headers

Code Block

cd /tmp/cloudstack/apache-cloudstack-4.13.0-src
mvn --projects='org.apache.cloudstack:cloudstack' org.apache.rat:apache-rat-plugin:0.8:check

...

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 developer,systemvm clean install
mvn -P developer -pl developer,tools/devcloud -Ddeploydb
mvn -pl :cloud-client-ui jetty:run

Configure CloudStack management server

Note
Need to set router.version.check to false in the global configuration page, after management server is up to workaround a devcloud issue, and then restart management server.

Once the management server starts on your local machine, execute the following commands to bring up a basic zone using the devcloud2 VM:

Deploy DevCloud (make sure mysql-connector-python is installed and that the management server is running)

Code Block

$ mvn -P developer -pl tools/devcloud -Ddeploysvr

Or, if the above does not work, maybe you're running mvn in debug mode using some MAVEN_OPTS, try marvin:

Code Block

$ cd tools/devcloud; python ../marvin/marvin/deployDataCenter.py -i devcloud.cfg

...

Test other functionality, to suite your tastes (and perhaps using non-DevCloud infrastructure.

Validate AWSAPI interface

In a separate terminal run:

Code Block
mvn -Pawsapi -pl :cloud-awsapi jetty:run

Via the UI:
1. Destroy any running instances
2. Rename the tinyoffering compute offering 'm1.small'

Then using the access key and secret key of your admin user run the following python script:

Code Block
#!/usr/bin/env python

import boto
import boto.ec2

accesskey="2IUSA5xylbsPSnBQFoWXKg3RvjHgsufcKhC1SeiCbeEc0obKwUlwJamB_gFmMJkFHYHTIafpUx0pHcfLvt-dzw"
secretkey="oxV5Dhhk5ufNowey7OVHgWxCBVS4deTl9qL0EqMthfPBuy3ScHPo2fifDxw1aXeL5cyH10hnLOKjyKphcXGeDA"
 
region = boto.ec2.regioninfo.RegionInfo(name="ROOT", endpoint="localhost")
conn = boto.connect_ec2(aws_access_key_id=accesskey, aws_secret_access_key=secretkey, is_secure=False, region=region, port=7080, path="/awsapi", api_version="2012-08-15")

images=conn.get_all_images()
print images

res = images[0].run(instance_type='m1.small',security_groups=['default'])

If the keys have changed, using the above script verbatim won't work. Make sure to update the keys.

End!

If we made it this far, the release has at least been reasonably "smoke tested".