feat: 自动清理终态 Pod 执行器
This commit is contained in:
@@ -18,6 +18,7 @@ type fakeAPI struct {
|
||||
entry IdentityEntry
|
||||
entryGone string
|
||||
deleted string
|
||||
marked map[string]string
|
||||
}
|
||||
|
||||
func (a *fakeAPI) ListPods(_ context.Context, _ string, selector string) ([]Pod, error) {
|
||||
@@ -32,6 +33,10 @@ func (a *fakeAPI) DeletePod(_ context.Context, _, name string) error {
|
||||
a.deleted = name
|
||||
return nil
|
||||
}
|
||||
func (a *fakeAPI) LabelPod(_ context.Context, _, _ string, labels map[string]string) error {
|
||||
a.marked = labels
|
||||
return nil
|
||||
}
|
||||
func (a *fakeAPI) EnsureIdentityEntry(_ context.Context, entry IdentityEntry) error {
|
||||
a.entry = entry
|
||||
return nil
|
||||
@@ -119,6 +124,27 @@ func TestDeleteRemovesIdentityBeforePod(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestTerminalMarkerAndCleanupUseBackendState(t *testing.T) {
|
||||
api := &fakeAPI{pods: []Pod{
|
||||
{Name: "running", UID: "running-uid", Phase: "Running"},
|
||||
{Name: "finished", UID: "finished-uid", Phase: "Succeeded"},
|
||||
}}
|
||||
backend := backend(api)
|
||||
if err := backend.MarkTerminal(context.Background(), "gitea-task-42"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if api.marked[terminalLabel] != "true" {
|
||||
t.Fatalf("labels = %#v", api.marked)
|
||||
}
|
||||
cleaned, err := backend.CleanupTerminated(context.Background())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if api.selector != terminalLabel+"=true" || cleaned != 1 || api.deleted != "finished" || api.entryGone != "finished" {
|
||||
t.Fatalf("selector=%q cleaned=%d deleted=%q entry=%q", api.selector, cleaned, api.deleted, api.entryGone)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFindRejectsDuplicatePods(t *testing.T) {
|
||||
api := &fakeAPI{pods: []Pod{{Name: "one"}, {Name: "two"}}}
|
||||
if _, err := backend(api).Find(context.Background(), "gitea-task-42"); err == nil {
|
||||
|
||||
Reference in New Issue
Block a user