8 "github.com/onsi/gomega"
10 "github.com/syndtr/goleveldb/leveldb/testutil"
13 type testFileRec struct {
18 func TestVersionStaging(t *testing.T) {
19 gomega.RegisterTestingT(t)
20 stor := testutil.NewStorage()
22 s, err := newSession(stor, nil)
30 tmp := make([]byte, 4)
31 mik := func(i uint64) []byte {
32 binary.BigEndian.PutUint32(tmp, uint32(i))
33 return []byte(makeInternalKey(nil, tmp, 0, keyTypeVal))
36 for i, x := range []struct {
37 add, del []testFileRec
153 rec := &sessionRecord{}
154 for _, f := range x.add {
155 ik := mik(uint64(f.num))
156 rec.addTable(f.level, f.num, 1, ik, ik)
158 for _, f := range x.del {
159 rec.delTable(f.level, f.num)
164 if len(v.levels) != len(x.levels) {
165 t.Fatalf("#%d: invalid level count: want=%d got=%d", i, len(x.levels), len(v.levels))
167 for j, want := range x.levels {
168 tables := v.levels[j]
169 if len(want) != len(tables) {
170 t.Fatalf("#%d.%d: invalid tables count: want=%d got=%d", i, j, len(want), len(tables))
172 got := make([]int64, len(tables))
173 for k, t := range tables {
176 if !reflect.DeepEqual(want, got) {
177 t.Fatalf("#%d.%d: invalid tables: want=%v got=%v", i, j, want, got)