X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/baf7a940be8927278e3b4b87e7366cebfc16532f..209df5ce842e24b3c6e99a322fe3d98ab2df720b:/syncer_test.go diff --git a/syncer_test.go b/syncer_test.go index 09b2bb4..16f3345 100644 --- a/syncer_test.go +++ b/syncer_test.go @@ -28,6 +28,7 @@ func TestFlushWaitsForASyncThatStartsAfterTheWrite(t *testing.T) { // This write comes during the first sync, so that sync does not cover // it. s.Written() + flushed := make(chan error) go func() { flushed <- s.Flush(t.Context()) @@ -35,6 +36,7 @@ func TestFlushWaitsForASyncThatStartsAfterTheWrite(t *testing.T) { gate.Release() gate.WaitStarted(t, 2) + select { case err := <-flushed: t.Fatalf("flush returned before the second sync: %v", err) @@ -52,6 +54,7 @@ func TestOneSyncCoversTheWritesDuringTheSyncBeforeIt(t *testing.T) { s := newSyncer(gate.Sync) s.Written() gate.WaitStarted(t, 1) + for range 10 { s.Written() } @@ -86,7 +89,7 @@ func TestAFailedSyncFailsEachLaterFlush(t *testing.T) { } func TestMemoryFlushSyncsTheChat(t *testing.T) { - memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer()) + memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer(), discardLog()) require.NoError(t, err) _, err = memory.Append("tool", "shell: ls") @@ -100,9 +103,10 @@ func TestKilledWriterLosesNoLoggedMessage(t *testing.T) { for round := range 3 { acknowledged := syncerRunKilledWriter(t, root, 200+100*round) - memory, err := openMemory(t.Context(), root, time.Now, newFakeSummarizer()) + memory, err := openMemory(t.Context(), root, time.Now, newFakeSummarizer(), discardLog()) require.NoError(t, err) require.GreaterOrEqual(t, memory.log.Len(), acknowledged) + for id := range memory.log.Len() { message, err := memory.log.Message(id) require.NoError(t, err) @@ -124,7 +128,7 @@ func TestWriterChild(t *testing.T) { t.Skip("runs only as a child process") } - memory, err := openMemory(t.Context(), root, time.Now, newFakeSummarizer()) + memory, err := openMemory(t.Context(), root, time.Now, newFakeSummarizer(), discardLog()) require.NoError(t, err) for id := memory.log.Len(); ; id++ { @@ -146,10 +150,12 @@ type SyncerGatedSync struct { func (g *SyncerGatedSync) Sync() error { g.mutex.Lock() + g.count++ g.mutex.Unlock() g.started <- struct{}{} + <-g.release return nil @@ -167,6 +173,7 @@ func (g *SyncerGatedSync) WaitStarted(t *testing.T, n int) { // Release lets the running sync end. func (g *SyncerGatedSync) Release() { <-g.started + g.release <- struct{}{} } @@ -206,6 +213,7 @@ func syncerRunKilledWriter(t *testing.T, root string, count int) int { } require.NoError(t, command.Process.Kill()) + for scanner.Scan() { _, err = strconv.Atoi(strings.TrimSpace(scanner.Text())) if err == nil {