PlateMaker autamated testing

Introduction to PlateMaker testing

PlateMaker includes both tests written with unittest and doctest. The ${PLATEMAKER_DIR}/test/test.py script constructs and runs a test suite combining tests in each, as specified by a configuration file. An example configuration file can be found in ${PLATEMAKER_DIR}/test/test.config.

There are three sections in the test configuration file. The [unittest] section lists python modules in ${PLATEMAKER_DIR}/test/unittest from which tests are to be run. For example, these settings:

[unittest]
TestPlateMakerApp = False
TestDervishPlateMaker = True
TestDataConversions = False

specify that tests in ${PLATEMAKER_DIR}/test/unittest/TestDervishPlateMaker.py be run, but those in other scripts in the unittest dircectory be skipped.

The [modules] section lists python modules from which to run tests using the doctest module. For example, this line:

PlateMaker.fvc = True

specifies that examples in help strings in ${PLATEMAKER_DIR}/python/PlateMaker/gvc.py be run.

Finally, the [docs] section specifies testing documents in ${PLATEMAKER_DIR}/test/doctests which should be run.

Testing without DOS elements

To test without the DOS elements, begin by setting all elements in the test.config file that use DOS to False, then run the tests using the -n switch:

bash$ setup PlateMaker
bash$ cd $PLATEMAKER_DIR/test
bash$ python test.py -n test.config

Testing with faked dervish elements

To test with the DOS elements but without dervish ones, begin by setting all elements in the test.config file that use dervish to False.

Then, start a DOS instance using the “fake” PlateMaker:

bash$ setup PML
bash$ setup PlateMaker
bash$ architect -i PlateMakerTest -c $PLATEMAKER_DIR/etc/fake_platemaker.ini

Then actually run the tests:

bash$ cd $PLATEMAKER_DIR/test
bash$ python test.py test.config

Full tests

Begin by starting DOS:

bash$ setup PML
bash$ setup PlateMaker
bash$ architect -i PlateMakerTest -c $PLATEMAKER_DIR/etc/platemaker.ini

Prepare a bash session with environment variable pointing at the running DOS test instance:

bash$ setup PML
bash$ setup PlateMaker
bash$ source ${DOS_HOME}/instances/PlateMakerTest/scripts/dos_env.csh

Then actually run the tests:

bash$ cd $PLATEMAKER_DIR/test
bash$ python test.py test.config

Direct interaction from the DOS console

From the DOS console, connect to dervish using

select DERVISH

and to PlateMaker with:

select PLATEMAKER

Commands can then be issued like

set seqid=16180
get data_dir