Files
actor/queue_fuzz_test.go
2026-10-20 18:53:09 +08:00

38 lines
1.1 KiB
Go

package actor
import "testing"
func FuzzQueueOperations(f *testing.F) {
seeds := [][]byte{
{},
{2, 3, 4}, // Singleton zero value.
{0, 0, 8, 1, 3, 4, 2, 4, 3, 4}, // Publish reservations out of order.
{2, 2, 2, 2, 3, 4, 2, 4, 2, 4, 4, 3, 4, 4}, // Partial batch, then republish.
{2, 2, 2, 2, 2, 6, 4, 4, 2, 4, 4, 4, 3, 4}, // Publish during reversal.
{0, 2, 2, 3, 4, 4, 1, 3, 4, 2, 3, 4}, // Delayed fixed reservation.
}
for capacity := range byte(5) {
for _, seed := range seeds {
f.Add(capacity, seed)
}
// Give every capacity a seed with repeated complete fixed rounds and
// dynamic overflow, in addition to the partial-consumption seeds above.
var cycles []byte
for range 3 {
count := [...]int{1, 2, 3, 8, 64}[capacity] + 2
for range count {
cycles = append(cycles, 2)
}
cycles = append(cycles, 3)
for range count {
cycles = append(cycles, 4)
}
}
f.Add(capacity, cycles)
}
f.Fuzz(func(t *testing.T, capacity byte, operations []byte) {
capacities := [...]int{1, 2, 3, 8, 64}
runQueueModel(t, capacities[int(capacity)%len(capacities)], operations)
})
}