MCPcopy
hub / github.com/etcd-io/bbolt / TestMethodPage

Function TestMethodPage

db_whitebox_test.go:58–113  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

56}
57
58func TestMethodPage(t *testing.T) {
59 testCases := []struct {
60 name string
61 readonly bool
62 preLoadFreePage bool
63 expectedError error
64 }{
65 {
66 name: "write mode",
67 readonly: false,
68 preLoadFreePage: false,
69 expectedError: nil,
70 },
71 {
72 name: "readonly mode with preloading free pages",
73 readonly: true,
74 preLoadFreePage: true,
75 expectedError: nil,
76 },
77 {
78 name: "readonly mode without preloading free pages",
79 readonly: true,
80 preLoadFreePage: false,
81 expectedError: errors.ErrFreePagesNotLoaded,
82 },
83 }
84
85 fileName, err := prepareData(t)
86 require.NoError(t, err)
87
88 for _, tc := range testCases {
89 tc := tc
90 t.Run(tc.name, func(t *testing.T) {
91 db, err := Open(fileName, 0666, &Options{
92 ReadOnly: tc.readonly,
93 PreLoadFreelist: tc.preLoadFreePage,
94 })
95 require.NoError(t, err)
96 defer db.Close()
97
98 tx, err := db.Begin(!tc.readonly)
99 require.NoError(t, err)
100
101 _, err = tx.Page(0)
102 require.Equal(t, tc.expectedError, err)
103
104 if tc.readonly {
105 require.NoError(t, tx.Rollback())
106 } else {
107 require.NoError(t, tx.Commit())
108 }
109
110 require.NoError(t, db.Close())
111 })
112 }
113}
114
115func prepareData(t *testing.T) (string, error) {

Callers

nothing calls this directly

Calls 8

prepareDataFunction · 0.85
OpenFunction · 0.85
RunMethod · 0.80
BeginMethod · 0.80
PageMethod · 0.80
CommitMethod · 0.80
RollbackMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected