-
Notifications
You must be signed in to change notification settings - Fork 59
Description
There should be one (or better, more) fixed inputs with known results that get good coverage (e.g. contain a failed split, a quad-root, etc.) for each supported size.
Probably with the input being a serialized sketch and a list of its roots. The test should decode, check the roots, reencode/reserialize and compare the serialized sketch.
There should also be at least one failure to decode case for each size that gets good coverage, several with ones selected to hit each of the main failure conditions.
My current strategy: I have instrumented the code and am running both random and (small) exhaustive tests to collect many examples that have distinct "execution fingerprints" based on the shape of the execution trace. For larger fields there are too many to use all the distinct fingerprints, so I will solve a minimal-cover problem to select a subset. I have data for 2, 3 bit fields, but collection is slow since I'm still burning most of my cpu on iblt data collection.
[This wasn't interesting before we were done with the bitstream, opening this now to track it...]