# Daily Test Explained

## Requirements for a Daily Test Host

- Kerberos and AFS support
- Remote command execution (rsh or ssh) with Kerberos authentication support
- make that support srcdir compiling (highly desirable)
- diff that supports –I option (highly desirable for launching host)
- cvs command support (desirable)

## Directories/Files Used

$HOME/snapshots-XXX is where daily tests occur.

- $HOME/snapshots-hdf5 for hdf5 main trunk version (currently v1.5).
- $HOME/snapshots-hdf5_1_4 for hdf5 version 1.4.
- $HOME/snapshots-hdf4 for hdf4 main trunk version (currenly post 4.1r5).

## Inside snapshots-XXX Directory

· current/ latest version

· previous/ last released version

· log/ log files of most recent tests

· log/OLD/ previous log files

· TestDir/<host>/ build and test area of machine <host> supporting srcdir build

· allhostfile holds all test host names

· snaptest.cfg holds various test configurations

· release_always always make snapshot release tarball if all tests pass (implemented for hdf4 daily tests only)

· release_asap make one snapshot release tarball if all tests pass (file is renamed after release)

· release_not do not make snapshot release tarball even if all tests pass

## Steps

This shows steps of the daily tests for HDF5 development version (currenly v1.5). The HDF5 v1.4 and HDF4 are similar. snapshots-XXX here means $HOME/snapshots-hdf5/.

1. “hdfadmin” starts a cron job after midnight in eirene.
2. Cron job acquires kerberos credential and AFS tokens.
3. Execute $HOME/.crondir/DailyMaint to start daily maintenance

· CVS updates some documents on websites

· CVS updates $HOME/HDF5/v_1_5/hdf5/ (the bin/runtest in it is ready to be used in next step)

4. Execute $HOME/.bin-sys/DailyHDF5Test

· Clean up snapshots-XXX/log area

a. Purge older files from OLD/

b. Moves log files from yesterday to OLD/

· cd $HOME/HDF5/v_1_5/hdf5

· Launch “bin/runtest –all” from eirene

5. bin/runtest –all

· CVS updates $HOME/snapshots-XXX/current (the commands in bin/ are now ready be used in the following steps).

· Executes snapshots-XXX/current/bin/chkmanifest for MANIFEST file.

· Diff current/ and previous/ versions. If no significant differences found, no need to run daily test per hosts. Will not make snapshot release tarball either.

· If significant differences found, prepare to run the daily tests for all hosts.

· Reads allhostfile for test hosts. For each host:

a. use ping then rsh/ssh to make sure the host is on line and responding

b. if srcdir is support, fork off the following command for all hosts and wait for them to finish. Otherwise, launch one at a time.

c. rsh host “cd $HOME/snapshots-XXX/hdf5; bin/runtest” >& #<host>

6. bin/runtest (one each in multiple hosts)

· Since “-all” is not used, it is for launching the test for this host only.

· Reads snapshots-XXX/snaptest.cfg and looks for configuration entries that are for this host.

· For each configuration, runs snapshots-XXX/bin/snapshot with the configuration.

· Configure, build and test results are stored in log/<host>_YYMMDD_HHMM (e.g., arabica_021024_0019)

7. Back to “bin/runtest –all” in eirene

· Gather all those #<host> files and other summary report into one daily report (e.g., DailyHDF5Tests-eirene_021024)

· Checks the tail of log/<host>_YYMMDD_HHMM to make sure it does complete properly.

8. Back to “.bin-sys/DailyHDF5Test”

· Do a snapshot release if
test-succeeded &&
release-not-is-not-present &&
( today-is-saturday || release-asap-is-requested )

· HDF4 does not know how to create a release tarball. Its release process only renames current/ as previous/ to reduce future test time. It also supports an option of release-always which tells daily test to make a release whenever all tests pass. The release-asap only make the release once and the file is renamed, blocking any future ASAP release until someone turns it on again.

9. Compose a report and email “hdf5-cvs”

## Acknowledgement

Robb Matzke first setup the snapshot directory structure and created pretty complete version of commands snaptest, release and h5ver. The initial version is for testing in one host with the default configuration. I just added more whistles and bells. Jim Barlow helped me how to authenticate a cron task with keytab.

----

First created by Albert Cheng, October 24, 2002.

Revised October 28, 2002.