variety-jones's blog

By variety-jones, 23 months ago, In English

Demo, Download Instructions

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.

  • Vote: I like it
  • +60
  • Vote: I do not like it

»
23 months ago, # |
  Vote: I like it 0 Vote: I do not like it

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.

»
23 months ago, # |
  Vote: I like it +20 Vote: I do not like it

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?

  • »
    »
    23 months ago, # ^ |
      Vote: I like it +25 Vote: I do not like it

    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.

    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.

    Can we count on you to actually add generators to every future problem that will appear on Codeforces?

    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.

    Can it generate a connected graph with no multiple edges?

    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.

»
11 months ago, # |
  Vote: I like it 0 Vote: I do not like it

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."

»
4 months ago, # |
  Vote: I like it 0 Vote: I do not like 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?

  • »
    »
    4 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Hello, this project is no longer active, since a paid version of this site is in use. You can drop me an email if you are interested in knowing the technical details. Of course, I cannot share the exact methodology used, but happy to share some high level ideas on how this works (It's pretty simple, by the way, in case you are wondering).