forked from etcd-io/bbolt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
allocate_test.go
39 lines (32 loc) · 909 Bytes
/
allocate_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package bbolt
import (
"testing"
"go.etcd.io/bbolt/internal/common"
"go.etcd.io/bbolt/internal/freelist"
)
func TestTx_allocatePageStats(t *testing.T) {
for n, f := range map[string]freelist.Interface{"hashmap": freelist.NewHashMapFreelist(), "array": freelist.NewArrayFreelist()} {
t.Run(n, func(t *testing.T) {
ids := []common.Pgid{2, 3}
f.Init(ids)
tx := &Tx{
db: &DB{
freelist: f,
pageSize: common.DefaultPageSize,
},
meta: &common.Meta{},
pages: make(map[common.Pgid]*common.Page),
}
txStats := tx.Stats()
prePageCnt := txStats.GetPageCount()
allocateCnt := f.FreeCount()
if _, err := tx.allocate(allocateCnt); err != nil {
t.Fatal(err)
}
txStats = tx.Stats()
if txStats.GetPageCount() != prePageCnt+int64(allocateCnt) {
t.Errorf("Allocated %d but got %d page in stats", allocateCnt, txStats.GetPageCount())
}
})
}
}