]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/gob: disable fuzz tests unless command-line flag is set
authorRob Pike <r@golang.org>
Fri, 13 Jul 2012 21:23:51 +0000 (14:23 -0700)
committerRob Pike <r@golang.org>
Fri, 13 Jul 2012 21:23:51 +0000 (14:23 -0700)
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

src/pkg/encoding/gob/codec_test.go

index ebcbb78ebe6e0d7d6dd07d1e5ee6f94a0184fcb1..482212b7467b08d4d7df6cecb0c98fc467266982 100644 (file)
@@ -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{}) {