5 Release testing script is located in *tools* repository, in scripts/release-testing directory.
9 Script is located in scripts/release-testing/upgrader.sh It's written in bash and offers following functions:
11 * *upgrader.sh cleanup-files* - removes CiviCRM installation files
12 * *upgrader.sh cleanup-dbs* - makes sure that CiviCRM database is empty and Drupal database is in pristine state
13 * *upgrader.sh install /path/to/tarball* - installs CiviCRM files from provided tarball and runs install webtest
14 * *upgrader.sh upgrade /path/to/tarball* - puts CiviCRM files from provided tarball in place of currently existing install and runs upgrade webtest
15 * *upgrader.sh dumpschema-cividb /path/to/dumpfile.mysql* - dumps CiviCRM schema into given file
16 * *upgrader.sh run-checks* - verifies if all the params are set correctly
17 * *upgrader.sh run-tests* - TBD
19 Before you can use the script, you need to set following variables inside:
20 * CIVIDBNAME - name of CiviCRM database
21 * CIVIDBUSER - username to access CiviCRM database
22 * CIVIDBPASS - password to access CiviCRM database
23 * DRUPALDBNAME - name of Drupal database
24 * DRUPALDBUSER - username to access Drupal database
25 * DRUPALDBPASS - password to access Drupal database
26 * DRUPALPRISTINEDBFILE - path to mysql dump of pristine Drupal database
27 * DRUPALDIR - a path to Drupal root directory
28 * MODULESDIR - a path to Drupal modules directory
29 * CIVICRMDIR - a path where CiviCRM is expected to be
30 * DRUPALURL - URL of Drupal installation used for upgrade testing
31 * CIVICRMURL - URL of CiviCRM installation used for upgrade testing
32 * PHPUNITSCRIPTDIR - path from which WebTests (using PHPunit) will be run
33 * PHPUNITCOMMAND - name of the script used to run WebTests
36 h2. Example release testing scenarios
38 h3. Simple release tests
40 Simple release test is located in scripts/release-testing/simpleupgradetest.sh
43 ./upgrader.sh run-checks
44 ./upgrader.sh cleanup-dbs
45 ./upgrader.sh cleanup-files
46 ./upgrader.sh install 3.3.0-tarball
47 ./upgrader.sh upgrade 3.4.1-tarball
50 Step by step description:
51 * good idea to run-checks at the beginning to make sure all the stuff is set up correctly
52 * first two lines: cleans up databases for upgrade testing installation and removes CiviCRM files (in case they weren't cleaned up from previous runs) for upgrade testing installation
53 * installs start version (3.3.0 in above case) -
54 * upgrades 3.3.0 to 3.4.1
57 h3. Upgraded database schema verification
59 Upgraded database schema verification test is located in scripts/release-testing/simpleupgradetest.sh
62 ./upgrader.sh run-checks
63 ./upgrader.sh cleanup-dbs
64 ./upgrader.sh cleanup-files
66 ./upgrader.sh install 3.4.1-tarball
67 ./upgrader.sh dumpschema-cividb 3.4.1-clean.mysql
69 ./upgrader.sh cleanup-dbs
70 ./upgrader.sh cleanup-files
72 ./upgrader.sh install 3.3.0-tarball
73 ./upgrader.sh upgrade 3.4.1-tarball
74 ./upgrader.sh dumpschema-cividb 3.4.1-upgraded.mysql
76 diff 3.4.1-clean.mysql 3.4.1-upgraded.mysql
79 Step by step description:
80 * good idea to run-checks at the beginning to make sure all the stuff is set up correctly
81 * first two lines: cleans up databases for upgrade testing installation and removes CiviCRM files (in case they weren't cleaned up from previous runs) for upgrade testing installation
82 * installs start version (3.4.1 in above case)
83 * dumps database schema for clean 3.4.1 install
86 * upgrades 3.3.0 to 3.4.1
87 * dumps database schema for upgraded 3.4.1 install
88 * produces a diff between dumps to verify if core upgrade code takes all the necessary schema changes into consideration
90 h2. Assembling other release testing scenario
98 # START: Configuration
109 DRUPALPRISTINEDBFILE
=
112 MODULESDIR
=$DRUPALDIR"/sites/all/modules"
113 SETTINGSDIR
=$DRUPALDIR"/sites/all"
114 CIVICRMDIR
=$MODULESDIR"/civicrm"
115 DRUPALURL
="http://url.url"
116 CIVICRMURL
=$DRUPALURL"/civicrm/dashboard"
120 PHPUNITCOMMAND
="scripts/phpunit"
126 # DO NOT EDIT BELOW THIS LINE
128 # START: Command line params verification
132 PU_INSTALLTEST
="WebTest_Release_InstallScript"
133 PU_UPGRADETEST
="WebTest_Release_UpgradeScript"
134 PU_SUITE
="WebTest_AllTests"
138 USAGE
="Usage: upgrader.sh ACTION [/path/to/file]"
139 SELF
=$
(cd $
(dirname $0); pwd -P)/$
(basename $0)
143 if [ -z $ACTION ] ; then
148 if [ $ACTION == "install" ] && [ -z $FILENAME ] ; then
150 echo "(Tarball parameter required for install)"
154 if [ $ACTION == "upgrade" ] && [ -z $FILENAME ] ; then
156 echo "(Tarball parameter required for upgrade)"
160 if [ $ACTION == "dumpschema-cividb" ] && [ -z $FILENAME ] ; then
162 echo "(Filename parameter required for dumpschema-cividb)"
168 # END: Command line params verification
170 # START: Utility functions
175 echo "*** Upgrader (action: $ACTION): $1 "
179 upgecho
"## ERROR: $1 "
182 function run-checks
{
187 if [ $SILENT -eq 1 ] ; then
188 upgecho
"Starting checks..."
191 if [ $ACTION == "install" ] && [ ! -r $FILENAME ] ; then
192 errecho
"Tarball: \""$FILENAME"\" doesn't exist or is not readable."
196 if [ $ACTION == "upgrade" ] && [ ! -r $FILENAME ] ; then
197 errecho
"Tarball: \""$FILENAME"\" doesn't exist or is not readable."
201 if [ ! -r $DRUPALPRISTINEDBFILE ] ; then
202 errecho
"Drupal pristine database file: \""$DRUPALPRISTINEDBFILE"\" doesn't exist or is not readable."
206 if [ ! -w $DRUPALDIR ] ; then
207 errecho
"Drupal directory (value: $DRUPALDIR) does not exist or not writable."
211 if [ ! -w $MODULESDIR ] ; then
212 errecho
"Drupal modules directory (value: $MODULESDIR) does not exist or not writable."
217 if [ -d $CIVICRMDIR ] ; then
218 upgecho
"CiviCRM directory (value: $CIVICRMDIR) already exists, but maybe it's not a problem."
221 if [ $CHECKS -eq 1 ] ; then
222 errecho
"Quitting due to errors: see messages above."
228 if [ $SILENT -eq 1 ] ; then
230 upgecho
"Action: $ACTION"
231 upgecho
"Tarball: $FILENAME"
232 upgecho
"Script path: $SELF"
233 upgecho
"Drupal location: $DRUPALDIR"
234 upgecho
"CiviCRM will be installed to: $CIVICRMDIR"
235 upgecho
"CiviCRM Database credentials: u: $CIVIDBUSER, p: $CIVIDBPASS, n: $CIVIDBNAME"
236 upgecho
"Drupal Database credentials: u: $DRUPALDBUSER, p: $DRUPALDBPASS, n: $DRUPALDBNAME"
238 upgecho
"Done with checks, everything seems fine."
246 # END: Utility functions
248 # START: Webtest related functions
252 function run-upgrade-scenario
{
253 upgecho
"Running upgrade scenario tests."
254 echo "*** Take it away, Sebastian! "
257 $PHPUNITCOMMAND $PU_UPGRADETEST
261 function run-install-scenario
{
262 upgecho
"Running install scenario tests."
263 echo "*** Take it away, Sebastian! "
266 $PHPUNITCOMMAND $PU_INSTALLTEST
271 upgecho
"Running post upgrade tests."
272 echo "*** Take it away, Sebastian! "
275 $PHPUNITCOMMAND $PU_SUITE
281 # END: Webtest related functions
283 # START: Core functionality
287 function remove-files
{
288 upgecho
"Cleaning up files. ($CIVICRMDIR is gone!)"
292 function remove-settings
{
293 upgecho
"Removing civicrm.settings.php. ($SETTINGSDIR/civicrm.settings.php is gone!)"
294 rm -rf $SETTINGSDIR"/civicrm.settings.php"
297 function cleanup-cividb
{
298 upgecho
"Cleaning up CiviCRM db (dropped and created)."
299 mysqladmin
-f -u $CIVIDBUSER -p$CIVIDBPASS drop
$CIVIDBNAME >> /dev
/null
2>&1
300 mysqladmin
-f -u $CIVIDBUSER -p$CIVIDBPASS create
$CIVIDBNAME >> /dev
/null
2>&1
303 function cleanup-drupdb
{
304 upgecho
"Cleaning up Drupal db (pristine copy loaded)."
305 mysqladmin
-f -u $DRUPALDBUSER -p$DRUPALDBPASS drop
$DRUPALDBNAME >> /dev
/null
2>&1
306 mysqladmin
-f -u $DRUPALDBUSER -p$DRUPALDBPASS create
$DRUPALDBNAME >> /dev
/null
2>&1
307 mysql
-u $DRUPALDBUSER -p$DRUPALDBPASS $DRUPALDBNAME < $DRUPALPRISTINEDBFILE
310 function dump-schema
{
311 mysqldump
--no-data -u $CIVIDBUSER -p$CIVIDBPASS $CIVIDBNAME > $1
314 function install-files
{
315 upgecho
"Installing files from $FILENAME."
317 tar xzvf
$1 >> /dev
/null
2>&1
322 # END: Core functionality
348 install-files
$FILENAME
355 install-files
$FILENAME
361 dump-schema
$FILENAME