(t *testing.T)
| 323 | } |
| 324 | |
| 325 | func TestBoltLastEventID(t *testing.T) { |
| 326 | t.Parallel() |
| 327 | |
| 328 | path := "test-" + t.Name() + ".db" |
| 329 | db, err := bolt.Open(path, 0o600, nil) |
| 330 | |
| 331 | t.Cleanup(func() { |
| 332 | _ = os.Remove(path) |
| 333 | }) |
| 334 | require.NoError(t, err) |
| 335 | |
| 336 | require.NoError(t, db.Update(func(tx *bolt.Tx) error { |
| 337 | bucket, err := tx.CreateBucketIfNotExists([]byte(defaultBoltBucketName)) |
| 338 | require.NoError(t, err) |
| 339 | |
| 340 | seq, err := bucket.NextSequence() |
| 341 | require.NoError(t, err) |
| 342 | |
| 343 | prefix := make([]byte, 8) |
| 344 | binary.BigEndian.PutUint64(prefix, seq) |
| 345 | |
| 346 | // The sequence value is prepended to the update id to create an ordered list |
| 347 | key := bytes.Join([][]byte{prefix, []byte("foo")}, []byte{}) |
| 348 | |
| 349 | // The DB is append-only |
| 350 | bucket.FillPercent = 1 |
| 351 | |
| 352 | return bucket.Put(key, []byte("invalid")) |
| 353 | })) |
| 354 | require.NoError(t, db.Close()) |
| 355 | |
| 356 | transport := createBoltTransport(t, 0, 0) |
| 357 | |
| 358 | lastEventID, _, _ := transport.GetSubscribers(t.Context()) |
| 359 | assert.Equal(t, "foo", lastEventID) |
| 360 | } |
nothing calls this directly
no test coverage detected