mirror of
https://github.com/etcd-io/bbolt.git
synced 2025-05-31 11:42:30 +00:00
add test case TestOpenWithPreLoadFreelist
Signed-off-by: Benjamin Wang <wachao@vmware.com>
This commit is contained in:
parent
6bc57389f0
commit
06c66acf48
68
db_whitebox_test.go
Normal file
68
db_whitebox_test.go
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package bbolt
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestOpenWithPreLoadFreelist(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
readonly bool
|
||||||
|
preLoadFreePage bool
|
||||||
|
expectedFreePagesLoaded bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "write mode always load free pages",
|
||||||
|
readonly: false,
|
||||||
|
preLoadFreePage: false,
|
||||||
|
expectedFreePagesLoaded: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "readonly mode load free pages when flag set",
|
||||||
|
readonly: true,
|
||||||
|
preLoadFreePage: true,
|
||||||
|
expectedFreePagesLoaded: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "readonly mode doesn't load free pages when flag not set",
|
||||||
|
readonly: true,
|
||||||
|
preLoadFreePage: false,
|
||||||
|
expectedFreePagesLoaded: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
fileName, err := prepareData(t)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
db, err := Open(fileName, 0666, &Options{
|
||||||
|
ReadOnly: tc.readonly,
|
||||||
|
PreLoadFreelist: tc.preLoadFreePage,
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
assert.Equal(t, tc.expectedFreePagesLoaded, db.freelist != nil)
|
||||||
|
|
||||||
|
assert.NoError(t, db.Close())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func prepareData(t *testing.T) (string, error) {
|
||||||
|
fileName := filepath.Join(t.TempDir(), "db")
|
||||||
|
db, err := Open(fileName, 0666, nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if err := db.Close(); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return fileName, nil
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user