diff options
Diffstat (limited to 'bucket_test.go')
-rw-r--r-- | bucket_test.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/bucket_test.go b/bucket_test.go index 13e6a8a..99fdad8 100644 --- a/bucket_test.go +++ b/bucket_test.go @@ -107,6 +107,31 @@ func TestBucket_Put_Large(t *testing.T) { }) } +// Ensure that a database can perform multiple large appends safely. +func TestDB_Put_VeryLarge(t *testing.T) { + if testing.Short() { + t.Skip("skipping test in short mode.") + } + + n, batchN := 400000, 200000 + ksize, vsize := 8, 500 + + withOpenDB(func(db *DB, path string) { + for i := 0; i < n; i += batchN { + err := db.Update(func(tx *Tx) error { + b, _ := tx.CreateBucketIfNotExists([]byte("widgets")) + 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)) + } + return nil + }) + assert.NoError(t, err) + } + }) +} + // Ensure that a setting a value on a key with a bucket value returns an error. func TestBucket_Put_IncompatibleValue(t *testing.T) { withOpenDB(func(db *DB, path string) { |