From 1be1a06281dccada078a2a51e8b483811af8f596 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 29 Mar 2024 15:02:10 +0100 Subject: all: refactor stats Add ability for each package to create and export own stats. Each stat is self-contained, describes how it should be presented, and there is not need to copy them from one package to another. Stats also keep historical data and allow building graphs over time. --- pkg/fuzzer/fuzzer_test.go | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'pkg/fuzzer/fuzzer_test.go') diff --git a/pkg/fuzzer/fuzzer_test.go b/pkg/fuzzer/fuzzer_test.go index 0f7a0ae58..87068064f 100644 --- a/pkg/fuzzer/fuzzer_test.go +++ b/pkg/fuzzer/fuzzer_test.go @@ -159,15 +159,13 @@ func TestRotate(t *testing.T) { }) fuzzer.Cover.AddMaxSignal(fakeSignal(1000)) - stats := fuzzer.Stats() - assert.Equal(t, 1000, stats.MaxSignal) - assert.Equal(t, 100, stats.Signal) + assert.Equal(t, 1000, len(fuzzer.Cover.maxSignal)) + assert.Equal(t, 100, corpusObj.StatSignal.Val()) // Rotate some of the signal. fuzzer.RotateMaxSignal(200) - stats = fuzzer.Stats() - assert.Equal(t, 800, stats.MaxSignal) - assert.Equal(t, 100, stats.Signal) + assert.Equal(t, 800, len(fuzzer.Cover.maxSignal)) + assert.Equal(t, 100, corpusObj.StatSignal.Val()) plus, minus := fuzzer.Cover.GrabSignalDelta() assert.Equal(t, 0, plus.Len()) @@ -175,9 +173,8 @@ func TestRotate(t *testing.T) { // Rotate the rest. fuzzer.RotateMaxSignal(1000) - stats = fuzzer.Stats() - assert.Equal(t, 100, stats.MaxSignal) - assert.Equal(t, 100, stats.Signal) + assert.Equal(t, 100, len(fuzzer.Cover.maxSignal)) + assert.Equal(t, 100, corpusObj.StatSignal.Val()) plus, minus = fuzzer.Cover.GrabSignalDelta() assert.Equal(t, 0, plus.Len()) assert.Equal(t, 700, minus.Len()) @@ -230,9 +227,9 @@ func (f *testFuzzer) oneMore() bool { defer f.mu.Unlock() f.iter++ if f.iter%100 == 0 { - stat := f.fuzzer.Stats() f.t.Logf(": corpus %d, signal %d, max signal %d, crash types %d, running jobs %d", - f.iter, stat.Progs, stat.Signal, stat.MaxSignal, len(f.crashes), stat.RunningJobs) + f.iter, f.fuzzer.Config.Corpus.StatProgs.Val(), f.fuzzer.Config.Corpus.StatSignal.Val(), + len(f.fuzzer.Cover.maxSignal), len(f.crashes), f.fuzzer.statJobs.Val()) } return f.iter < f.iterLimit && (f.expectedCrashes == nil || len(f.crashes) != len(f.expectedCrashes)) -- cgit mrf-deployment