Make monolith tests reliable with random keys

This commit is contained in:
Devon Hudson 2023-01-28 16:14:27 -07:00
parent e49ab5e321
commit 3cb9a96cdf
No known key found for this signature in database
GPG key ID: CD06B18E77F6A628
2 changed files with 37 additions and 14 deletions

View file

@ -600,10 +600,9 @@ func (m *DendriteMonolith) Start() {
} }
}() }()
go func(ch <-chan pineconeEvents.Event) {
eLog := logrus.WithField("pinecone", "events")
stopRelayServerSync := make(chan bool) stopRelayServerSync := make(chan bool)
eLog := logrus.WithField("pinecone", "events")
m.relayRetriever = RelayServerRetriever{ m.relayRetriever = RelayServerRetriever{
Context: context.Background(), Context: context.Background(),
ServerName: gomatrixserverlib.ServerName(m.PineconeRouter.PublicKey().String()), ServerName: gomatrixserverlib.ServerName(m.PineconeRouter.PublicKey().String()),
@ -615,6 +614,8 @@ func (m *DendriteMonolith) Start() {
} }
m.relayRetriever.InitializeRelayServers(eLog) m.relayRetriever.InitializeRelayServers(eLog)
go func(ch <-chan pineconeEvents.Event) {
for event := range ch { for event := range ch {
switch e := event.(type) { switch e := event.(type) {
case pineconeEvents.PeerAdded: case pineconeEvents.PeerAdded:

View file

@ -18,6 +18,7 @@ import (
"context" "context"
"fmt" "fmt"
"net" "net"
"strings"
"testing" "testing"
"time" "time"
@ -247,12 +248,33 @@ func TestMonolithSetRelayServers(t *testing.T) {
relays := monolith.GetRelayServers(nodeID) relays := monolith.GetRelayServers(nodeID)
monolith.Stop() monolith.Stop()
if relays != expectedRelays { if !containSameKeys(strings.Split(relays, ","), strings.Split(expectedRelays, ",")) {
t.Fatalf("%s: expected %s got %s", tc.name, expectedRelays, relays) t.Fatalf("%s: expected %s got %s", tc.name, expectedRelays, relays)
} }
} }
} }
func containSameKeys(expected []string, actual []string) bool {
if len(expected) != len(actual) {
return false
}
for _, expectedKey := range expected {
hasMatch := false
for _, actualKey := range actual {
if actualKey == expectedKey {
hasMatch = true
}
}
if !hasMatch {
return false
}
}
return true
}
func TestParseServerKey(t *testing.T) { func TestParseServerKey(t *testing.T) {
testCases := []struct { testCases := []struct {
name string name string