我想设置的测试用例在Fortran的二进制文件的SVN存储库中的一些自动测试,按需,或与计划作业。要稍复杂的测试用例将一个计算集群上运行的问题,让每个测试用例需要生成一个脚本PBS。 (Linux环境中)

有很多的网络测试和单元测试解决方案在那里,但我无法找到直接测试二进制文件什么。说,提供输入,并输出与预期的解决方案进行比较。

这是如何把这个走近任何建议?

有帮助吗?

解决方案

我同意这是什么,这将是相当简单的脚本。这取决于如何您的二进制文件配置,以及如何不同的程序彼此,你甚至可以包括测试脚本,您SVN代码库的一部分。

由于在批处理系统的时候,你有安排测试一些自由。您可能希望有一个通用的“验证”工作,你可以到(例如,以预期和实际的程序输出输出的位置)提供的设置参数。 尼克使用grep检查输出提到qstat您的作业ID的,但你能告诉PBS,直到另一个作业完成保存工作。这意味着你有这样的:

...
#PBS -N run_test_1
#PBS -a 200906270000
...
<compile test>
<run test>
<save output>

提交时,节省qsub返回作业ID(你如何做到这一点取决于你的平台上 - 通常是像job_id=$(qsub $JOB_FILE)就足够了)。然后,插该值在另一脚本:

...
#PBS -N verify_test_1
#PBS -W depend=afterany:$job_id
<run comparison>
...

此旨意(当插入job_id的适当值)保持在测试运行的执行,直到午夜于2009年6月27日,和直到测试作业完成保持的验证作业的执行(afterany指令指示它应该总是第一个作业后运行 - 不只是如果成功)

根据您的群集的周转时间,不过,你可以把所有这一切都在一个脚本,但你仍然可以使用PBS时间为基础的持有只在特定时间运行。我已经使用Python,而不是shell脚本来处理即使是这种系统相关工作近期开始 - 我昨天测试使Python脚本可执行文件并添加PBS指令直入源 - 它似乎很好地工作。

其他提示

有可能是一个更好的答案是比较预先包装的,但我相信,Buildbot是足够的配置,只要你能写一个python脚本来运行的二进制文件,它应该为你想要的工作。

http://buildbot.net/

这似乎是简单的输入/输出测试,你可以敲了一个脚本,自己做到这一点...

e.g。

for each program
    compile
    submit to queue
    wait for finish
    check output

在实践中,你可能要提交多个作业队列,但这个想法是一样的。

下面是你如何能做到每一步把我的头顶部的一些想法。

提交

您可以使用模板PBS脚本,使用sed来查找/在提交前更换与程序的输入值intput标记

等待完成

您可以用grep反复的qstat命令的输出为您的作业id,等待它完成

检查输出

检查与预期输出作业的输出文件。你既可以预期的输出保存到一个文件,并使用差异,或具有正则表达式的列表,必须为每个运行匹配

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top