X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/e754189bc2aa32ec43a5dc4ee01d7a6c6e4e388c..08e0085ca971f59da8b3ecda532ffe6203b6c68c:/memory_test.go?ds=sidebyside
diff --git a/memory_test.go b/memory_test.go
index e868220..8c34149 100644
--- a/memory_test.go
+++ b/memory_test.go
@@ -11,6 +11,7 @@ import (
"strings"
"sync"
"testing"
+ "time"
"unicode/utf8"
"github.com/stretchr/testify/require"
@@ -105,13 +106,17 @@ func TestMemoryRunsAtMostEightBuilds(t *testing.T) {
})
require.Equal(t, []nodeKey{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}}, running)
+ require.Eventually(t, func() bool {
+ return summarizer.Active() == maxBuilds
+ }, 10*time.Second, time.Millisecond)
+
close(summarizer.gate)
require.NoError(t, memory.Wait(t.Context()))
require.Equal(t, maxBuilds, summarizer.peak)
for level, count := range []int{12, 6, 3, 1} {
for index := range count {
- require.True(t, memory.tree.Built(level, index), "node (%d, %d)", level, index)
+ require.True(t, isBuilt(t, memory.tree, level, index), "node (%d, %d)", level, index)
}
}
}
@@ -136,14 +141,14 @@ func TestMemoryStartsALeafAfterFewerThanEightUnbuilt(t *testing.T) {
require.Less(t, task.Index, 8)
}
- require.False(t, memory.tree.Built(0, 8))
+ require.False(t, isBuilt(t, memory.tree, 0, 8))
summarizer.SetFailing(false)
_, err = memory.Append("user", "retry")
require.NoError(t, err)
require.NoError(t, memory.Wait(t.Context()))
- require.True(t, memory.tree.Built(0, 8))
- require.True(t, memory.tree.Built(3, 0))
+ require.True(t, isBuilt(t, memory.tree, 0, 8))
+ require.True(t, isBuilt(t, memory.tree, 3, 0))
}
func TestMemoryMergesAfterBothHalves(t *testing.T) {
@@ -164,12 +169,12 @@ func TestMemoryMergesAfterBothHalves(t *testing.T) {
require.NoError(t, memory.Wait(t.Context()))
require.Len(t, summarizer.Tasks(), 3)
- left, _ := memory.tree.Node(0, 0)
- right, _ := memory.tree.Node(0, 1)
+ left := readNode(t, memory.tree, 0, 0)
+ right := readNode(t, memory.tree, 0, 1)
merge := summarizer.Tasks()[2]
require.Equal(t, []string{left.Text, right.Text}, merge.Input)
require.Equal(t, "\n0+1|"+left.Text+"\n1+1|"+right.Text+"\n", merge.Context)
- require.True(t, memory.tree.Built(1, 0))
+ require.True(t, isBuilt(t, memory.tree, 1, 0))
}
func TestMemoryRestartRestoresTheQueue(t *testing.T) {
@@ -196,7 +201,7 @@ func TestMemoryRestartRestoresTheQueue(t *testing.T) {
}()
require.NoError(t, memory.Wait(t.Context()))
- require.True(t, memory.tree.Built(2, 0))
+ require.True(t, isBuilt(t, memory.tree, 2, 0))
}
func TestMemoryBuildsFreeParents(t *testing.T) {
@@ -212,8 +217,7 @@ func TestMemoryBuildsFreeParents(t *testing.T) {
require.NoError(t, err)
}
- node, built := memory.tree.Node(2, 0)
- require.True(t, built)
+ node := readNode(t, memory.tree, 2, 0)
require.Equal(t, "user: a\nuser: b\nuser: c\nuser: d", node.Text)
}
@@ -237,7 +241,10 @@ func TestMemoryKeepsALongMessageOutOfTheView(t *testing.T) {
_, err = memory.Append("user", "again")
require.NoError(t, err)
require.NoError(t, memory.Wait(t.Context()))
- require.Equal(t, "\n0+1|"+fakeLine(memory.task(nodeKey{0, 0}))+"\n1+1|user: again\n", memory.View())
+
+ task, err := memory.task(nodeKey{0, 0})
+ require.NoError(t, err)
+ require.Equal(t, "\n0+1|"+fakeLine(task)+"\n1+1|user: again\n", memory.View())
}
func TestMemoryCoversMessagesAfterTheSavedView(t *testing.T) {
@@ -350,6 +357,14 @@ func (f *fakeSummarizer) SetFailing(failing bool) {
f.failing = failing
}
+// Active returns the number of tasks that run now.
+func (f *fakeSummarizer) Active() int {
+ f.mutex.Lock()
+ defer f.mutex.Unlock()
+
+ return f.active
+}
+
// Tasks returns the tasks so far.
func (f *fakeSummarizer) Tasks() []Task {
f.mutex.Lock()