Something went wrong. Try again.
small gleam coding and persistent agent daemon with a detachable cli and a canvas ui forked from okami.mom/albedo
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102//go:build unix
package e2e
import ( "context" "errors" "syscall" "testing" "time"
"albedo/cli/internal/daemon")
func TestDaemonStartsFromCrashedManifest(t *testing.T) { old := suite.daemonPID if err := syscall.Kill(old, syscall.SIGKILL); err != nil { t.Fatal(err) } if !awaitExit(old, 5*time.Second) { t.Fatal("crashed daemon process did not exit") } cli(t, "daemon") snap, err := readDaemonSnapshot(suite.home) if err != nil { t.Fatal(err) } suite.daemonPID = snap.Pid if err := suite.conn.Refresh(t.Context()); err != nil { t.Fatal(err) } if snap.Pid == old { t.Fatal("daemon did not replace the crashed daemon") } cli(t, "sessions")}
func TestDaemonStartDuringShutdown(t *testing.T) { for range 5 { old := suite.daemonPID snapshot, err := readDaemonSnapshot(suite.home) if err != nil { t.Fatal(err) } current := daemon.NewConnection(snapshot, nil) defer current.HTTPClient().CloseIdleConnections() if err = daemon.StopDaemon(t.Context(), current, false); err != nil { t.Fatal(err) } ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) for { server, probeErr := daemon.ProbeServer(ctx, current) if ctx.Err() != nil { cancel() t.Fatal("daemon never started shutting down") } if probeErr != nil || server.State == "draining" { break } time.Sleep(time.Millisecond) } cancel() cli(t, "daemon") snap, err := readDaemonSnapshot(suite.home) if err != nil { t.Fatal(err) } suite.daemonPID = snap.Pid if err := suite.conn.Refresh(t.Context()); err != nil { t.Fatal(err) } if snap.Pid == old { t.Fatal("daemon attached to the daemon being shut down") } cli(t, "sessions") }}
func TestDaemonStopThenStartImmediately(t *testing.T) { for range 5 { old := suite.daemonPID cli(t, "daemon", "--stop") exited := errors.Is(syscall.Kill(old, 0), syscall.ESRCH) cli(t, "daemon") snap, err := readDaemonSnapshot(suite.home) if err != nil { t.Fatal(err) } suite.daemonPID = snap.Pid if err := suite.conn.Refresh(t.Context()); err != nil { t.Fatal(err) } if !exited { t.Fatalf("daemon --stop returned while daemon %d was still running", old) } if snap.Pid == old { t.Fatal("daemon reused the stopped daemon instead of starting a replacement") } cli(t, "sessions") }}