(tb testing.TB, txid ltx.TXID, pageSize uint32, pgnos []uint32, fill byte)
| 985 | } |
| 986 | |
| 987 | func buildLTXFixtureWithPages(tb testing.TB, txid ltx.TXID, pageSize uint32, pgnos []uint32, fill byte) *ltxFixture { |
| 988 | tb.Helper() |
| 989 | if len(pgnos) == 0 { |
| 990 | tb.Fatalf("pgnos required") |
| 991 | } |
| 992 | if txid == 1 { |
| 993 | if len(pgnos) == 0 || pgnos[0] != 1 { |
| 994 | tb.Fatalf("snapshot fixture must start at page 1") |
| 995 | } |
| 996 | } |
| 997 | |
| 998 | var buf bytes.Buffer |
| 999 | enc, err := ltx.NewEncoder(&buf) |
| 1000 | if err != nil { |
| 1001 | tb.Fatalf("new encoder: %v", err) |
| 1002 | } |
| 1003 | maxPg := uint32(0) |
| 1004 | for _, pg := range pgnos { |
| 1005 | if pg > maxPg { |
| 1006 | maxPg = pg |
| 1007 | } |
| 1008 | } |
| 1009 | if maxPg == 0 { |
| 1010 | maxPg = 1 |
| 1011 | } |
| 1012 | hdr := ltx.Header{ |
| 1013 | Version: ltx.Version, |
| 1014 | PageSize: pageSize, |
| 1015 | Commit: maxPg, |
| 1016 | MinTXID: txid, |
| 1017 | MaxTXID: txid, |
| 1018 | Timestamp: time.Now().UnixMilli(), |
| 1019 | Flags: ltx.HeaderFlagNoChecksum, |
| 1020 | } |
| 1021 | if err := enc.EncodeHeader(hdr); err != nil { |
| 1022 | tb.Fatalf("encode header: %v", err) |
| 1023 | } |
| 1024 | for _, pg := range pgnos { |
| 1025 | if pg == 0 { |
| 1026 | pg = 1 |
| 1027 | } |
| 1028 | page := bytes.Repeat([]byte{fill}, int(pageSize)) |
| 1029 | if err := enc.EncodePage(ltx.PageHeader{Pgno: pg}, page); err != nil { |
| 1030 | tb.Fatalf("encode page %d: %v", pg, err) |
| 1031 | } |
| 1032 | } |
| 1033 | if err := enc.Close(); err != nil { |
| 1034 | tb.Fatalf("close encoder: %v", err) |
| 1035 | } |
| 1036 | |
| 1037 | info := <x.FileInfo{ |
| 1038 | Level: 0, |
| 1039 | MinTXID: txid, |
| 1040 | MaxTXID: txid, |
| 1041 | Size: int64(buf.Len()), |
| 1042 | CreatedAt: time.Now().UTC(), |
| 1043 | } |
| 1044 |
no test coverage detected