Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mohamedbassem/dtests
A python tool to distributively run GCJ testcases on several machines
https://github.com/mohamedbassem/dtests
Last synced: 5 days ago
JSON representation
A python tool to distributively run GCJ testcases on several machines
- Host: GitHub
- URL: https://github.com/mohamedbassem/dtests
- Owner: MohamedBassem
- License: mit
- Created: 2014-07-30T19:24:02.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2014-07-31T23:04:04.000Z (over 10 years ago)
- Last Synced: 2024-10-12T04:13:05.170Z (about 1 month ago)
- Language: Python
- Size: 234 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.txt
- License: LICENSE.txt
Awesome Lists containing this project
README
## dTests
A python tool to distributively run GCJ/FB hacker cup testcases on several machines.
### How does it work
- First the splitter runs on the input file to split it into seprate test cases.
- Test cases with the actuall code are sent to the server.
- The server distributes the test cases and the actuall code to its registered nodes.
- Each node computes the result for its testcases and sends the result back to the server
- The server collects the results and sort them by their testcase number and sends them back to the calling script.### Installation
``` pip install dTests ```
### Running dTests
- Create new project ```dtests_job new project_name language```
- The only supported languages now are "cpp" and "java".
- Open the new folder and code your splitter to read from the input.in file.
- Between each test cases print ```--split--\n```. The split marker can be configured in ```config.json``` file. This will split the input file into single test cases which will be distributed on the machines running.
- Code your program file to read from stdin as if it is reading a single test cases.
- Run the server ```dtests_server```
- Run one or many nodes on other machines ( or for testing on the same machine ) ```dtests_node --host host --port port```
- Finally run the job ```dtests_job run```
- Check the help of these commands for further customizations.### Sample project
This is a sample cpp project that takes input and multiply it by itself [https://github.com/MohamedBassem/dTests/tree/master/samples/power2](https://github.com/MohamedBassem/dTests/tree/master/samples/power2)
- The config.json file contains the project configuration. The language and the splitter syntax.
- The splitter.cpp file contains the code that reads the input from the ```input.in``` file and splits it to single test cases.
- The program.cpp file that reads a single test cases from stdin and computes the result.
- To Run this project, run the server and at least one node. Then run ```dtests_job run``` in the project's directory.### TODO
- Finding a way to pass the testcase number to the program
- Writing Tests.
- Making the system fault tolerant.
- Finding a better way for splitting the input file.
- Supporting more programming languages.### Contributing
Your contributions ( Ideas, improvments, etc.. ) are more than welcome.### LICENSE
Licensed under the [MIT license](https://github.com/MohamedBassem/dTests/blob/master/LICENSE.txt).