From 8bf169c96f80c1603dd1d7c7d7d5c3813fc6081a Mon Sep 17 00:00:00 2001 From: James Mills <1290234+prologic@users.noreply.github.com> Date: Wed, 20 Mar 2019 17:05:54 +1000 Subject: [PATCH] Add MergeOpen test case --- bitcask_test.go | 75 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/bitcask_test.go b/bitcask_test.go index 144cd67..98350a4 100644 --- a/bitcask_test.go +++ b/bitcask_test.go @@ -194,7 +194,7 @@ func TestMaxValueSize(t *testing.T) { }) } -func TestMerge(t *testing.T) { +func TestOpenMerge(t *testing.T) { assert := assert.New(t) testdir, err := ioutil.TempDir("", "bitcask") @@ -207,7 +207,7 @@ func TestMerge(t *testing.T) { ) t.Run("Open", func(t *testing.T) { - db, err = Open(testdir, WithMaxDatafileSize(1024)) + db, err = Open(testdir, WithMaxDatafileSize(32)) assert.NoError(err) }) @@ -265,6 +265,77 @@ func TestMerge(t *testing.T) { }) } +func TestMergeOpen(t *testing.T) { + var ( + db *Bitcask + err error + ) + + assert := assert.New(t) + + testdir, err := ioutil.TempDir("", "bitcask") + assert.NoError(err) + + t.Run("Setup", func(t *testing.T) { + t.Run("Open", func(t *testing.T) { + db, err = Open(testdir, WithMaxDatafileSize(32)) + assert.NoError(err) + }) + + t.Run("Put", func(t *testing.T) { + for i := 0; i < 1024; i++ { + err = db.Put(string(i), []byte(strings.Repeat(" ", 1024))) + assert.NoError(err) + } + }) + + t.Run("Get", func(t *testing.T) { + for i := 0; i < 32; i++ { + err = db.Put(string(i), []byte(strings.Repeat(" ", 1024))) + assert.NoError(err) + val, err := db.Get(string(i)) + assert.NoError(err) + assert.Equal([]byte(strings.Repeat(" ", 1024)), val) + } + }) + + t.Run("Sync", func(t *testing.T) { + err = db.Sync() + assert.NoError(err) + }) + + t.Run("Close", func(t *testing.T) { + err = db.Close() + assert.NoError(err) + }) + }) + + t.Run("Merge", func(t *testing.T) { + t.Run("Merge", func(t *testing.T) { + err = Merge(testdir, true) + assert.NoError(err) + }) + + t.Run("Open", func(t *testing.T) { + db, err = Open(testdir) + assert.NoError(err) + }) + + t.Run("Get", func(t *testing.T) { + for i := 0; i < 32; i++ { + val, err := db.Get(string(i)) + assert.NoError(err) + assert.Equal([]byte(strings.Repeat(" ", 1024)), val) + } + }) + + t.Run("Close", func(t *testing.T) { + err = db.Close() + assert.NoError(err) + }) + }) +} + func TestConcurrent(t *testing.T) { var ( db *Bitcask