aboutsummaryrefslogtreecommitdiff
path: root/db_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'db_test.go')
-rw-r--r--db_test.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/db_test.go b/db_test.go
index ecf2290..3d0b987 100644
--- a/db_test.go
+++ b/db_test.go
@@ -5,6 +5,7 @@ import (
"io"
"io/ioutil"
"os"
+ "strconv"
"syscall"
"testing"
"time"
@@ -329,6 +330,51 @@ func TestDBCopyFile(t *testing.T) {
})
}
+// Ensure the database can return stats about itself.
+func TestDBStat(t *testing.T) {
+ withOpenDB(func(db *DB, path string) {
+ db.Do(func(txn *RWTransaction) error {
+ txn.CreateBucket("widgets")
+ for i := 0; i < 10000; i++ {
+ txn.Put("widgets", []byte(strconv.Itoa(i)), []byte(strconv.Itoa(i)))
+ }
+ return nil
+ })
+
+ // Delete some keys.
+ db.Delete("widgets", []byte("10"))
+ db.Delete("widgets", []byte("1000"))
+
+ // Open some readers.
+ t0, _ := db.Transaction()
+ t1, _ := db.Transaction()
+ t2, _ := db.Transaction()
+ t2.Close()
+
+ // Obtain stats.
+ stat, err := db.Stat()
+ assert.NoError(t, err)
+ assert.Equal(t, stat.PageCount, 128)
+ assert.Equal(t, stat.FreePageCount, 2)
+ assert.Equal(t, stat.PageSize, 4096)
+ assert.Equal(t, stat.MmapSize, 4194304)
+ assert.Equal(t, stat.TransactionCount, 2)
+
+ // Close readers.
+ t0.Close()
+ t1.Close()
+ })
+}
+
+// Ensure the getting stats on a closed database returns an error.
+func TestDBStatWhileClosed(t *testing.T) {
+ withDB(func(db *DB, path string) {
+ stat, err := db.Stat()
+ assert.Equal(t, err, ErrDatabaseNotOpen)
+ assert.Nil(t, stat)
+ })
+}
+
// Ensure that an error is returned when a database write fails.
func TestDBWriteFail(t *testing.T) {
t.Skip("pending") // TODO(benbjohnson)