fix cluster proxy cleanup routing
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"errors"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
func TestClusterGobRegistersSystemMessagePayloadTypes(t *testing.T) {
|
||||
registerClusterGobTypes()
|
||||
|
||||
msg := &ClusterRoute{
|
||||
SrvMsg: &ServerComMessage{
|
||||
TenantID: types.TenantID(10001),
|
||||
RcptTo: "grpTest",
|
||||
Data: &MsgServerData{
|
||||
Topic: "grpTest",
|
||||
Timestamp: time.Now().UTC().Round(time.Millisecond),
|
||||
SeqId: 1,
|
||||
Head: map[string]any{
|
||||
"x-im-type": "system_action",
|
||||
"x-im-template": "group_member_joined",
|
||||
},
|
||||
Content: map[string]any{
|
||||
"text": "成员加入了群聊",
|
||||
"template": "group_member_joined",
|
||||
"actors": []imSystemMessageActor{{
|
||||
UserID: "usr123",
|
||||
Click: map[string]any{"type": "user_profile", "target_id": "usr123"},
|
||||
}},
|
||||
"actions": []imSystemMessageAction{{
|
||||
Type: "group_profile",
|
||||
Label: "查看群聊",
|
||||
TargetID: "grpTest",
|
||||
}},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
if err := gob.NewEncoder(&buf).Encode(msg); err != nil {
|
||||
t.Fatalf("encode cluster route with system message payload: %v", err)
|
||||
}
|
||||
|
||||
var decoded ClusterRoute
|
||||
if err := gob.NewDecoder(&buf).Decode(&decoded); err != nil {
|
||||
t.Fatalf("decode cluster route with system message payload: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestClusterRouteLeaveIgnoresStaleLocalProxyOwner(t *testing.T) {
|
||||
cluster := &Cluster{
|
||||
thisNodeName: "node-a",
|
||||
nodes: map[string]*ClusterNode{},
|
||||
}
|
||||
cluster.rehash([]string{"node-a"})
|
||||
|
||||
err := cluster.routeToTopicMaster(ProxyReqLeave, nil, "grpStaleProxy", &Session{tenantID: types.TenantID(10001)})
|
||||
if !errors.Is(err, errClusterTopicOwnerUnavailable) {
|
||||
t.Fatalf("expected stale proxy leave to return owner unavailable, got %v", err)
|
||||
}
|
||||
|
||||
err = cluster.topicProxyGone(types.TenantID(10001), "grpStaleProxy")
|
||||
if !errors.Is(err, errClusterTopicOwnerUnavailable) {
|
||||
t.Fatalf("expected stale proxy shutdown to return owner unavailable, got %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user