package archivex import ( "context" "io/ioutil" "os" "testing" ) func TestStoreFileLifecycle(t *testing.T) { store := NewStore() tmp, err := ioutil.TempFile("", "starlog-archivex-*.log") if err != nil { t.Fatalf("TempFile failed: %v", err) } defer os.Remove(tmp.Name()) defer tmp.Close() rec := FileRecord{FullPath: tmp.Name(), Pointer: tmp} if err := store.SetFile("id-1", rec); err != nil { t.Fatalf("SetFile failed: %v", err) } got, ok := store.GetFile("id-1") if !ok { t.Fatalf("GetFile should return stored record") } if got.FullPath != rec.FullPath || got.Pointer != rec.Pointer { t.Fatalf("unexpected file record: %+v", got) } if err := store.DeleteFile("id-1"); err != nil { t.Fatalf("DeleteFile failed: %v", err) } if _, ok := store.GetFile("id-1"); ok { t.Fatalf("record should not exist after DeleteFile") } } func TestStoreRunnerLifecycle(t *testing.T) { store := NewStore() ctx, cancel := context.WithCancel(context.Background()) defer cancel() runner := &Runner{Cancel: cancel, Done: make(chan struct{})} if err := store.SetRunner("r-1", runner); err != nil { t.Fatalf("SetRunner failed: %v", err) } got, ok := store.GetRunner("r-1") if !ok || got != runner { t.Fatalf("GetRunner should return stored runner") } if err := store.DeleteRunner("r-1"); err != nil { t.Fatalf("DeleteRunner failed: %v", err) } if _, ok := store.GetRunner("r-1"); ok { t.Fatalf("runner should not exist after DeleteRunner") } _ = ctx }