createTestLTXFile creates an LTX file with initial data for testing.
(t *testing.T, client *writeTestReplicaClient, txid ltx.TXID, pageSize uint32, commit uint32, pages map[uint32][]byte)
| 144 | |
| 145 | // createTestLTXFile creates an LTX file with initial data for testing. |
| 146 | func createTestLTXFile(t *testing.T, client *writeTestReplicaClient, txid ltx.TXID, pageSize uint32, commit uint32, pages map[uint32][]byte) { |
| 147 | t.Helper() |
| 148 | |
| 149 | var buf bytes.Buffer |
| 150 | enc, err := ltx.NewEncoder(&buf) |
| 151 | if err != nil { |
| 152 | t.Fatal(err) |
| 153 | } |
| 154 | |
| 155 | if err := enc.EncodeHeader(ltx.Header{ |
| 156 | Version: ltx.Version, |
| 157 | Flags: ltx.HeaderFlagNoChecksum, |
| 158 | PageSize: pageSize, |
| 159 | Commit: commit, |
| 160 | MinTXID: txid, |
| 161 | MaxTXID: txid, |
| 162 | Timestamp: time.Now().UnixMilli(), |
| 163 | }); err != nil { |
| 164 | t.Fatal(err) |
| 165 | } |
| 166 | |
| 167 | // Sort page numbers to ensure proper encoding order (page 1 must be first for snapshots) |
| 168 | pgnos := make([]uint32, 0, len(pages)) |
| 169 | for pgno := range pages { |
| 170 | pgnos = append(pgnos, pgno) |
| 171 | } |
| 172 | sort.Slice(pgnos, func(i, j int) bool { return pgnos[i] < pgnos[j] }) |
| 173 | |
| 174 | for _, pgno := range pgnos { |
| 175 | if err := enc.EncodePage(ltx.PageHeader{Pgno: pgno}, pages[pgno]); err != nil { |
| 176 | t.Fatal(err) |
| 177 | } |
| 178 | } |
| 179 | |
| 180 | if err := enc.Close(); err != nil { |
| 181 | t.Fatal(err) |
| 182 | } |
| 183 | |
| 184 | client.mu.Lock() |
| 185 | key := ltxKey(0, txid, txid) |
| 186 | client.ltxData[key] = buf.Bytes() |
| 187 | client.ltxFiles[0] = append(client.ltxFiles[0], <x.FileInfo{ |
| 188 | Level: 0, |
| 189 | MinTXID: txid, |
| 190 | MaxTXID: txid, |
| 191 | CreatedAt: time.Now(), |
| 192 | Size: int64(buf.Len()), |
| 193 | }) |
| 194 | client.mu.Unlock() |
| 195 | } |
| 196 | |
| 197 | // setupWriteableVFSFile creates a VFSFile with write support enabled and a buffer file. |
| 198 | func setupWriteableVFSFile(t *testing.T, client *writeTestReplicaClient) *VFSFile { |
no test coverage detected