aboutsummaryrefslogtreecommitdiff
path: root/bucket_test.go
diff options
context:
space:
mode:
authorMartin Kobetic <mkobetic@gmail.com>2014-05-09 18:16:38 +0000
committerMartin Kobetic <mkobetic@gmail.com>2014-05-09 20:50:58 +0000
commitc4ad027df774d84c29c9cc53436071c87138c60d (patch)
treef2a26eeea973f9fe25a7f4957361052563175a80 /bucket_test.go
parentfirst part (diff)
downloaddedo-c4ad027df774d84c29c9cc53436071c87138c60d.tar.gz
dedo-c4ad027df774d84c29c9cc53436071c87138c60d.tar.xz
aggregate bucket stats recursively and add stats to cmd
Diffstat (limited to 'bucket_test.go')
-rw-r--r--bucket_test.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/bucket_test.go b/bucket_test.go
index b87031b..626927a 100644
--- a/bucket_test.go
+++ b/bucket_test.go
@@ -628,6 +628,50 @@ func TestBucket_Stats_Small(t *testing.T) {
})
}
+// Ensure a bucket can calculate stats.
+func TestBucket_Stats_Nested(t *testing.T) {
+
+ withOpenDB(func(db *DB, path string) {
+ db.Update(func(tx *Tx) error {
+ b, err := tx.CreateBucket([]byte("foo"))
+ assert.NoError(t, err)
+ for i := 0; i < 100; i++ {
+ b.Put([]byte(strconv.Itoa(i)), []byte(strconv.Itoa(i)))
+ }
+ bar, err := b.CreateBucket([]byte("bar"))
+ assert.NoError(t, err)
+ for i := 0; i < 10; i++ {
+ bar.Put([]byte(strconv.Itoa(i)), []byte(strconv.Itoa(i)))
+ }
+ baz, err := b.CreateBucket([]byte("baz"))
+ assert.NoError(t, err)
+ for i := 0; i < 10; i++ {
+ baz.Put([]byte(strconv.Itoa(i)), []byte(strconv.Itoa(i)))
+ }
+ return nil
+ })
+ mustCheck(db)
+ db.View(func(tx *Tx) error {
+ b := tx.Bucket([]byte("foo"))
+ stats := b.Stats()
+ assert.Equal(t, stats.BranchPageN, 0)
+ assert.Equal(t, stats.BranchOverflowN, 0)
+ assert.Equal(t, stats.LeafPageN, 3)
+ assert.Equal(t, stats.LeafOverflowN, 0)
+ assert.Equal(t, stats.KeyN, 122)
+ assert.Equal(t, stats.Depth, 2)
+ if os.Getpagesize() != 4096 {
+ // Incompatible page size
+ assert.Equal(t, stats.BranchInuse, 0)
+ assert.Equal(t, stats.BranchAlloc, 0)
+ assert.Equal(t, stats.LeafInuse, 38)
+ assert.Equal(t, stats.LeafAlloc, 4096)
+ }
+ return nil
+ })
+ })
+}
+
// Ensure a large bucket can calculate stats.
func TestBucket_Stats_Large(t *testing.T) {
if testing.Short() {