MCPcopy
hub / github.com/grafana/tempo / testPersistenceAndRecovery

Function testPersistenceAndRecovery

modules/backendscheduler/integration_test.go:160–203  ·  view source on GitHub ↗
(ctx context.Context, t *testing.T, originalScheduler *BackendScheduler, cfg Config, store storage.Store, limits overrides.Interface, rr backend.RawReader, ww backend.RawWriter)

Source from the content-addressed store, hash-verified

158}
159
160func testPersistenceAndRecovery(ctx context.Context, t *testing.T, originalScheduler *BackendScheduler, cfg Config, store storage.Store, limits overrides.Interface, rr backend.RawReader, ww backend.RawWriter) {
161 // Get initial jobs
162 initialJobs := originalScheduler.ListJobs()
163 require.NotEmpty(t, initialJobs, "Should have jobs to test persistence")
164
165 // Force a flush to disk
166 err := originalScheduler.work.FlushToLocal(ctx, originalScheduler.cfg.LocalWorkPath, nil) // Flush all
167 require.NoError(t, err)
168
169 // Create a new scheduler instance (simulating restart)
170 newScheduler, err := New(cfg, store, limits, rr, ww)
171 require.NoError(t, err)
172
173 err = newScheduler.starting(ctx)
174 require.NoError(t, err)
175
176 // Verify jobs were recovered
177 recoveredJobs := newScheduler.ListJobs()
178 require.Len(t, recoveredJobs, len(initialJobs))
179
180 // Verify job details match
181 initialJobMap := make(map[string]*work.Job)
182 for _, job := range initialJobs {
183 initialJobMap[job.ID] = job
184 }
185
186 for _, recoveredJob := range recoveredJobs {
187 originalJob, exists := initialJobMap[recoveredJob.ID]
188 require.True(t, exists, "Recovered job should exist in original jobs")
189 require.Equal(t, originalJob.GetStatus(), recoveredJob.GetStatus())
190 require.Equal(t, originalJob.Tenant(), recoveredJob.Tenant())
191 }
192
193 // Should have shard files
194 foundShardFiles := 0
195 for i := range work.ShardCount {
196 shardPath := newScheduler.filepathForShard(uint8(i))
197 if _, err := os.Stat(shardPath); err == nil {
198 foundShardFiles++
199 }
200 }
201 require.Greater(t, foundShardFiles, 0, "Should have at least some shard files")
202 t.Logf("Found %d shard files", foundShardFiles)
203}

Callers 1

TestShardedIntegrationFunction · 0.85

Calls 9

TenantMethod · 0.80
filepathForShardMethod · 0.80
ListJobsMethod · 0.65
FlushToLocalMethod · 0.65
LenMethod · 0.65
NewFunction · 0.50
startingMethod · 0.45
EqualMethod · 0.45
GetStatusMethod · 0.45

Tested by

no test coverage detected