test/fuzz: add fuzzing supervisor
Summary
- test/fuzz: batch fuzzing in ci stub
- test/fuzz: add fuzzing supervisor
Supervisor should track the output of the fuzzer and stop it if the stopping criteria are satisfied. For simplicity for now we don't calculate the coverage percentage of the whole code base, criteria that we can cover without doing this are selected in bold. The criteria are the following :
Критерии остановки (выполняется все):
- a Первый критерий (одно из):
- i Для фаззеров, подсчитывающих число найденных уникальных путей (одно из):
- 1 Покрытие не менее 25% по строкам/базовым блокам;
- 2 Число уникальных путей, найденных фаззером, не менее чем в 2 раза больше число образцов входных данных.
- ii Для фаззеров, подсчитывающих достигнутое покрытие (одно из):
- 1 Достигнутое покрытие в процентном соотношении не менее чем в 2 раза больше покрытия, достигаемое в результате подачи на вход фаззера стартовых образцов.
- 2 Достигнуто не менее 25% по строкам/базовым блокам.
- iii Достижение покрытия по строкам кода не менее 80% или 70% по базовым блокам.
- i Для фаззеров, подсчитывающих число найденных уникальных путей (одно из):
- b Второй критерий (выполняется все):
- i Не менее 100000 фаззинг-тестов.
- ii В течение не менее двух часов фаззер не находит новой трассы или отсутствует прирост покрытия.
- Close picodata/picodata/picodata#535
- Docs follow-up: not necessary
Edited by Егор Ивков