aboutsummaryrefslogtreecommitdiff
path: root/cmd/bolt/bench/generate.go
blob: 8c5554da5b5de106e2719f6e12ce5c064d6e1840 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package bench

import (
	"fmt"
	"strings"

	"github.com/boltdb/bolt"
)

// Generate and write data to specified number of buckets/items.
func GenerateDB(db *bolt.DB, numBuckets, numItemsPerBucket int) error {
	return db.Update(func(tx *bolt.Tx) error {
		for bucketIndex := 0; bucketIndex < numBuckets; bucketIndex++ {
			bucketName := fmt.Sprintf("bucket%08d")
			tx.CreateBucket([]byte(bucketName))
			bucket := tx.Bucket([]byte(bucketName))
			for i := 0; i < numItemsPerBucket; i++ {
				value := []byte(strings.Repeat("0", 100))
				bucket.Put([]byte(fmt.Sprintf("key%08d", i)), value)
			}
		}
		return nil
	})
}