我是autosys的新手。。有谁知道如何对特定工作进行正面和负面测试
2 回答
不确定你想测试什么。首先获取要在 Autosys 之外运行的命令或脚本。作为其中的一部分,测试命令或脚本错误处理。Autosys 会将来自 aa 命令的任何零退出代码报告为成功,因此请确保您的脚本在任何退出错误时发出非零退出代码。然后,您可以使用虚拟命令或脚本(如 sleep 命令)测试 autosys 作业是否按计划运行。然后您可以使用实时命令或脚本进行测试。
要测试一个特定的作业,一个肯定的测试是如果你强制启动该作业,它运行成功并且由 autosys 运行的命令生成的日志表明该命令是成功的。对命令作业进行否定测试将取决于正在运行的命令或脚本。更改作业之外的某些内容以使命令或脚本失败。
Autosys 似乎受到了极大的限制。您可以在 JOB2 中创建一个取决于 JOB1 成功的条件,例如 SUCCESS(JOB1)。但似乎不支持与成功相反的条件。Autosys 提供了一个 RUNNING 和一个 NOTRUNNING 条件,但由于某种原因,它们不幸地省略了包含 NOTSUCCESS。
到目前为止,我想出的最佳解决方法是使用以下 JIL 配置:
insert_job: 0AM-7AM_BOX
job_type: b
start_times: "00:00"
description: "Succeeds if JOB1 succeeds, TERMINATED if JOB1 does not succeed"
term_run_time: 419
insert_job: CHECK_THE_CONDITION
job_type: c
box_name: 0AM-7AM_BOX
command: date
condition: success(JOB1)
description: "Succeeds if JOB1 succeeds"
insert_job: ACT_ON_THE_CONDITION
job_type: c
command: [put the command you want to execute here]
condition: SUCCESS(CHECK_THE_CONDITION)
description: "Run the run between midnight and 7am if the condition is true"
因此,如果 JOB1 在午夜和早上 7 点之间进入状态“SUCCESS”,那么 ACT_ON_THE_CONDITION 将立即运行。由于该命令只是对“date”的虚拟调用,因此它应该立即运行并变为“SUCCESS”,因此 0AM-7AM_BOX 框也将变为“SUCCESS”。
另一种可能性是 JOB3 在早上 7 点之前没有进入状态“SUCCESS”。在这种情况下,“term_run_time”设置将导致盒子进入“TERMINATED”状态。
加起来,
- 如果 JOB1 成功,0AM-7AM_BOX -> SUCCESS
- 如果 JOB1 是除了 SUCCESS 之外的任何东西,0AM-7AM_BOX -> TERMINATED
这很有用,因为您随后可以设置测试成功条件或终止条件的相关作业(因为 TERMINATED 是您可以放入条件的有效测试)。