Open jon-chuang opened 1 year ago
We want to implement coverage-guided fuzzing? 😲
@xxchan not sure. The first step is to measure how good our coverage is before determining if we need to improve the fuzz test generation.
The automatic improvement (coverage-guided) part is optional, tuning it manually is also an option @kwannoel
The measurement part is definitely the first step to implement coverage-guided fuzzing, and we can define more useful metrics as we go along, especially if it helps us catch actual bugs in the e2e setting as a result.
A simple thing to do is enable codecov
: https://about.codecov.io/.
We currently already use it in our ci pipeline. We can upload a separate set of reports for sqlsmith codecov (deterministic test).
How do we measure the coverage in general now? We used to have similar discussions and the final conclusion was that the coverage is hard to be calculated if taking e2e tests into account. E2e is not covered by general Rust coverage tools.
How do we measure the coverage in general now? We used to have similar discussions and the final conclusion was that the coverage is hard to be calculated if taking e2e tests into account. E2e is not covered by general Rust coverage tools.
AFAIK, for unit tests we use codecov
for reprots and llvm-cov
via nextest
: https://nexte.st/book/test-coverage.html. E2E test coverage might be possible, if we run tests with all-in-one binary / deterministic-simulation.
I don't think there are currently other things measuring coverage apart from unit test.
E2e is not covered by general Rust coverage tools.
I think we can still get coverage via deterministic test. Secondly, we can use LLVM to instrument the deterministic test all in one binary to get a better coverage.
the final conclusion was that the coverage is hard to be calculated
https://github.com/risingwavelabs/risingwave/issues/32 I didn't find any conclusion. It seems that there are just no follow-ups. 🤪
Shall we close this?
Still needed eventually I think. Can just remove from milestone but leave open to track.
Is your feature request related to a problem? Please describe.
I noticed that the plans generated often evaluate to very idiosyncratic queries. Hence, I am worried about the actual coverage. I believe the coverage for frontend/optimizer side may be ok, but am more worried about the e2e testing (batch and stream part).
As an anecdote, a bunch of errors were caught in the frontend due to const eval but were not caught in the batch/stream executors.
Describe the solution you'd like
I am suggested several ideas to get a better understanding of the e2e coverage:
Describe alternatives you've considered
No response
Additional context
No response