优化结构

This commit is contained in:
Yvan
2026-08-23 02:36:58 +08:00
parent 7d89e2ea4d
commit 40632c5756
50 changed files with 408 additions and 115 deletions
+36
View File
@@ -272,3 +272,39 @@ func TestStopCancelsAndWaitsForActiveRuns(t *testing.T) {
t.Fatal("scheduler accepted a new run after Stop()")
}
}
func TestStartReturnsAfterStop(t *testing.T) {
scheduler := newTestTaskScheduler(&workerTaskRepo{})
started := make(chan error, 1)
go func() {
started <- scheduler.Start(context.Background())
}()
deadline := time.Now().Add(time.Second)
for {
scheduler.ctxMu.RLock()
ready := scheduler.cancel != nil
scheduler.ctxMu.RUnlock()
if ready {
break
}
if time.Now().After(deadline) {
t.Fatal("scheduler did not start")
}
time.Sleep(time.Millisecond)
}
stopCtx, stopCancel := context.WithTimeout(context.Background(), time.Second)
defer stopCancel()
if err := scheduler.Stop(stopCtx); err != nil {
t.Fatalf("Stop() error = %v", err)
}
select {
case err := <-started:
if err != nil {
t.Fatalf("Start() error = %v", err)
}
case <-time.After(time.Second):
t.Fatal("Start() did not return after Stop()")
}
}