Skip to content

Add lalpulsar_longtests CI job for long-running CW tests

Karl Wette requested to merge ANU-CGA/lalsuite:lalpulsar_longtests into master

Description

This MR sets up a new CI job, lalpulsar_longtests, for running long (>~ 5 minutes walltime) tests of CW codes in LALPulsar, similar to the existing lalinference_testjob. Indeed, I've factored out some common code into a new .long-test-job template which runs on igwn/lalsuite-dev:el7-testing and installs any RPMs given in needs.

The lalpulsar_longtests job runs as a nightly (scheduled) integration job. It runs at the same time as lalpulsar:rpm, to not extend the overall runtime of the CI pipeline. To do that it compiles LALPulsar from the tarballs, but using the RPMs as prerequisites, to speed up the build.

The long-running tests themselves are under lalpulsar/bin/longtests/. I created a new directory so that all test will run in parallel, maximising the number of CPUs (GitLab runners currently have 4). The reason this directory is under bin/ is to utilise the same test harness as for tests of other CW search codes in bin/. The directory currently has two tests, testHeterodyneSearch_flat_evidence_default.py and testHeterodyneSearch_flat_evidence_walk.py; these are tests of the known pulsar code in HeterodyneSearch/, and in fact call the same script (testHeterodyneSearch_flat_evidence.py) with different arguments. Both tests should run in parallel in ~10 minutes; I reverted some changes from 6b89fd2d and increases the number of trials, so hopefully the tests now return a result that is consistently within tolerance. The overall walltime of lalpulsar_longtests should be ~20 minutes.

The tests under lalpulsasr/bin/longtests/ are only run if the environment variable LONGTESTS is defined, so they won't slow down make check for most developers, but can still be run locally if needed.

Closes #568 (closed)

API Changes and Justification

Backwards Compatible Changes

  • This change does not modify any class/function/struct/type definitions in a public C header file or any Python class/function definitions
  • This change adds new classes/functions/structs/types to a public C header file or Python module

Backwards Incompatible Changes

  • This change modifies an existing class/function/struct/type definition in a public C header file or Python module
  • This change removes an existing class/function/struct/type from a public C header file or Python module

If any of the Backwards Incompatible check boxes are ticked please provide a justification why this change is necessary and why it needs to be done in a backwards incompatible way.

Review Status

cc @david-keitel @matthew-pitkin

Merge request reports