aboutsummaryrefslogtreecommitdiff
path: root/cmd/dendrite-upgrade-tests/tests.go
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-09-15 07:26:26 +0200
committerGitHub <noreply@github.com>2022-09-15 07:26:26 +0200
commita5f8c07184921b4cfdea42c872852ca5e5e5a4ce (patch)
tree7df943210085c5ed55b830f8b95ef793ad80d846 /cmd/dendrite-upgrade-tests/tests.go
parent0ea948c70548875601a544c57a588271af3adce4 (diff)
Hopefully fix `upgrade-tests` (#2717)
Wait for events to come down `/sync` before ending the test.
Diffstat (limited to 'cmd/dendrite-upgrade-tests/tests.go')
-rw-r--r--cmd/dendrite-upgrade-tests/tests.go45
1 files changed, 43 insertions, 2 deletions
diff --git a/cmd/dendrite-upgrade-tests/tests.go b/cmd/dendrite-upgrade-tests/tests.go
index ff1e09dd..5c9589df 100644
--- a/cmd/dendrite-upgrade-tests/tests.go
+++ b/cmd/dendrite-upgrade-tests/tests.go
@@ -4,6 +4,7 @@ import (
"fmt"
"log"
"strings"
+ "time"
"github.com/matrix-org/gomatrix"
"github.com/matrix-org/gomatrixserverlib"
@@ -81,11 +82,14 @@ func runTests(baseURL, branchName string) error {
client: users[1].client, text: "4: " + branchName,
},
}
+ wantEventIDs := make(map[string]struct{}, 8)
for _, msg := range msgs {
- _, err = msg.client.SendText(dmRoomID, msg.text)
+ var resp *gomatrix.RespSendEvent
+ resp, err = msg.client.SendText(dmRoomID, msg.text)
if err != nil {
return fmt.Errorf("failed to send text in dm room: %s", err)
}
+ wantEventIDs[resp.EventID] = struct{}{}
}
// attempt to create/join the shared public room
@@ -113,11 +117,48 @@ func runTests(baseURL, branchName string) error {
}
// send messages
for _, msg := range msgs {
- _, err = msg.client.SendText(publicRoomID, "public "+msg.text)
+ resp, err := msg.client.SendText(publicRoomID, "public "+msg.text)
if err != nil {
return fmt.Errorf("failed to send text in public room: %s", err)
}
+ wantEventIDs[resp.EventID] = struct{}{}
}
+
+ // Sync until we have all expected messages
+ doneCh := make(chan struct{})
+ go func() {
+ syncClient := users[0].client
+ since := ""
+ for len(wantEventIDs) > 0 {
+ select {
+ case <-doneCh:
+ return
+ default:
+ }
+ syncResp, err := syncClient.SyncRequest(1000, since, "1", false, "")
+ if err != nil {
+ continue
+ }
+ for _, room := range syncResp.Rooms.Join {
+ for _, ev := range room.Timeline.Events {
+ if ev.Type != "m.room.message" {
+ continue
+ }
+ delete(wantEventIDs, ev.ID)
+ }
+ }
+ since = syncResp.NextBatch
+ }
+ close(doneCh)
+ }()
+
+ select {
+ case <-time.After(time.Second * 10):
+ close(doneCh)
+ return fmt.Errorf("failed to receive all expected messages: %+v", wantEventIDs)
+ case <-doneCh:
+ }
+
log.Printf("OK! rooms(public=%s, dm=%s) users(%s, %s)\n", publicRoomID, dmRoomID, users[0].userID, users[1].userID)
return nil
}