diff options
author | Martin Kobetic <mkobetic@gmail.com> | 2014-05-09 18:16:38 +0000 |
---|---|---|
committer | Martin Kobetic <mkobetic@gmail.com> | 2014-05-09 20:50:58 +0000 |
commit | c4ad027df774d84c29c9cc53436071c87138c60d (patch) | |
tree | f2a26eeea973f9fe25a7f4957361052563175a80 /bucket_test.go | |
parent | first part (diff) | |
download | dedo-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.go | 44 |
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() { |