これは、スクリプトを作成するのが非常に簡単なものであることに同意します。バイナリがどのように構成されているか、およびプログラムが互いにどのように異なるかに応じて、テスト スクリプトを SVN リポジトリの一部として含めることもできます。
バッチ システムを使用しているため、テストのスケジュールにはある程度の自由があります。セットアップ パラメータを提供できる一般的な「検証」ジョブが必要な場合があります (たとえば、期待されるプログラム出力と実際のプログラム出力出力の場所)。 Nickgrep
は、ジョブ IDの出力を確認するためにを使用すると述べqstat
ましたが、別のジョブが完了するまでジョブを保留するように PBS に指示できます。これは、次のようなものがあることを意味します。
...
#PBS -N run_test_1
#PBS -a 200906270000
...
<compile test>
<run test>
<save output>
送信されたら、によって返されたジョブ ID を保存しqsub
ます (これを行う方法はプラットフォームによって異なります。通常は次のようなものjob_id=$(qsub $JOB_FILE)
で十分です)。次に、その値を別のスクリプトに組み込みます。
...
#PBS -N verify_test_1
#PBS -W depend=afterany:$job_id
<run comparison>
...
これにより、(適切な値job_id
が挿入された場合) 2009 年 6 月 27 日の午前 0 時までテスト実行の実行が保留され、テスト ジョブが完了するまで検証ジョブの実行が保留されます (afterany
ディレクティブでは、最初の仕事 - 成功した場合だけではありません)。
ただし、クラスターのターンアラウンド タイムによっては、これらすべてを 1 つのスクリプトに入れることもできますが、PBS の時間ベースのホールドを使用して特定の時間にのみ実行することもできます。私は最近、シェル スクリプトの代わりに Python を使用して、このシステム関連のジョブを処理するようになりました。昨日、Python スクリプトを実行可能にして、PBS ディレクティブをソースに直接追加することをテストしました。非常にうまく機能しているように見えました。