mirror of https://github.com/etcd-io/bbolt.git
initial bench and generate command structure
parent
6903c7447b
commit
6957c9d534
|
@ -0,0 +1,43 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/boltdb/bolt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Run benchmarks on a given dataset.
|
||||||
|
func Bench() {
|
||||||
|
path := "bench"
|
||||||
|
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||||||
|
fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
db, err := bolt.Open(path, 0600)
|
||||||
|
if err != nil {
|
||||||
|
fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer db.Close()
|
||||||
|
|
||||||
|
bucketName := "widgets"
|
||||||
|
key := "key1"
|
||||||
|
value := "value1"
|
||||||
|
|
||||||
|
err = db.Update(func(tx *bolt.Tx) error {
|
||||||
|
// Find bucket.
|
||||||
|
b := tx.Bucket(bucketName)
|
||||||
|
if b == nil {
|
||||||
|
fatalf("bucket not found: %s", bucketName)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set value for a given key.
|
||||||
|
return b.Put([]byte(key), []byte(value))
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Generate data for benchmarks.
|
||||||
|
func Generate(numEvents int, destPath string) {
|
||||||
|
f, err := os.Create(destPath)
|
||||||
|
if err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if err := f.Close(); err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
w := bufio.NewWriter(f)
|
||||||
|
|
||||||
|
for i := 0; i < numEvents; i++ {
|
||||||
|
if _, err := w.Write([]byte(fmt.Sprintf("key%d:%s\n", i, strings.Repeat("0", 64)))); err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = w.Flush(); err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
package main
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/codegangsta/cli"
|
"github.com/codegangsta/cli"
|
||||||
)
|
)
|
||||||
|
@ -90,6 +91,25 @@ func NewApp() *cli.App {
|
||||||
Check(path)
|
Check(path)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "generate",
|
||||||
|
Usage: "Generate data for benchmarks",
|
||||||
|
Action: func(c *cli.Context) {
|
||||||
|
numEvents, err := strconv.Atoi(c.Args().Get(0))
|
||||||
|
if err != nil {
|
||||||
|
fatal(err)
|
||||||
|
}
|
||||||
|
destPath := c.Args().Get(1)
|
||||||
|
Generate(numEvents, destPath)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "bench",
|
||||||
|
Usage: "Run benchmarks on a given dataset",
|
||||||
|
Action: func(c *cli.Context) {
|
||||||
|
Bench()
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
return app
|
return app
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue