fix: reduce persistence lag and retry audit deadlocks
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
func TestAggregatePreparedMessageBatchUpdatesKeepsLatestSeq(t *testing.T) {
|
||||
user1 := types.Uid(1)
|
||||
user2 := types.Uid(2)
|
||||
items := []PreparedMessageBatchItem{
|
||||
{Message: &types.Message{Topic: "p2p-b", From: user1.String(), SeqId: 3}, ReadBySender: true},
|
||||
{Message: &types.Message{Topic: "p2p-a", From: user1.String(), SeqId: 2}, ReadBySender: true},
|
||||
{Message: &types.Message{Topic: "p2p-a", From: user2.String(), SeqId: 5}, ReadBySender: true},
|
||||
{Message: &types.Message{Topic: "p2p-a", From: user1.String(), SeqId: 6}, ReadBySender: true},
|
||||
{Message: &types.Message{Topic: "p2p-b", From: user1.String(), SeqId: 7}, ReadBySender: false},
|
||||
{},
|
||||
}
|
||||
|
||||
topics, reads := aggregatePreparedMessageBatchUpdates(items)
|
||||
if len(topics) != 2 || topics[0].topic != "p2p-a" || topics[0].message.SeqId != 6 ||
|
||||
topics[1].topic != "p2p-b" || topics[1].message.SeqId != 7 {
|
||||
t.Fatalf("unexpected topic updates: %+v", topics)
|
||||
}
|
||||
if len(reads) != 3 {
|
||||
t.Fatalf("read updates=%d want=3: %+v", len(reads), reads)
|
||||
}
|
||||
got := make(map[string]int64, len(reads))
|
||||
for _, update := range reads {
|
||||
got[update.topic+":"+update.from.String()] = update.message.SeqId
|
||||
}
|
||||
for key, want := range map[string]int64{
|
||||
"p2p-a:" + user1.String(): 6,
|
||||
"p2p-a:" + user2.String(): 5,
|
||||
"p2p-b:" + user1.String(): 3,
|
||||
} {
|
||||
if got[key] != want {
|
||||
t.Fatalf("read update %s=%d want=%d; all=%v", key, got[key], want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user