Skip to content

Commit 5643a05

Browse files
authored
Reduce GC during fuzz tests (#283)
Reduce GC by reducing the size of EC chain generated by the fuzz tests. The size of EC chain makes no difference to the coverage. In one case reduce the honest count from 5 to 4 in order to avoid intermittent failures due to fuzz tests taking too long.
1 parent 668940a commit 5643a05

7 files changed

+24
-24
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ test/cover: GOTEST_ARGS=-coverprofile=coverage.txt -covermode=atomic -coverpkg=.
1313
.PHONY: test/cover
1414

1515
fuzz: FUZZTIME ?= 10s # The duration to run fuzz testing, default to 10s if unset.
16-
fuzz: GOGC ?= 400 # Reduce GC frequency during testing, default to 200 if unset.
16+
fuzz: GOGC ?= 400 # Reduce GC frequency during testing, default to 400 if unset.
1717
fuzz: # List all fuzz tests across the repo, and run them one at a time with the configured fuzztime.
1818
@set -e; \
1919
go list ./... | while read -r package; do \

test/absent_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func FuzzAbsentAdversary(f *testing.F) {
2121
// Total network size of 3 + 1, where the adversary has 1/4 of power.
2222
sim.AddHonestParticipants(
2323
3,
24-
sim.NewUniformECChainGenerator(tipSetGeneratorSeed, 1, 10),
24+
sim.NewUniformECChainGenerator(tipSetGeneratorSeed, 1, 5),
2525
uniformOneStoragePower),
2626
sim.WithAdversary(adversary.NewAbsentGenerator(oneStoragePower)),
2727
)...)

test/decide_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func FuzzImmediateDecideAdversary(f *testing.F) {
2727
asyncOptions(rng.Int(),
2828
sim.AddHonestParticipants(
2929
1,
30-
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 10),
30+
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 5),
3131
uniformOneStoragePower),
3232
sim.WithBaseChain(&baseChain),
3333
// Add the adversary to the simulation with 3/4 of total power.

test/honest_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -216,19 +216,19 @@ func FuzzHonest_SyncMajorityCommonPrefix(f *testing.F) {
216216
f.Fuzz(func(t *testing.T, seed int) {
217217
t.Parallel()
218218
rng := rand.New(rand.NewSource(int64(seed)))
219-
majorityCommonPrefixGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 10, 20)
219+
majorityCommonPrefixGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 1, 5)
220220
sm, err := sim.NewSimulation(append(syncOptions(),
221221
sim.AddHonestParticipants(20, sim.NewAppendingECChainGenerator(
222222
majorityCommonPrefixGenerator,
223-
sim.NewRandomECChainGenerator(rng.Uint64(), 1, 8),
223+
sim.NewRandomECChainGenerator(rng.Uint64(), 1, 3),
224224
), uniformOneStoragePower),
225225
sim.AddHonestParticipants(5, sim.NewAppendingECChainGenerator(
226-
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 20),
227-
sim.NewRandomECChainGenerator(rng.Uint64(), 5, 8),
226+
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 4),
227+
sim.NewRandomECChainGenerator(rng.Uint64(), 2, 4),
228228
), uniformOneStoragePower),
229229
sim.AddHonestParticipants(1, sim.NewAppendingECChainGenerator(
230-
sim.NewUniformECChainGenerator(rng.Uint64(), 10, 20),
231-
sim.NewRandomECChainGenerator(rng.Uint64(), 2, 8),
230+
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 5),
231+
sim.NewRandomECChainGenerator(rng.Uint64(), 1, 3),
232232
), uniformOneStoragePower),
233233
)...)
234234
require.NoError(t, err)
@@ -258,19 +258,19 @@ func FuzzHonest_AsyncMajorityCommonPrefix(f *testing.F) {
258258
f.Fuzz(func(t *testing.T, seed int) {
259259
t.Parallel()
260260
rng := rand.New(rand.NewSource(int64(seed)))
261-
majorityCommonPrefixGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 10, 20)
261+
majorityCommonPrefixGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 1, 3)
262262
sm, err := sim.NewSimulation(append(asyncOptions(rng.Int()),
263263
sim.AddHonestParticipants(20, sim.NewAppendingECChainGenerator(
264264
majorityCommonPrefixGenerator,
265-
sim.NewRandomECChainGenerator(rng.Uint64(), 1, 8),
265+
sim.NewRandomECChainGenerator(rng.Uint64(), 1, 4),
266266
), uniformOneStoragePower),
267267
sim.AddHonestParticipants(5, sim.NewAppendingECChainGenerator(
268-
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 20),
269-
sim.NewRandomECChainGenerator(rng.Uint64(), 5, 8),
268+
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 4),
269+
sim.NewRandomECChainGenerator(rng.Uint64(), 2, 3),
270270
), uniformOneStoragePower),
271271
sim.AddHonestParticipants(1, sim.NewAppendingECChainGenerator(
272-
sim.NewUniformECChainGenerator(rng.Uint64(), 10, 20),
273-
sim.NewRandomECChainGenerator(rng.Uint64(), 2, 8),
272+
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 3),
273+
sim.NewRandomECChainGenerator(rng.Uint64(), 2, 3),
274274
), uniformOneStoragePower),
275275
)...)
276276
require.NoError(t, err)

test/multi_instance_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ func FuzzHonestMultiInstance_AsyncDisagreement(f *testing.F) {
6363
baseChain := generateECChain(t, tsg)
6464
sm, err := sim.NewSimulation(asyncOptions(seed,
6565
sim.WithBaseChain(&baseChain),
66-
sim.AddHonestParticipants(honestCount/2, sim.NewUniformECChainGenerator(rand.Uint64(), 4, 10), uniformOneStoragePower),
67-
sim.AddHonestParticipants(honestCount/2, sim.NewUniformECChainGenerator(rand.Uint64(), 1, 5), uniformOneStoragePower),
66+
sim.AddHonestParticipants(honestCount/2, sim.NewUniformECChainGenerator(rand.Uint64(), 1, 3), uniformOneStoragePower),
67+
sim.AddHonestParticipants(honestCount/2, sim.NewUniformECChainGenerator(rand.Uint64(), 2, 4), uniformOneStoragePower),
6868
)...)
6969
require.NoError(t, err)
7070
require.NoErrorf(t, sm.Run(instanceCount, maxRounds), "%s", sm.Describe())
@@ -76,7 +76,7 @@ func FuzzHonestMultiInstance_AsyncDisagreement(f *testing.F) {
7676
func FuzzHonestMultiInstance_SyncAgreement(f *testing.F) {
7777
const (
7878
instanceCount = 4000
79-
honestCount = 5
79+
honestCount = 4
8080
)
8181
f.Add(-47)
8282
f.Fuzz(func(t *testing.T, seed int) {
@@ -86,7 +86,7 @@ func FuzzHonestMultiInstance_SyncAgreement(f *testing.F) {
8686

8787
func FuzzHonestMultiInstance_AsyncAgreement(f *testing.F) {
8888
const (
89-
instanceCount = 5000
89+
instanceCount = 4000
9090
honestCount = 4
9191
)
9292
f.Add(-7)

test/power_evolution_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ func storagePowerIncreaseMidSimulationTest(t *testing.T, seed int, instanceCount
5353

5454
tsg := sim.NewTipSetGenerator(tipSetGeneratorSeed)
5555
baseChain := generateECChain(t, tsg)
56-
groupOneEcGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 5, 10)
57-
groupTwoEcGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 5, 10)
56+
groupOneEcGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 1, 4)
57+
groupTwoEcGenerator := sim.NewUniformECChainGenerator(rng.Uint64(), 1, 4)
5858
sm, err := sim.NewSimulation(
5959
append(o,
6060
sim.WithBaseChain(&baseChain),
@@ -115,7 +115,7 @@ func FuzzStoragePower_AsyncDecreaseRevertsToBase(f *testing.F) {
115115
f.Add(-44)
116116
f.Add(11151)
117117
f.Fuzz(func(t *testing.T, seed int) {
118-
storagePowerDecreaseRevertsToBaseTest(t, seed, 100, maxRounds, asyncOptions(seed)...)
118+
storagePowerDecreaseRevertsToBaseTest(t, seed, 100, maxRounds*2, asyncOptions(seed)...)
119119
})
120120
}
121121

@@ -138,7 +138,7 @@ func storagePowerDecreaseRevertsToBaseTest(t *testing.T, seed int, instanceCount
138138
// decreasing by 1 per instance per participant.
139139
sim.AddHonestParticipants(
140140
10,
141-
sim.NewUniformECChainGenerator(rng.Uint64(), 5, 10),
141+
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 5),
142142
func(instance uint64, id gpbft.ActorID) *gpbft.StoragePower {
143143
// Decrease storage power of each participant by 1 per instance.
144144
// The plus one is there to avoid zero powered actors as it is an error.

test/repeat_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func FuzzRepeatAdversary(f *testing.F) {
9999
sm, err := sim.NewSimulation(asyncOptions(rng.Int(),
100100
sim.AddHonestParticipants(
101101
hc,
102-
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 10),
102+
sim.NewUniformECChainGenerator(rng.Uint64(), 1, 4),
103103
uniformOneStoragePower),
104104
sim.WithAdversary(adversary.NewRepeatGenerator(oneStoragePower, dist)),
105105
)...)

0 commit comments

Comments
 (0)