test(snapshot): stabilize large history publication
- commit
- 47d7f8dee9b55d2afd8ee836117c04b069fcd627
- author
- brice · · 2026-07-27 17:15 UTC
- committer
- brice · · 2026-07-27 17:17 UTC
- parent
- d7ce2f4
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
1 file · +4 -6
M internal/usecase/daemon/performance_benchmark_test.go +4 -6
| @@ -64,9 +64,9 @@ func TestIncrementalSnapshotMetricsWriteNoUnchangedHistoryBlobsAndBoundCache(t * | |||
| 64 | 64 | func TestDaemonSnapshotDoesNotResupplyUnchangedTenThousandChunkHistory(t *testing.T) { | |
| 65 | 65 | fixture := newPerformanceFixture(t, performanceConfig{size: domain.Size{Cols: 120, Rows: 40}, panes: 1, historyRows: 10_000}) | |
| 66 | 66 | ||
| 67 | - | markSnapshotDirty(fixture.sess) | |
| 68 | - | require.True(t, fixture.d.scheduleSnapshot(fixture.sess)) | |
| 69 | - | awaitSnapshotClean(t, fixture.sess) | |
| 67 | + | // This contract concerns capture and publication bytes, not queue latency. | |
| 68 | + | // Publish synchronously so the 10k-row setup cannot race the test deadline. | |
| 69 | + | publishBenchmarkSnapshot(t, fixture, 1) | |
| 70 | 70 | ||
| 71 | 71 | var copies atomic.Uint64 | |
| 72 | 72 | fixture.sess.snapshotMu.Lock() | |
| @@ -83,9 +83,7 @@ func TestDaemonSnapshotDoesNotResupplyUnchangedTenThousandChunkHistory(t *testin | |||
| 83 | 83 | for i, r := range "changed" { | |
| 84 | 84 | require.Equalf(t, r, frame.At(i, 0).Rune, "fixture must overwrite at column %d", i) | |
| 85 | 85 | } | |
| 86 | - | markSnapshotDirty(fixture.sess) | |
| 87 | - | require.True(t, fixture.d.scheduleFinalSnapshot(fixture.sess)) | |
| 88 | - | awaitSnapshotClean(t, fixture.sess) | |
| 86 | + | publishBenchmarkSnapshot(t, fixture, 2) | |
| 89 | 87 | ||
| 90 | 88 | metrics := fixture.snapshots.metrics() | |
| 91 | 89 | require.Equal(t, uint64(1), metrics.writes) | |
| @@ -64,9 +64,9 @@ func TestIncrementalSnapshotMetricsWriteNoUnchangedHistoryBlobsAndBoundCache(t * | |||||
| 64 | func TestDaemonSnapshotDoesNotResupplyUnchangedTenThousandChunkHistory(t *testing.T) { | 64 | func TestDaemonSnapshotDoesNotResupplyUnchangedTenThousandChunkHistory(t *testing.T) { | ||
| 65 | fixture := newPerformanceFixture(t, performanceConfig{size: domain.Size{Cols: 120, Rows: 40}, panes: 1, historyRows: 10_000}) | 65 | fixture := newPerformanceFixture(t, performanceConfig{size: domain.Size{Cols: 120, Rows: 40}, panes: 1, historyRows: 10_000}) | ||
| 66 | 66 | ||||
| 67 | - | markSnapshotDirty(fixture.sess) | 67 | + | // This contract concerns capture and publication bytes, not queue latency. |
| 68 | - | require.True(t, fixture.d.scheduleSnapshot(fixture.sess)) | 68 | + | // Publish synchronously so the 10k-row setup cannot race the test deadline. |
| 69 | - | awaitSnapshotClean(t, fixture.sess) | 69 | + | publishBenchmarkSnapshot(t, fixture, 1) |
| 70 | 70 | ||||
| 71 | var copies atomic.Uint64 | 71 | var copies atomic.Uint64 | ||
| 72 | fixture.sess.snapshotMu.Lock() | 72 | fixture.sess.snapshotMu.Lock() | ||
| @@ -83,9 +83,7 @@ func TestDaemonSnapshotDoesNotResupplyUnchangedTenThousandChunkHistory(t *testin | |||||
| 83 | for i, r := range "changed" { | 83 | for i, r := range "changed" { | ||
| 84 | require.Equalf(t, r, frame.At(i, 0).Rune, "fixture must overwrite at column %d", i) | 84 | require.Equalf(t, r, frame.At(i, 0).Rune, "fixture must overwrite at column %d", i) | ||
| 85 | } | 85 | } | ||
| 86 | - | markSnapshotDirty(fixture.sess) | 86 | + | publishBenchmarkSnapshot(t, fixture, 2) |
| 87 | - | require.True(t, fixture.d.scheduleFinalSnapshot(fixture.sess)) | |||
| 88 | - | awaitSnapshotClean(t, fixture.sess) | |||
| 89 | 87 | ||||
| 90 | metrics := fixture.snapshots.metrics() | 88 | metrics := fixture.snapshots.metrics() | ||
| 91 | require.Equal(t, uint64(1), metrics.writes) | 89 | require.Equal(t, uint64(1), metrics.writes) | ||