...
1 package bbolt
2
3 import (
4 "fmt"
5 "math/rand"
6 "os"
7 "path/filepath"
8 "testing"
9 )
10
11 func createDb(t *testing.T) (*DB, func()) {
12
13
14 tempDirName, err := os.MkdirTemp("", "bboltmemtest")
15 if err != nil {
16 t.Fatalf("error creating temp dir: %v", err)
17 }
18 path := filepath.Join(tempDirName, "testdb.db")
19
20 bdb, err := Open(path, 0600, nil)
21 if err != nil {
22 t.Fatalf("error creating bbolt db: %v", err)
23 }
24
25 cleanup := func() {
26 bdb.Close()
27 os.RemoveAll(tempDirName)
28 }
29
30 return bdb, cleanup
31 }
32
33 func createAndPutKeys(t *testing.T) {
34 t.Parallel()
35
36 db, cleanup := createDb(t)
37 defer cleanup()
38
39 bucketName := []byte("bucket")
40
41 for i := 0; i < 100; i++ {
42 err := db.Update(func(tx *Tx) error {
43 nodes, err := tx.CreateBucketIfNotExists(bucketName)
44 if err != nil {
45 return err
46 }
47
48 var key [16]byte
49 rand.Read(key[:])
50 if err := nodes.Put(key[:], nil); err != nil {
51 return err
52 }
53
54 return nil
55 })
56 if err != nil {
57 t.Fatal(err)
58 }
59 }
60 }
61
62 func TestManyDBs(t *testing.T) {
63 if testing.Short() {
64 t.Skip("skipping test in short mode")
65 }
66
67 for i := 0; i < 100; i++ {
68 t.Run(fmt.Sprintf("%d", i), createAndPutKeys)
69 }
70 }
71
View as plain text