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:
parent
803b08949e
commit
4dfe42cb3b
@ -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
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user