Quality Assurance

Industrial process jocks maintain a subtle difference between the phrases “quality control” (QA) and “quality assurance” (QC). I believe that what syqada does automatically should be called quality assurance, and QC tasks embedded in a workflow should be called quality control. This section discusses the specification and use of syqada’s automatic QA.

The protocol (or task) file can define a QA behavior for the results of a task whose jobs have all completed with successful return codes. The default behavior, output, simply checks that every job wrote a file into the batchroot’s output directory. Others perform more rigorous tests. The exec behavior requires an installation that admits it is OK with people running arbitrary code. I’m trying to figure out how this could be used for harm rather than good; I guess it would involve an unscrupulous administrator writing a program to harvest user information and planting it in a workflow somewhere. Such an administrator would probably be capable of tampering with the installation as well, so let’s think about whether this persnicketiness is worthwhile.

Below are listed the possible standard QA options. More than one of these can be run by joining them with ampersand, e.g.:

qa = match word character & exec /my/fully/specified/QA_program

If more than one qa is specified, QA will terminate upon the first failure.

QA Options

qa = none
Perform no checks on output
qa = output
Check that every job wrote a file into the batchroot’s output directory
qa = count
Check that every job produced the same number of files in the output directory
qa = non_empty
Check that every job wrote at least a byte to the same number of files in the output directory
qa = match [words | characters | lines] ...
Check that the lexically first output file of each job produced the same number of words, characters, or lines (or combinations of more than one of those)
qa = exec QA_program
Run QA_program with each job’s lexically first output file as input and expect 0 return code from the output of all jobs

Command Line Usage

To override QA, the option –noQA may be given on the command line. Performing additional QA over what is specified in the protocol can be accomplished on a completed step using syqada manage:

syqada manage batch-directory --qa match=lines