From f2d8e479934954040c542451b0a5fe2945963351 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Mon, 16 Jan 2023 10:37:25 -0500 Subject: [PATCH] We will no longer require disk access during tests. --- README.md | 4 +- byte_input_test.go | 9 ++-- roaring64/serialization_test.go | 35 +++++++------ roaring_test.go | 5 +- runcontainer_test.go | 1 - serialization_test.go | 89 +++++++++++++++++---------------- 6 files changed, 76 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index c509329f..62232f63 100644 --- a/README.md +++ b/README.md @@ -171,8 +171,8 @@ Note that the smat library requires Go 1.6 or better. ```` $ git clone git@github.com:RoaringBitmap/roaring.git -$ go mod tidy -$ go test +$ GO111MODULE=on go mod tidy +$ go test -v ``` ### Example diff --git a/byte_input_test.go b/byte_input_test.go index 02f1db88..c4407f19 100644 --- a/byte_input_test.go +++ b/byte_input_test.go @@ -6,6 +6,7 @@ import ( "github.com/RoaringBitmap/roaring/internal" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestByteInputFlow(t *testing.T) { @@ -47,18 +48,18 @@ func TestByteInputFlow(t *testing.T) { for _, input := range instances { n, err := input.ReadUInt16() assert.EqualValues(t, 1, n) - assert.NoError(t, err) + require.NoError(t, err) p, err := input.ReadUInt32() assert.EqualValues(t, 2097162, p) // 32 << 16 | 10 - assert.NoError(t, err) + require.NoError(t, err) b, err := input.Next(2) assert.EqualValues(t, []byte{66, 0}, b) - assert.NoError(t, err) + require.NoError(t, err) err = input.SkipBytes(2) - assert.NoError(t, err) + require.NoError(t, err) b, err = input.Next(1) assert.Nil(t, b) diff --git a/roaring64/serialization_test.go b/roaring64/serialization_test.go index 5b149a3f..61677cbb 100644 --- a/roaring64/serialization_test.go +++ b/roaring64/serialization_test.go @@ -10,6 +10,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSerializationOfEmptyBitmap(t *testing.T) { @@ -18,13 +19,13 @@ func TestSerializationOfEmptyBitmap(t *testing.T) { buf := &bytes.Buffer{} _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, buf.Len(), rb.GetSerializedSizeInBytes()) newrb := NewBitmap() _, err = newrb.ReadFrom(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -38,7 +39,7 @@ func TestBase64_036(t *testing.T) { _, err := newrb.FromBase64(bstr) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -48,13 +49,13 @@ func TestSerializationBasic037(t *testing.T) { buf := &bytes.Buffer{} _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, buf.Len(), rb.GetSerializedSizeInBytes()) newrb := NewBitmap() _, err = newrb.ReadFrom(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -62,13 +63,17 @@ func TestSerializationToFile038(t *testing.T) { rb := BitmapOf(1, 2, 3, 4, 5, 100, 1000) fname := "myfile.bin" fout, err := os.OpenFile(fname, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0660) + if(err != nil) { + fmt.Println("IMPORTANT: For testing file IO, the roaring library requires disk access.") + return + } - assert.NoError(t, err) + require.NoError(t, err) var l int64 l, err = rb.WriteTo(fout) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, l, rb.GetSerializedSizeInBytes()) fout.Close() @@ -76,11 +81,11 @@ func TestSerializationToFile038(t *testing.T) { newrb := NewBitmap() fin, err := os.Open(fname) - assert.NoError(t, err) + require.NoError(t, err) defer func() { fin.Close() - assert.NoError(t, os.Remove(fname)) + require.NoError(t, os.Remove(fname)) }() _, _ = newrb.ReadFrom(fin) @@ -94,13 +99,13 @@ func TestSerializationBasic2_041(t *testing.T) { l := int(rb.GetSerializedSizeInBytes()) _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, l, buf.Len()) newrb := NewBitmap() _, err = newrb.ReadFrom(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -114,13 +119,13 @@ func TestSerializationBasic3_042(t *testing.T) { var buf bytes.Buffer _, err := rb.WriteTo(&buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, buf.Len(), int(rb.GetSerializedSizeInBytes())) newrb := NewBitmap() _, err = newrb.ReadFrom(&buf) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, newrb.Equals(rb)) } @@ -134,13 +139,13 @@ func TestHoldReference(t *testing.T) { } _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) nb := New() data := buf.Bytes() _, err = nb.ReadFrom(bytes.NewReader(data)) - assert.NoError(t, err) + require.NoError(t, err) buf = nil rb = nil diff --git a/roaring_test.go b/roaring_test.go index b99cdad8..ebc44c81 100644 --- a/roaring_test.go +++ b/roaring_test.go @@ -9,6 +9,7 @@ import ( "github.com/bits-and-blooms/bitset" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func checkValidity(t *testing.T, rb *Bitmap) { @@ -321,7 +322,7 @@ func TestRoaringInPlaceAndNotBitmapContainer(t *testing.T) { var b bytes.Buffer _, err := bm.WriteTo(&b) - assert.NoError(t, err) + require.NoError(t, err) bm2 := NewBitmap() bm2.ReadFrom(bytes.NewBuffer(b.Bytes())) @@ -1825,8 +1826,6 @@ func TestHash(t *testing.T) { hashTest(t, 4095) hashTest(t, 4096) hashTest(t, 4097) - hashTest(t, 65536) - hashTest(t, 65536*16) } func rTest(t *testing.T, N int) { diff --git a/runcontainer_test.go b/runcontainer_test.go index ae220795..86549a2c 100644 --- a/runcontainer_test.go +++ b/runcontainer_test.go @@ -2198,7 +2198,6 @@ type twofer struct { func TestAllContainerMethodsAllContainerTypesWithData067(t *testing.T) { t.Run("each of the container methods that takes two containers should handle all 3x3==9 possible ways of being called -- and return results that agree with each other", func(t *testing.T) { - //rleVerbose = true seed := int64(42) rand.Seed(seed) diff --git a/serialization_test.go b/serialization_test.go index 6abe128a..23a4530b 100644 --- a/serialization_test.go +++ b/serialization_test.go @@ -14,6 +14,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestSerializationOfEmptyBitmap(t *testing.T) { @@ -22,13 +23,13 @@ func TestSerializationOfEmptyBitmap(t *testing.T) { buf := &bytes.Buffer{} _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, buf.Len(), rb.GetSerializedSizeInBytes()) newrb := NewBitmap() _, err = newrb.ReadFrom(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -42,7 +43,7 @@ func TestBase64_036(t *testing.T) { _, err := newrb.FromBase64(bstr) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -52,13 +53,13 @@ func TestSerializationBasic037(t *testing.T) { buf := &bytes.Buffer{} _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, buf.Len(), rb.GetSerializedSizeInBytes()) newrb := NewBitmap() _, err = newrb.ReadFrom(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -66,13 +67,17 @@ func TestSerializationToFile038(t *testing.T) { rb := BitmapOf(1, 2, 3, 4, 5, 100, 1000) fname := "myfile.bin" fout, err := os.OpenFile(fname, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0660) + if(err != nil) { + fmt.Println("IMPORTANT: For testing file IO, the roaring library requires disk access.") + return + } - assert.NoError(t, err) + require.NoError(t, err) var l int64 l, err = rb.WriteTo(fout) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, l, rb.GetSerializedSizeInBytes()) fout.Close() @@ -80,11 +85,11 @@ func TestSerializationToFile038(t *testing.T) { newrb := NewBitmap() fin, err := os.Open(fname) - assert.NoError(t, err) + require.NoError(t, err) defer func() { fin.Close() - assert.NoError(t, os.Remove(fname)) + require.NoError(t, os.Remove(fname)) }() _, _ = newrb.ReadFrom(fin) @@ -95,12 +100,12 @@ func TestSerializationReadRunsFromFile039(t *testing.T) { fn := "testdata/bitmapwithruns.bin" by, err := ioutil.ReadFile(fn) - assert.NoError(t, err) + require.NoError(t, err) newrb := NewBitmap() _, err = newrb.ReadFrom(bytes.NewBuffer(by)) - assert.NoError(t, err) + require.NoError(t, err) } func TestSerializationBasic4WriteAndReadFile040(t *testing.T) { @@ -120,26 +125,26 @@ func TestSerializationBasic4WriteAndReadFile040(t *testing.T) { rb.highlowcontainer.runOptimize() fout, err := os.Create(fname) - assert.NoError(t, err) + require.NoError(t, err) var l int64 l, err = rb.WriteTo(fout) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, l, rb.GetSerializedSizeInBytes()) fout.Close() fin, err := os.Open(fname) - assert.NoError(t, err) + require.NoError(t, err) defer fin.Close() newrb := NewBitmap() _, err = newrb.ReadFrom(fin) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -148,7 +153,7 @@ func TestSerializationFromJava051(t *testing.T) { newrb := NewBitmap() fin, err := os.Open(fname) - assert.NoError(t, err) + require.NoError(t, err) defer func() { fin.Close() @@ -176,7 +181,7 @@ func TestSerializationFromJavaWithRuns052(t *testing.T) { newrb := NewBitmap() fin, err := os.Open(fname) - assert.NoError(t, err) + require.NoError(t, err) defer func() { fin.Close() @@ -208,13 +213,13 @@ func TestSerializationBasic2_041(t *testing.T) { l := int(rb.GetSerializedSizeInBytes()) _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, l, buf.Len()) newrb := NewBitmap() _, err = newrb.ReadFrom(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newrb)) } @@ -247,13 +252,13 @@ func TestSerializationBasic3_042(t *testing.T) { var buf bytes.Buffer _, err := rb.WriteTo(&buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, buf.Len(), rb.GetSerializedSizeInBytes()) newrb := NewBitmap() _, err = newrb.ReadFrom(&buf) - assert.NoError(t, err) + require.NoError(t, err) assert.Equal(t, rb.GetCardinality(), newrb.GetCardinality()) assert.True(t, newrb.Equals(rb)) } @@ -265,13 +270,13 @@ func TestGobcoding043(t *testing.T) { encoder := gob.NewEncoder(buf) err := encoder.Encode(rb) - assert.NoError(t, err) + require.NoError(t, err) var b Bitmap decoder := gob.NewDecoder(buf) err = decoder.Decode(&b) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, b.Equals(rb)) } @@ -402,13 +407,13 @@ func TestBitmap_FromBuffer(t *testing.T) { buf := &bytes.Buffer{} _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, buf.Len(), rb.GetSerializedSizeInBytes()) newRb := NewBitmap() newRb.FromBuffer(buf.Bytes()) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newRb)) }) @@ -418,12 +423,12 @@ func TestBitmap_FromBuffer(t *testing.T) { buf := &bytes.Buffer{} _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) newRb := NewBitmap() _, err = newRb.FromBuffer(buf.Bytes()) - assert.NoError(t, err) + require.NoError(t, err) assert.True(t, rb.Equals(newRb)) }) @@ -431,12 +436,12 @@ func TestBitmap_FromBuffer(t *testing.T) { file := "testdata/bitmapwithruns.bin" buf, err := ioutil.ReadFile(file) - assert.NoError(t, err) + require.NoError(t, err) rb := NewBitmap() _, err = rb.FromBuffer(buf) - assert.NoError(t, err) + require.NoError(t, err) assert.EqualValues(t, 3, rb.Stats().RunContainers) assert.EqualValues(t, 11, rb.Stats().Containers) }) @@ -445,12 +450,12 @@ func TestBitmap_FromBuffer(t *testing.T) { fn := "testdata/bitmapwithruns.bin" buf, err := ioutil.ReadFile(fn) - assert.NoError(t, err) + require.NoError(t, err) rb := NewBitmap() _, err = rb.FromBuffer(buf) - assert.NoError(t, err) + require.NoError(t, err) }) // all3.classic somehow created by other tests. @@ -458,31 +463,31 @@ func TestBitmap_FromBuffer(t *testing.T) { file := "testdata/all3.classic" buf, err := ioutil.ReadFile(file) - assert.NoError(t, err) + require.NoError(t, err) rb := NewBitmap() _, err = rb.FromBuffer(buf) - assert.NoError(t, err) + require.NoError(t, err) }) t.Run("testdata/bitmapwithruns.bin bitmap Ops", func(t *testing.T) { file := "testdata/bitmapwithruns.bin" buf, err := ioutil.ReadFile(file) - assert.NoError(t, err) + require.NoError(t, err) empt := NewBitmap() rb1 := NewBitmap() _, err = rb1.FromBuffer(buf) - assert.NoError(t, err) + require.NoError(t, err) rb2 := NewBitmap() _, err = rb2.FromBuffer(buf) - assert.NoError(t, err) + require.NoError(t, err) rbor := Or(rb1, rb2) rbfastor := FastOr(rb1, rb2) @@ -501,12 +506,12 @@ func TestBitmap_FromBuffer(t *testing.T) { file := "testdata/bitmapwithruns.bin" buf, err := ioutil.ReadFile(file) - assert.NoError(t, err) + require.NoError(t, err) rb := NewBitmap() _, err = rb.FromBuffer(buf) - assert.NoError(t, err) + require.NoError(t, err) for i, cow := range rb.highlowcontainer.needCopyOnWrite { assert.Truef(t, cow, "Container at pos %d was not marked as needs-copy-on-write", i) @@ -517,11 +522,11 @@ func TestBitmap_FromBuffer(t *testing.T) { func TestSerializationCrashers(t *testing.T) { crashers, err := filepath.Glob("testdata/crash*") - assert.NoError(t, err) + require.NoError(t, err) for _, crasher := range crashers { data, err := ioutil.ReadFile(crasher) - assert.NoError(t, err) + require.NoError(t, err) // take a copy in case the stream is modified during unpacking attempt orig := make([]byte, len(data)) @@ -582,13 +587,13 @@ func TestHoldReference(t *testing.T) { } _, err := rb.WriteTo(buf) - assert.NoError(t, err) + require.NoError(t, err) nb := New() data := buf.Bytes() _, err = nb.ReadFrom(bytes.NewReader(data)) - assert.NoError(t, err) + require.NoError(t, err) buf = nil rb = nil