The DRMAA Version 1 Compliance Test Suite

The DRMAA working group maintains a testsuite, which allows to check existing DRMAA C implementations for compliance with the specification. The original code was donated by Sun Microsystems, and is currently maintained by Peter Tröger.
The testsuite has a version number, which reflects the amount of tests integrated in the suite. A DRMAA implementation should point out (e.g. in a README file) to which version of the test suite it complies. The version number contains of major version, minor version, and patch level. The major version expresses the regarding version of the DRMAA specification. The minor version expresses the amount and semantics of tests performed by the suite. The patch level is increased in case of bug fixes or adjustments of the implementation.
Changes in the patch level of the testsuite do not break compliance of an implementation. For changed minor versions, DRMAA implementors are HIGHLY encouraged to re-run the tests. For changes in the major version, DRMAA implementors MUST re-run all tests.
A DRMAA implementation shall call itself "DRMAA-compliant" ONLY if all tests of the suite are passing.
The test suite is available in source code from our GridForge repository. Build was tested on Linux, Windows, and Mac OS X. There is also a DRMAA Java test suite from the GridWay project.

Test procedure

  • Build the test suite from sources. You should get at least three files: test_drmaa (the testsuite executable), test_exit_helper and test_kill_helper.
  • Start the testsuite with all automated tests:
    ./test_drmaa ALL_AUTOMATED [sleep command] test_exit_helper test_kill_helper [email]
    • [sleep command]
      command must be a program which takes one numerical argument and waits for the according number of seconds. Usually, you can use
      /bin/sleep
      here.
    • [email]
      is a valid email address on your system.
  • Unix example, with log file of the output:
    ./test_drmaa ALL_AUTOMATED /bin/sleep test_exit_helper test_kill_helper root 2>&1 |tee log.txt