一个python工具,用于在多台计算机上分布式运行gcj/fb hacker cup测试用例。
dTests的Python项目详细描述
一个python工具,用于在多台计算机上分布式运行gcj/fb hacker cup测试用例。
它是如何工作的
- 首先,拆分器在输入文件上运行,将其拆分为seprate测试用例。
- 带有实际代码的测试用例被发送到服务器。
- 服务器将测试用例和实际代码分发给其注册的节点。
- 每个节点计算其测试用例的结果并将结果发送回服务器
- 服务器收集结果并按其测试用例号对其进行排序,然后将其发送回调用脚本。
安装
pip install dTests
运行dtest
创建新项目:
dtests_job new project_name language
现在唯一支持的语言是“cpp”和“java”。
打开新文件夹并对拆分器进行编码,以便从input.in文件中读取。
在每个测试用例之间打印“–split–\n”。分割标记可以在“config.json”文件中配置。这将把输入文件分割成单个测试用例,这些测试用例将分布在运行的机器上。
编写从stdin读取的程序文件的代码,就好像它正在读取单个测试用例一样。
运行服务器
dtests_server
在其他机器上运行一个或多个节点(或在同一台机器上进行测试):
dtests_node --host host --port port
最后运行作业:
dtests_job run
有关进一步的自定义设置,请查看这些命令的帮助信息
示例项目
这是一个示例cpp项目,它接受输入并将其自身相乘https://github.com/MohamedBassem/dTests/tree/master/samples/power2
- config.json文件包含项目配置。语言和拆分器语法。
- splitter.cpp文件包含从“input.in”文件读取输入并将其拆分为单个测试用例的代码。
- 从stdin读取单个测试用例并计算结果的program.cpp文件。
- 要运行此项目,请运行服务器和至少一个节点。然后在项目目录中运行“dtests_job run”。
待办事项
- 找到将测试用例号传递给程序的方法
- 写作测试。
- 使系统容错。
- 找到分割输入文件的更好方法。
- 支持更多编程语言。
有关详细信息,请访问https://github.com/MohamedBassem/dTests
贡献
你的贡献(想法、改进等)非常受欢迎。
许可证
根据MIT license授权。