1
0
mirror of https://github.com/taigrr/bitcask synced 2025-01-18 04:03:17 -08:00

Export method reopen (#113)

This commit is contained in:
Leonid Zharikov 2019-11-16 14:08:45 +03:00 committed by James Mills
parent 803b08949e
commit 4dfe42cb3b
2 changed files with 60 additions and 3 deletions

View File

@ -280,7 +280,7 @@ func (b *Bitcask) put(key, value []byte) (int64, int64, error) {
return b.curr.Write(e)
}
func (b *Bitcask) reopen() error {
func (b *Bitcask) Reopen() error {
b.mu.Lock()
defer b.mu.Unlock()
@ -383,7 +383,7 @@ func (b *Bitcask) Merge() error {
}
// And finally reopen the database
return b.reopen()
return b.Reopen()
}
// Open opens the database at the given path with optional options.
@ -436,7 +436,7 @@ func Open(path string, options ...Option) (*Bitcask, error) {
return nil, err
}
if err := bitcask.reopen(); err != nil {
if err := bitcask.Reopen(); err != nil {
return nil, err
}

View File

@ -133,6 +133,63 @@ func TestAll(t *testing.T) {
})
}
func TestReopen(t *testing.T) {
assert := assert.New(t)
testdir, err := ioutil.TempDir("", "bitcask")
assert.NoError(err)
t.Run("Reopen", func(t *testing.T) {
var (
db *Bitcask
err error
)
t.Run("Open", func(t *testing.T) {
db, err = Open(testdir)
assert.NoError(err)
})
t.Run("Put", func(t *testing.T) {
err = db.Put([]byte("foo"), []byte("bar"))
assert.NoError(err)
})
t.Run("Get", func(t *testing.T) {
val, err := db.Get([]byte("foo"))
assert.NoError(err)
assert.Equal([]byte("bar"), val)
})
t.Run("Reopen", func(t *testing.T) {
err = db.Reopen()
assert.NoError(err)
})
t.Run("GetAfterReopen", func(t *testing.T) {
val, err := db.Get([]byte("foo"))
assert.NoError(err)
assert.Equal([]byte("bar"), val)
})
t.Run("PutAfterReopen", func(t *testing.T) {
err = db.Put([]byte("zzz"), []byte("foo"))
assert.NoError(err)
})
t.Run("GetAfterReopenAndPut", func(t *testing.T) {
val, err := db.Get([]byte("zzz"))
assert.NoError(err)
assert.Equal([]byte("foo"), val)
})
t.Run("Close", func(t *testing.T) {
err = db.Close()
assert.NoError(err)
})
})
}
func TestDeletedKeys(t *testing.T) {
assert := assert.New(t)