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