(ctx context.Context, t *testing.T, originalScheduler *BackendScheduler, cfg Config, store storage.Store, limits overrides.Interface, rr backend.RawReader, ww backend.RawWriter)
| 158 | } |
| 159 | |
| 160 | func 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 | } |
no test coverage detected