CF Doctor is a cross-platform, no-code CLI for real-time stress testing. It can help you find the smallest possible counter-example for your failing submission, right from the comfort of your terminal.
It does everything that cfstress does and more.
Features
Customizable : It offers the highest level of customization. For example, you can say,
Give me a counter example containing 273 testcases. Also, for each testcase, the array length should be in the range $$$[23, 35]$$$ and each array value should be in the range $$$[57, 63]$$$.
- Fast : It can evaluate your code on $$$10, 000$$$ small test cases within $$$60$$$ seconds to generate a counter example.
- Light Weight : The portable binary is only around $$$12$$$ MB in size.
- Effective : Out of the $$$5000$$$ requests served so far by cfstress.com, my internal analysis shows that it has a success rate of $$$> 90\%$$$.
- Cross Platform : Developing on Windows and can't get that bash script to run? We've got you covered.
- Deterministic : For a fixed set of parameters, the input sequence is fixed. This makes it the equivalent of an online judge that has an infinite stream of fixed system test.
- Real-time: Built on top of gRPC, CF Doctor establishes a persistent connection to the server to stream the progress of stress testing in real time. It's as if the tests where running on your machine, without you devoting the time and resources for the generator. This leads to faster feedback cycles.
Usage
Just download the binary using the instructions above. After that, just run cfdoc help
Note
1) It only supports contests conducted after 28th January, 2022.
2) While in Beta, concurrency support has been disabled. If you experience a large waiting time during peak hours, you can use cfstress.com which is designed to handle multiple requests.
I got this error after running below command
wget https://github.com/variety-jones/cfdoc/releases/download/v1.0.0/cfdoc-linux -O cfdoc
HTTP request sent, awaiting response... 404 Not Found 2022-04-16 23:44:40 ERROR 404: Not Found.
Sorry, fixed now.
I have some questions.
Is it possible to do anything without specifying a problem index and a contest index? It seems unnecessary to require all that if the input is simple enough.
Can we count on you to actually add generators to every future problem that will appear on Codeforces?
Can it generate a connected graph with no multiple edges?
No, it is not possible to do anything without specifying the contest ID and problem index. This tool is not meant to generate testcases for any problem, it's just a gateway to invoke the already present generator on the server.
Of course not. However, I personally plan to add generators for at least a month from now (I've already added almost all problems from the past 2.5 months). I've created utility functions, macros and scripts that allow me to write the generators quickly. (Usually, it's 30 minutes of effort for a 6 problem contest, can go up to 45 minutes). My main motivation in doing this is to make sure everything works, before making the generator repo open-source. After that, I'm hoping other people might contribute to it. If not, I'll shut down the project. But before doing that, I'll make sure to upload all the code, generators and docker images online, so that anyone can host the server locally and run the tests for problems whose generators are already added.
Yes, it can. No matter how complex the input structure, the tool guarantees that it'd produce a valid testcase (for example trees, balanced parenthesis, graph, etc). You just need to customize the parameters exposed by the generator.
I'm getting the following error after I hit the command 'cfdoc stress --cid 1779 --pid c --sid 202609142' : rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 43.204.26.159:50051: connectex: No connection could be made because the target machine actively refused it."
Thanks for your awesome work, I'm very interested in this and curious about its principles. Does it use a generator to continuously generate random data and test, or using some technique similar to Fuzz Testing?
This is a video by Errichto teaching how to make your own custom cf stress tester. You can watch the video by clicking here.
orz
.