mirror of
https://github.com/golang/go
synced 2024-11-20 10:14:43 -07:00
encoding/gob: disable fuzz tests unless command-line flag is set
They can generate huge amounts of memory, causing failure on small machines. Also they can be very slow. So slow that one test was commented out! We uncomment it and use a flag. Fixes #3742. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/6373044
This commit is contained in:
parent
882b6ef454
commit
bbe601789c
@ -7,6 +7,7 @@ package gob
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"flag"
|
||||
"math"
|
||||
"math/rand"
|
||||
"reflect"
|
||||
@ -16,6 +17,8 @@ import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
var doFuzzTests = flag.Bool("gob.fuzz", false, "run the fuzz tests, which are large and very slow")
|
||||
|
||||
// Guarantee encoding format by comparing some encodings to hand-written values
|
||||
type EncodeT struct {
|
||||
x uint64
|
||||
@ -1434,7 +1437,8 @@ func encFuzzDec(rng *rand.Rand, in interface{}) error {
|
||||
|
||||
// This does some "fuzz testing" by attempting to decode a sequence of random bytes.
|
||||
func TestFuzz(t *testing.T) {
|
||||
if testing.Short() {
|
||||
if !*doFuzzTests {
|
||||
t.Logf("disabled; run with -gob.fuzz to enable")
|
||||
return
|
||||
}
|
||||
|
||||
@ -1453,11 +1457,16 @@ func TestFuzz(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestFuzzRegressions(t *testing.T) {
|
||||
if !*doFuzzTests {
|
||||
t.Logf("disabled; run with -gob.fuzz to enable")
|
||||
return
|
||||
}
|
||||
|
||||
// An instance triggering a type name of length ~102 GB.
|
||||
testFuzz(t, 1328492090837718000, 100, new(float32))
|
||||
// An instance triggering a type name of 1.6 GB.
|
||||
// Commented out because it takes 5m to run.
|
||||
//testFuzz(t, 1330522872628565000, 100, new(int))
|
||||
// Note: can take several minutes to run.
|
||||
testFuzz(t, 1330522872628565000, 100, new(int))
|
||||
}
|
||||
|
||||
func testFuzz(t *testing.T, seed int64, n int, input ...interface{}) {
|
||||
|
Loading…
Reference in New Issue
Block a user