diff options
Diffstat (limited to 'bucket_test.go')
-rw-r--r-- | bucket_test.go | 343 |
1 files changed, 171 insertions, 172 deletions
diff --git a/bucket_test.go b/bucket_test.go index 6923b6c..90e704a 100644 --- a/bucket_test.go +++ b/bucket_test.go @@ -13,7 +13,6 @@ import ( "testing/quick" "github.com/boltdb/bolt" - "github.com/stretchr/testify/assert" ) // Ensure that a bucket that gets a non-existent key returns nil. @@ -23,7 +22,7 @@ func TestBucket_Get_NonExistent(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) value := tx.Bucket([]byte("widgets")).Get([]byte("foo")) - assert.Nil(t, value) + assert(t, value == nil, "") return nil }) } @@ -37,7 +36,7 @@ func TestBucket_Get_FromNode(t *testing.T) { b := tx.Bucket([]byte("widgets")) b.Put([]byte("foo"), []byte("bar")) value := b.Get([]byte("foo")) - assert.Equal(t, value, []byte("bar")) + equals(t, []byte("bar"), value) return nil }) } @@ -49,8 +48,8 @@ func TestBucket_Get_IncompatibleValue(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) _, err := tx.Bucket([]byte("widgets")).CreateBucket([]byte("foo")) - assert.NoError(t, err) - assert.Nil(t, tx.Bucket([]byte("widgets")).Get([]byte("foo"))) + ok(t, err) + assert(t, tx.Bucket([]byte("widgets")).Get([]byte("foo")) == nil, "") return nil }) } @@ -62,9 +61,9 @@ func TestBucket_Put(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) err := tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar")) - assert.NoError(t, err) + ok(t, err) value := tx.Bucket([]byte("widgets")).Get([]byte("foo")) - assert.Equal(t, value, []byte("bar")) + equals(t, value, []byte("bar")) return nil }) } @@ -76,10 +75,10 @@ func TestBucket_Put_Repeat(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) b := tx.Bucket([]byte("widgets")) - assert.NoError(t, b.Put([]byte("foo"), []byte("bar"))) - assert.NoError(t, b.Put([]byte("foo"), []byte("baz"))) + ok(t, b.Put([]byte("foo"), []byte("bar"))) + ok(t, b.Put([]byte("foo"), []byte("baz"))) value := tx.Bucket([]byte("widgets")).Get([]byte("foo")) - assert.Equal(t, value, []byte("baz")) + equals(t, value, []byte("baz")) return nil }) } @@ -94,7 +93,7 @@ func TestBucket_Put_Large(t *testing.T) { tx.CreateBucket([]byte("widgets")) b := tx.Bucket([]byte("widgets")) for i := 1; i < count; i++ { - assert.NoError(t, b.Put([]byte(strings.Repeat("0", i*factor)), []byte(strings.Repeat("X", (count-i)*factor)))) + ok(t, b.Put([]byte(strings.Repeat("0", i*factor)), []byte(strings.Repeat("X", (count-i)*factor)))) } return nil }) @@ -102,7 +101,7 @@ func TestBucket_Put_Large(t *testing.T) { b := tx.Bucket([]byte("widgets")) for i := 1; i < count; i++ { value := b.Get([]byte(strings.Repeat("0", i*factor))) - assert.Equal(t, []byte(strings.Repeat("X", (count-i)*factor)), value) + equals(t, []byte(strings.Repeat("X", (count-i)*factor)), value) } return nil }) @@ -126,11 +125,11 @@ func TestDB_Put_VeryLarge(t *testing.T) { for j := 0; j < batchN; j++ { k, v := make([]byte, ksize), make([]byte, vsize) binary.BigEndian.PutUint32(k, uint32(i+j)) - assert.NoError(t, b.Put(k, v)) + ok(t, b.Put(k, v)) } return nil }) - assert.NoError(t, err) + ok(t, err) } } @@ -141,8 +140,8 @@ func TestBucket_Put_IncompatibleValue(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) _, err := tx.Bucket([]byte("widgets")).CreateBucket([]byte("foo")) - assert.NoError(t, err) - assert.Equal(t, bolt.ErrIncompatibleValue, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) + ok(t, err) + equals(t, bolt.ErrIncompatibleValue, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) return nil }) } @@ -155,7 +154,7 @@ func TestBucket_Put_Closed(t *testing.T) { tx.CreateBucket([]byte("widgets")) b := tx.Bucket([]byte("widgets")) tx.Rollback() - assert.Equal(t, bolt.ErrTxClosed, b.Put([]byte("foo"), []byte("bar"))) + equals(t, bolt.ErrTxClosed, b.Put([]byte("foo"), []byte("bar"))) } // Ensure that setting a value on a read-only bucket returns an error. @@ -164,13 +163,13 @@ func TestBucket_Put_ReadOnly(t *testing.T) { defer db.Close() db.Update(func(tx *bolt.Tx) error { _, err := tx.CreateBucket([]byte("widgets")) - assert.NoError(t, err) + ok(t, err) return nil }) db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("widgets")) err := b.Put([]byte("foo"), []byte("bar")) - assert.Equal(t, err, bolt.ErrTxNotWritable) + equals(t, err, bolt.ErrTxNotWritable) return nil }) } @@ -183,9 +182,9 @@ func TestBucket_Delete(t *testing.T) { tx.CreateBucket([]byte("widgets")) tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar")) err := tx.Bucket([]byte("widgets")).Delete([]byte("foo")) - assert.NoError(t, err) + ok(t, err) value := tx.Bucket([]byte("widgets")).Get([]byte("foo")) - assert.Nil(t, value) + assert(t, value == nil, "") return nil }) } @@ -197,21 +196,21 @@ func TestBucket_Delete_Large(t *testing.T) { db.Update(func(tx *bolt.Tx) error { var b, _ = tx.CreateBucket([]byte("widgets")) for i := 0; i < 100; i++ { - assert.NoError(t, b.Put([]byte(strconv.Itoa(i)), []byte(strings.Repeat("*", 1024)))) + ok(t, b.Put([]byte(strconv.Itoa(i)), []byte(strings.Repeat("*", 1024)))) } return nil }) db.Update(func(tx *bolt.Tx) error { var b = tx.Bucket([]byte("widgets")) for i := 0; i < 100; i++ { - assert.NoError(t, b.Delete([]byte(strconv.Itoa(i)))) + ok(t, b.Delete([]byte(strconv.Itoa(i)))) } return nil }) db.View(func(tx *bolt.Tx) error { var b = tx.Bucket([]byte("widgets")) for i := 0; i < 100; i++ { - assert.Nil(t, b.Get([]byte(strconv.Itoa(i)))) + assert(t, b.Get([]byte(strconv.Itoa(i))) == nil, "") } return nil }) @@ -260,7 +259,7 @@ func TestBucket_Delete_FreelistOverflow(t *testing.T) { }) // Check that a freelist overflow occurred. - assert.NoError(t, err) + ok(t, err) } // Ensure that accessing and updating nested buckets is ok across transactions. @@ -270,14 +269,14 @@ func TestBucket_Nested(t *testing.T) { db.Update(func(tx *bolt.Tx) error { // Create a widgets bucket. b, err := tx.CreateBucket([]byte("widgets")) - assert.NoError(t, err) + ok(t, err) // Create a widgets/foo bucket. _, err = b.CreateBucket([]byte("foo")) - assert.NoError(t, err) + ok(t, err) // Create a widgets/bar key. - assert.NoError(t, b.Put([]byte("bar"), []byte("0000"))) + ok(t, b.Put([]byte("bar"), []byte("0000"))) return nil }) @@ -286,7 +285,7 @@ func TestBucket_Nested(t *testing.T) { // Update widgets/bar. db.Update(func(tx *bolt.Tx) error { var b = tx.Bucket([]byte("widgets")) - assert.NoError(t, b.Put([]byte("bar"), []byte("xxxx"))) + ok(t, b.Put([]byte("bar"), []byte("xxxx"))) return nil }) db.MustCheck() @@ -295,7 +294,7 @@ func TestBucket_Nested(t *testing.T) { db.Update(func(tx *bolt.Tx) error { var b = tx.Bucket([]byte("widgets")) for i := 0; i < 10000; i++ { - assert.NoError(t, b.Put([]byte(strconv.Itoa(i)), []byte(strconv.Itoa(i)))) + ok(t, b.Put([]byte(strconv.Itoa(i)), []byte(strconv.Itoa(i)))) } return nil }) @@ -304,7 +303,7 @@ func TestBucket_Nested(t *testing.T) { // Insert into widgets/foo/baz. db.Update(func(tx *bolt.Tx) error { var b = tx.Bucket([]byte("widgets")) - assert.NoError(t, b.Bucket([]byte("foo")).Put([]byte("baz"), []byte("yyyy"))) + ok(t, b.Bucket([]byte("foo")).Put([]byte("baz"), []byte("yyyy"))) return nil }) db.MustCheck() @@ -312,10 +311,10 @@ func TestBucket_Nested(t *testing.T) { // Verify. db.View(func(tx *bolt.Tx) error { var b = tx.Bucket([]byte("widgets")) - assert.Equal(t, []byte("yyyy"), b.Bucket([]byte("foo")).Get([]byte("baz"))) - assert.Equal(t, []byte("xxxx"), b.Get([]byte("bar"))) + equals(t, []byte("yyyy"), b.Bucket([]byte("foo")).Get([]byte("baz"))) + equals(t, []byte("xxxx"), b.Get([]byte("bar"))) for i := 0; i < 10000; i++ { - assert.Equal(t, []byte(strconv.Itoa(i)), b.Get([]byte(strconv.Itoa(i)))) + equals(t, []byte(strconv.Itoa(i)), b.Get([]byte(strconv.Itoa(i)))) } return nil }) @@ -329,8 +328,8 @@ func TestBucket_Delete_Bucket(t *testing.T) { tx.CreateBucket([]byte("widgets")) b := tx.Bucket([]byte("widgets")) _, err := b.CreateBucket([]byte("foo")) - assert.NoError(t, err) - assert.Equal(t, bolt.ErrIncompatibleValue, b.Delete([]byte("foo"))) + ok(t, err) + equals(t, bolt.ErrIncompatibleValue, b.Delete([]byte("foo"))) return nil }) } @@ -346,7 +345,7 @@ func TestBucket_Delete_ReadOnly(t *testing.T) { db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("widgets")) err := b.Delete([]byte("foo")) - assert.Equal(t, err, bolt.ErrTxNotWritable) + equals(t, err, bolt.ErrTxNotWritable) return nil }) } @@ -359,7 +358,7 @@ func TestBucket_Delete_Closed(t *testing.T) { tx.CreateBucket([]byte("widgets")) b := tx.Bucket([]byte("widgets")) tx.Rollback() - assert.Equal(t, bolt.ErrTxClosed, b.Delete([]byte("foo"))) + equals(t, bolt.ErrTxClosed, b.Delete([]byte("foo"))) } // Ensure that deleting a bucket causes nested buckets to be deleted. @@ -369,11 +368,11 @@ func TestBucket_DeleteBucket_Nested(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) _, err := tx.Bucket([]byte("widgets")).CreateBucket([]byte("foo")) - assert.NoError(t, err) + ok(t, err) _, err = tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).CreateBucket([]byte("bar")) - assert.NoError(t, err) - assert.NoError(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar")).Put([]byte("baz"), []byte("bat"))) - assert.NoError(t, tx.Bucket([]byte("widgets")).DeleteBucket([]byte("foo"))) + ok(t, err) + ok(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar")).Put([]byte("baz"), []byte("bat"))) + ok(t, tx.Bucket([]byte("widgets")).DeleteBucket([]byte("foo"))) return nil }) } @@ -385,22 +384,22 @@ func TestBucket_DeleteBucket_Nested2(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) _, err := tx.Bucket([]byte("widgets")).CreateBucket([]byte("foo")) - assert.NoError(t, err) + ok(t, err) _, err = tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).CreateBucket([]byte("bar")) - assert.NoError(t, err) - assert.NoError(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar")).Put([]byte("baz"), []byte("bat"))) + ok(t, err) + ok(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar")).Put([]byte("baz"), []byte("bat"))) return nil }) db.Update(func(tx *bolt.Tx) error { - assert.NotNil(t, tx.Bucket([]byte("widgets"))) - assert.NotNil(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo"))) - assert.NotNil(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar"))) - assert.Equal(t, []byte("bat"), tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar")).Get([]byte("baz"))) - assert.NoError(t, tx.DeleteBucket([]byte("widgets"))) + assert(t, tx.Bucket([]byte("widgets")) != nil, "") + assert(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")) != nil, "") + assert(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar")) != nil, "") + equals(t, []byte("bat"), tx.Bucket([]byte("widgets")).Bucket([]byte("foo")).Bucket([]byte("bar")).Get([]byte("baz"))) + ok(t, tx.DeleteBucket([]byte("widgets"))) return nil }) db.View(func(tx *bolt.Tx) error { - assert.Nil(t, tx.Bucket([]byte("widgets"))) + assert(t, tx.Bucket([]byte("widgets")) == nil, "") return nil }) } @@ -411,17 +410,17 @@ func TestBucket_DeleteBucket_Large(t *testing.T) { defer db.Close() db.Update(func(tx *bolt.Tx) error { _, err := tx.CreateBucket([]byte("widgets")) - assert.NoError(t, err) + ok(t, err) _, err = tx.Bucket([]byte("widgets")).CreateBucket([]byte("foo")) - assert.NoError(t, err) + ok(t, err) b := tx.Bucket([]byte("widgets")).Bucket([]byte("foo")) for i := 0; i < 1000; i++ { - assert.NoError(t, b.Put([]byte(fmt.Sprintf("%d", i)), []byte(fmt.Sprintf("%0100d", i)))) + ok(t, b.Put([]byte(fmt.Sprintf("%d", i)), []byte(fmt.Sprintf("%0100d", i)))) } return nil }) db.Update(func(tx *bolt.Tx) error { - assert.NoError(t, tx.DeleteBucket([]byte("widgets"))) + ok(t, tx.DeleteBucket([]byte("widgets"))) return nil }) @@ -434,8 +433,8 @@ func TestBucket_Bucket_IncompatibleValue(t *testing.T) { defer db.Close() db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) - assert.NoError(t, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) - assert.Nil(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo"))) + ok(t, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) + assert(t, tx.Bucket([]byte("widgets")).Bucket([]byte("foo")) == nil, "") return nil }) } @@ -446,10 +445,10 @@ func TestBucket_CreateBucket_IncompatibleValue(t *testing.T) { defer db.Close() db.Update(func(tx *bolt.Tx) error { _, err := tx.CreateBucket([]byte("widgets")) - assert.NoError(t, err) - assert.NoError(t, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) + ok(t, err) + ok(t, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) _, err = tx.Bucket([]byte("widgets")).CreateBucket([]byte("foo")) - assert.Equal(t, bolt.ErrIncompatibleValue, err) + equals(t, bolt.ErrIncompatibleValue, err) return nil }) } @@ -460,9 +459,9 @@ func TestBucket_DeleteBucket_IncompatibleValue(t *testing.T) { defer db.Close() db.Update(func(tx *bolt.Tx) error { _, err := tx.CreateBucket([]byte("widgets")) - assert.NoError(t, err) - assert.NoError(t, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) - assert.Equal(t, bolt.ErrIncompatibleValue, tx.Bucket([]byte("widgets")).DeleteBucket([]byte("foo"))) + ok(t, err) + ok(t, tx.Bucket([]byte("widgets")).Put([]byte("foo"), []byte("bar"))) + equals(t, bolt.ErrIncompatibleValue, tx.Bucket([]byte("widgets")).DeleteBucket([]byte("foo"))) return nil }) } @@ -477,16 +476,16 @@ func TestBucket_NextSequence(t *testing.T) { // Make sure sequence increments. seq, err := tx.Bucket([]byte("widgets")).NextSequence() - assert.NoError(t, err) - assert.Equal(t, seq, uint64(1)) + ok(t, err) + equals(t, seq, uint64(1)) seq, err = tx.Bucket([]byte("widgets")).NextSequence() - assert.NoError(t, err) - assert.Equal(t, seq, uint64(2)) + ok(t, err) + equals(t, seq, uint64(2)) // Buckets should be separate. seq, err = tx.Bucket([]byte("woojits")).NextSequence() - assert.NoError(t, err) - assert.Equal(t, seq, uint64(1)) + ok(t, err) + equals(t, seq, uint64(1)) return nil }) } @@ -502,8 +501,8 @@ func TestBucket_NextSequence_ReadOnly(t *testing.T) { db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("widgets")) i, err := b.NextSequence() - assert.Equal(t, i, uint64(0)) - assert.Equal(t, err, bolt.ErrTxNotWritable) + equals(t, i, uint64(0)) + equals(t, err, bolt.ErrTxNotWritable) return nil }) } @@ -517,7 +516,7 @@ func TestBucket_NextSequence_Closed(t *testing.T) { b := tx.Bucket([]byte("widgets")) tx.Rollback() _, err := b.NextSequence() - assert.Equal(t, bolt.ErrTxClosed, err) + equals(t, bolt.ErrTxClosed, err) } // Ensure a user can loop over all key/value pairs in a bucket. @@ -534,20 +533,20 @@ func TestBucket_ForEach(t *testing.T) { err := tx.Bucket([]byte("widgets")).ForEach(func(k, v []byte) error { switch index { case 0: - assert.Equal(t, k, []byte("bar")) - assert.Equal(t, v, []byte("0002")) + equals(t, k, []byte("bar")) + equals(t, v, []byte("0002")) case 1: - assert.Equal(t, k, []byte("baz")) - assert.Equal(t, v, []byte("0001")) + equals(t, k, []byte("baz")) + equals(t, v, []byte("0001")) case 2: - assert.Equal(t, k, []byte("foo")) - assert.Equal(t, v, []byte("0000")) + equals(t, k, []byte("foo")) + equals(t, v, []byte("0000")) } index++ return nil }) - assert.NoError(t, err) - assert.Equal(t, index, 3) + ok(t, err) + equals(t, index, 3) return nil }) } @@ -570,8 +569,8 @@ func TestBucket_ForEach_ShortCircuit(t *testing.T) { } return nil }) - assert.Equal(t, errors.New("marker"), err) - assert.Equal(t, 2, index) + equals(t, errors.New("marker"), err) + equals(t, 2, index) return nil }) } @@ -585,7 +584,7 @@ func TestBucket_ForEach_Closed(t *testing.T) { b := tx.Bucket([]byte("widgets")) tx.Rollback() err := b.ForEach(func(k, v []byte) error { return nil }) - assert.Equal(t, bolt.ErrTxClosed, err) + equals(t, bolt.ErrTxClosed, err) } // Ensure that an error is returned when inserting with an empty key. @@ -595,9 +594,9 @@ func TestBucket_Put_EmptyKey(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) err := tx.Bucket([]byte("widgets")).Put([]byte(""), []byte("bar")) - assert.Equal(t, err, bolt.ErrKeyRequired) + equals(t, err, bolt.ErrKeyRequired) err = tx.Bucket([]byte("widgets")).Put(nil, []byte("bar")) - assert.Equal(t, err, bolt.ErrKeyRequired) + equals(t, err, bolt.ErrKeyRequired) return nil }) } @@ -609,7 +608,7 @@ func TestBucket_Put_KeyTooLarge(t *testing.T) { db.Update(func(tx *bolt.Tx) error { tx.CreateBucket([]byte("widgets")) err := tx.Bucket([]byte("widgets")).Put(make([]byte, 32769), []byte("bar")) - assert.Equal(t, err, bolt.ErrKeyTooLarge) + equals(t, err, bolt.ErrKeyTooLarge) return nil }) } @@ -636,33 +635,33 @@ func TestBucket_Stats(t *testing.T) { db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("woojits")) stats := b.Stats() - assert.Equal(t, 1, stats.BranchPageN, "BranchPageN") - assert.Equal(t, 0, stats.BranchOverflowN, "BranchOverflowN") - assert.Equal(t, 7, stats.LeafPageN, "LeafPageN") - assert.Equal(t, 2, stats.LeafOverflowN, "LeafOverflowN") - assert.Equal(t, 501, stats.KeyN, "KeyN") - assert.Equal(t, 2, stats.Depth, "Depth") + equals(t, 1, stats.BranchPageN) + equals(t, 0, stats.BranchOverflowN) + equals(t, 7, stats.LeafPageN) + equals(t, 2, stats.LeafOverflowN) + equals(t, 501, stats.KeyN) + equals(t, 2, stats.Depth) branchInuse := 16 // branch page header branchInuse += 7 * 16 // branch elements branchInuse += 7 * 3 // branch keys (6 3-byte keys) - assert.Equal(t, branchInuse, stats.BranchInuse, "BranchInuse") + equals(t, branchInuse, stats.BranchInuse) leafInuse := 7 * 16 // leaf page header leafInuse += 501 * 16 // leaf elements leafInuse += 500*3 + len(big_key) // leaf keys leafInuse += 1*10 + 2*90 + 3*400 + 10000 // leaf values - assert.Equal(t, leafInuse, stats.LeafInuse, "LeafInuse") + equals(t, leafInuse, stats.LeafInuse) if os.Getpagesize() == 4096 { // Incompatible page size - assert.Equal(t, 4096, stats.BranchAlloc, "BranchAlloc") - assert.Equal(t, 36864, stats.LeafAlloc, "LeafAlloc") + equals(t, 4096, stats.BranchAlloc) + equals(t, 36864, stats.LeafAlloc) } - assert.Equal(t, 1, stats.BucketN, "BucketN") - assert.Equal(t, 0, stats.InlineBucketN, "InlineBucketN") - assert.Equal(t, 0, stats.InlineBucketInuse, "InlineBucketInuse") + equals(t, 1, stats.BucketN) + equals(t, 0, stats.InlineBucketN) + equals(t, 0, stats.InlineBucketInuse) return nil }) } @@ -698,17 +697,17 @@ func TestBucket_Stats_RandomFill(t *testing.T) { db.View(func(tx *bolt.Tx) error { s := tx.Bucket([]byte("woojits")).Stats() - assert.Equal(t, 100000, s.KeyN, "KeyN") + equals(t, 100000, s.KeyN) - assert.Equal(t, 98, s.BranchPageN, "BranchPageN") - assert.Equal(t, 0, s.BranchOverflowN, "BranchOverflowN") - assert.Equal(t, 130984, s.BranchInuse, "BranchInuse") - assert.Equal(t, 401408, s.BranchAlloc, "BranchAlloc") + equals(t, 98, s.BranchPageN) + equals(t, 0, s.BranchOverflowN) + equals(t, 130984, s.BranchInuse) + equals(t, 401408, s.BranchAlloc) - assert.Equal(t, 3412, s.LeafPageN, "LeafPageN") - assert.Equal(t, 0, s.LeafOverflowN, "LeafOverflowN") - assert.Equal(t, 4742482, s.LeafInuse, "LeafInuse") - assert.Equal(t, 13975552, s.LeafAlloc, "LeafAlloc") + equals(t, 3412, s.LeafPageN) + equals(t, 0, s.LeafOverflowN) + equals(t, 4742482, s.LeafInuse) + equals(t, 13975552, s.LeafAlloc) return nil }) } @@ -720,7 +719,7 @@ func TestBucket_Stats_Small(t *testing.T) { db.Update(func(tx *bolt.Tx) error { // Add a bucket that fits on a single root leaf. b, err := tx.CreateBucket([]byte("whozawhats")) - assert.NoError(t, err) + ok(t, err) b.Put([]byte("foo"), []byte("bar")) return nil @@ -729,22 +728,22 @@ func TestBucket_Stats_Small(t *testing.T) { db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("whozawhats")) stats := b.Stats() - assert.Equal(t, 0, stats.BranchPageN, "BranchPageN") - assert.Equal(t, 0, stats.BranchOverflowN, "BranchOverflowN") - assert.Equal(t, 0, stats.LeafPageN, "LeafPageN") - assert.Equal(t, 0, stats.LeafOverflowN, "LeafOverflowN") - assert.Equal(t, 1, stats.KeyN, "KeyN") - assert.Equal(t, 1, stats.Depth, "Depth") - assert.Equal(t, 0, stats.BranchInuse, "BranchInuse") - assert.Equal(t, 0, stats.LeafInuse, "LeafInuse") + equals(t, 0, stats.BranchPageN) + equals(t, 0, stats.BranchOverflowN) + equals(t, 0, stats.LeafPageN) + equals(t, 0, stats.LeafOverflowN) + equals(t, 1, stats.KeyN) + equals(t, 1, stats.Depth) + equals(t, 0, stats.BranchInuse) + equals(t, 0, stats.LeafInuse) if os.Getpagesize() == 4096 { // Incompatible page size - assert.Equal(t, 0, stats.BranchAlloc, "BranchAlloc") - assert.Equal(t, 0, stats.LeafAlloc, "LeafAlloc") + equals(t, 0, stats.BranchAlloc) + equals(t, 0, stats.LeafAlloc) } - assert.Equal(t, 1, stats.BucketN, "BucketN") - assert.Equal(t, 1, stats.InlineBucketN, "InlineBucketN") - assert.Equal(t, 16+16+6, stats.InlineBucketInuse, "InlineBucketInuse") + equals(t, 1, stats.BucketN) + equals(t, 1, stats.InlineBucketN) + equals(t, 16+16+6, stats.InlineBucketInuse) return nil }) } @@ -756,29 +755,29 @@ func TestBucket_Stats_EmptyBucket(t *testing.T) { db.Update(func(tx *bolt.Tx) error { // Add a bucket that fits on a single root leaf. _, err := tx.CreateBucket([]byte("whozawhats")) - assert.NoError(t, err) + ok(t, err) return nil }) db.MustCheck() db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("whozawhats")) stats := b.Stats() - assert.Equal(t, 0, stats.BranchPageN, "BranchPageN") - assert.Equal(t, 0, stats.BranchOverflowN, "BranchOverflowN") - assert.Equal(t, 0, stats.LeafPageN, "LeafPageN") - assert.Equal(t, 0, stats.LeafOverflowN, "LeafOverflowN") - assert.Equal(t, 0, stats.KeyN, "KeyN") - assert.Equal(t, 1, stats.Depth, "Depth") - assert.Equal(t, 0, stats.BranchInuse, "BranchInuse") - assert.Equal(t, 0, stats.LeafInuse, "LeafInuse") + equals(t, 0, stats.BranchPageN) + equals(t, 0, stats.BranchOverflowN) + equals(t, 0, stats.LeafPageN) + equals(t, 0, stats.LeafOverflowN) + equals(t, 0, stats.KeyN) + equals(t, 1, stats.Depth) + equals(t, 0, stats.BranchInuse) + equals(t, 0, stats.LeafInuse) if os.Getpagesize() == 4096 { // Incompatible page size - assert.Equal(t, 0, stats.BranchAlloc, "BranchAlloc") - assert.Equal(t, 0, stats.LeafAlloc, "LeafAlloc") + equals(t, 0, stats.BranchAlloc) + equals(t, 0, stats.LeafAlloc) } - assert.Equal(t, 1, stats.BucketN, "BucketN") - assert.Equal(t, 1, stats.InlineBucketN, "InlineBucketN") - assert.Equal(t, 16, stats.InlineBucketInuse, "InlineBucketInuse") + equals(t, 1, stats.BucketN) + equals(t, 1, stats.InlineBucketN) + equals(t, 16, stats.InlineBucketInuse) return nil }) } @@ -790,17 +789,17 @@ func TestBucket_Stats_Nested(t *testing.T) { db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucket([]byte("foo")) - assert.NoError(t, err) + ok(t, err) for i := 0; i < 100; i++ { b.Put([]byte(fmt.Sprintf("%02d", i)), []byte(fmt.Sprintf("%02d", i))) } bar, err := b.CreateBucket([]byte("bar")) - assert.NoError(t, err) + ok(t, err) for i := 0; i < 10; i++ { bar.Put([]byte(strconv.Itoa(i)), []byte(strconv.Itoa(i))) } baz, err := bar.CreateBucket([]byte("baz")) - assert.NoError(t, err) + ok(t, err) for i := 0; i < 10; i++ { baz.Put([]byte(strconv.Itoa(i)), []byte(strconv.Itoa(i))) } @@ -812,13 +811,13 @@ func TestBucket_Stats_Nested(t *testing.T) { db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("foo")) stats := b.Stats() - assert.Equal(t, 0, stats.BranchPageN, "BranchPageN") - assert.Equal(t, 0, stats.BranchOverflowN, "BranchOverflowN") - assert.Equal(t, 2, stats.LeafPageN, "LeafPageN") - assert.Equal(t, 0, stats.LeafOverflowN, "LeafOverflowN") - assert.Equal(t, 122, stats.KeyN, "KeyN") - assert.Equal(t, 3, stats.Depth, "Depth") - assert.Equal(t, 0, stats.BranchInuse, "BranchInuse") + equals(t, 0, stats.BranchPageN) + equals(t, 0, stats.BranchOverflowN) + equals(t, 2, stats.LeafPageN) + equals(t, 0, stats.LeafOverflowN) + equals(t, 122, stats.KeyN) + equals(t, 3, stats.Depth) + equals(t, 0, stats.BranchInuse) foo := 16 // foo (pghdr) foo += 101 * 16 // foo leaf elements @@ -834,15 +833,15 @@ func TestBucket_Stats_Nested(t *testing.T) { baz += 10 * 16 // baz leaf elements baz += 10 + 10 // baz leaf key/values - assert.Equal(t, foo+bar+baz, stats.LeafInuse, "LeafInuse") + equals(t, foo+bar+baz, stats.LeafInuse) if os.Getpagesize() == 4096 { // Incompatible page size - assert.Equal(t, 0, stats.BranchAlloc, "BranchAlloc") - assert.Equal(t, 8192, stats.LeafAlloc, "LeafAlloc") + equals(t, 0, stats.BranchAlloc) + equals(t, 8192, stats.LeafAlloc) } - assert.Equal(t, 3, stats.BucketN, "BucketN") - assert.Equal(t, 1, stats.InlineBucketN, "InlineBucketN") - assert.Equal(t, baz, stats.InlineBucketInuse, "InlineBucketInuse") + equals(t, 3, stats.BucketN) + equals(t, 1, stats.InlineBucketN) + equals(t, baz, stats.InlineBucketInuse) return nil }) } @@ -873,22 +872,22 @@ func TestBucket_Stats_Large(t *testing.T) { db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("widgets")) stats := b.Stats() - assert.Equal(t, 13, stats.BranchPageN, "BranchPageN") - assert.Equal(t, 0, stats.BranchOverflowN, "BranchOverflowN") - assert.Equal(t, 1196, stats.LeafPageN, "LeafPageN") - assert.Equal(t, 0, stats.LeafOverflowN, "LeafOverflowN") - assert.Equal(t, 100000, stats.KeyN, "KeyN") - assert.Equal(t, 3, stats.Depth, "Depth") - assert.Equal(t, 25257, stats.BranchInuse, "BranchInuse") - assert.Equal(t, 2596916, stats.LeafInuse, "LeafInuse") + equals(t, 13, stats.BranchPageN) + equals(t, 0, stats.BranchOverflowN) + equals(t, 1196, stats.LeafPageN) + equals(t, 0, stats.LeafOverflowN) + equals(t, 100000, stats.KeyN) + equals(t, 3, stats.Depth) + equals(t, 25257, stats.BranchInuse) + equals(t, 2596916, stats.LeafInuse) if os.Getpagesize() == 4096 { // Incompatible page size - assert.Equal(t, 53248, stats.BranchAlloc, "BranchAlloc") - assert.Equal(t, 4898816, stats.LeafAlloc, "LeafAlloc") + equals(t, 53248, stats.BranchAlloc) + equals(t, 4898816, stats.LeafAlloc) } - assert.Equal(t, 1, stats.BucketN, "BucketN") - assert.Equal(t, 0, stats.InlineBucketN, "InlineBucketN") - assert.Equal(t, 0, stats.InlineBucketInuse, "InlineBucketInuse") + equals(t, 1, stats.BucketN) + equals(t, 0, stats.InlineBucketN) + equals(t, 0, stats.InlineBucketInuse) return nil }) } @@ -960,20 +959,20 @@ func TestBucket_Put_Multiple(t *testing.T) { err := db.Update(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("widgets")) for _, item := range items { - assert.NoError(t, b.Put(item.Key, item.Value)) + ok(t, b.Put(item.Key, item.Value)) } return nil }) - assert.NoError(t, err) + ok(t, err) // Verify all items exist. db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("widgets")) for _, item := range items { value := b.Get(item.Key) - if !assert.Equal(t, item.Value, value) { + if !bytes.Equal(item.Value, value) { db.CopyTempFile() - t.FailNow() + t.Fatalf("exp=%x; got=%x", item.Value, value) } } return nil @@ -1002,18 +1001,18 @@ func TestBucket_Delete_Quick(t *testing.T) { err := db.Update(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("widgets")) for _, item := range items { - assert.NoError(t, b.Put(item.Key, item.Value)) + ok(t, b.Put(item.Key, item.Value)) } return nil }) - assert.NoError(t, err) + ok(t, err) // Remove items one at a time and check consistency. for _, item := range items { err := db.Update(func(tx *bolt.Tx) error { return tx.Bucket([]byte("widgets")).Delete(item.Key) }) - assert.NoError(t, err) + ok(t, err) } // Anything before our deletion index should be nil. |