aboutsummaryrefslogtreecommitdiff
path: root/bucket_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'bucket_test.go')
-rw-r--r--bucket_test.go25
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) {