X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/2124c559da8f164a43a3da987b399b6ac6125035..195c3fbb075383ac47bba310eb701b02774e8d10:/daemon_message_test.go?ds=sidebyside diff --git a/daemon_message_test.go b/daemon_message_test.go index 060faf5..5574172 100644 --- a/daemon_message_test.go +++ b/daemon_message_test.go @@ -2,7 +2,6 @@ package main import ( "context" - "encoding/json" "errors" "net/http" "os" @@ -558,95 +557,3 @@ func TestChildScheduleWakesOnlyItsOwner(t *testing.T) { require.Contains(t, test.events[1].LastEvent("work").Text, "Check the plants.") require.Equal(t, scheduleSource, test.events[1].LastEvent("work").Source) } - -// DaemonMessageTest owns test agents and the loops selected by Start. -type DaemonMessageTest struct { - agents DaemonAgents - loops []*TurnLoop - events []*TurnEventRecorder - messages *DaemonMessages - logs *SyncBuffer - cancel context.CancelFunc - done []chan error -} - -func (r *DaemonMessageTest) Start(t *testing.T, indices ...int) { - t.Helper() - - ctx, cancel := context.WithCancel(t.Context()) - r.cancel = cancel - for _, index := range indices { - done := make(chan error, 1) - r.done = append(r.done, done) - go func() { - done <- r.loops[index].Run(ctx) - }() - } -} - -func (r *DaemonMessageTest) Queue(t *testing.T) DaemonMessageFile { - t.Helper() - - data, err := os.ReadFile(r.messages.path) - require.NoError(t, err) - - var file DaemonMessageFile - - require.NoError(t, json.Unmarshal(data, &file)) - - return file -} - -func (r *DaemonMessageTest) Close(t *testing.T) { - t.Helper() - - if r.cancel != nil { - r.cancel() - - for _, done := range r.done { - require.ErrorIs(t, <-done, context.Canceled) - } - - r.cancel = nil - r.done = nil - } - - require.NoError(t, r.agents.Close()) - - r.agents = nil -} - -func newDaemonMessageTest(t *testing.T, dir string, server *ModelFake) *DaemonMessageTest { - t.Helper() - - _, err := os.Stat(filepath.Join(dir, daemonAgentDirName, "children")) - if errors.Is(err, os.ErrNotExist) { - daemonChildConfig(t, dir, "Garden") - daemonChildConfig(t, dir, "Library") - } else { - require.NoError(t, err) - } - - test := &DaemonMessageTest{ - logs: &SyncBuffer{}, - } - test.agents, err = openDaemonAgents(t.Context(), dir, server.URL, ModelAPIKey(modelTestKey), defaultConfig().Compactor, newTestClock().Now, daemonTestLogger(test.logs)) - require.NoError(t, err) - t.Cleanup(func() { - test.Close(t) - }) - - for _, agent := range test.agents { - events := &TurnEventRecorder{} - loop, err := agent.Loop(nil, events.Add) - require.NoError(t, err) - - test.events = append(test.events, events) - test.loops = append(test.loops, loop) - } - - test.messages, err = openDaemonMessages(test.loops) - require.NoError(t, err) - - return test -}