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)
|
return b.curr.Write(e)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bitcask) reopen() error {
|
func (b *Bitcask) Reopen() error {
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
defer b.mu.Unlock()
|
defer b.mu.Unlock()
|
||||||
|
|
||||||
@ -383,7 +383,7 @@ func (b *Bitcask) Merge() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// And finally reopen the database
|
// And finally reopen the database
|
||||||
return b.reopen()
|
return b.Reopen()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open opens the database at the given path with optional options.
|
// 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
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := bitcask.reopen(); err != nil {
|
if err := bitcask.Reopen(); err != nil {
|
||||||
return nil, err
|
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) {
|
func TestDeletedKeys(t *testing.T) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user