From 5481bbf79dbeeb67eedb4756c133b9a10409f768 Mon Sep 17 00:00:00 2001 From: Jonathan de Jong Date: Sun, 16 Oct 2022 14:04:34 +0200 Subject: [PATCH 1/7] Make local members presence test more reliable and able to be ran in isolation --- tests/csapi/rooms_members_local_test.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/csapi/rooms_members_local_test.go b/tests/csapi/rooms_members_local_test.go index 3966f422..9df7fe2d 100644 --- a/tests/csapi/rooms_members_local_test.go +++ b/tests/csapi/rooms_members_local_test.go @@ -18,6 +18,10 @@ func TestMembersLocal(t *testing.T) { bob := deployment.Client(t, "hs1", "@bob:hs1") roomID := alice.CreateRoom(t, map[string]interface{}{"preset": "public_chat"}) + _, sinceToken := alice.MustSync(t, client.SyncReq{TimeoutMillis: "0"}) + + bob.JoinRoom(t, roomID, []string{}) + t.Run("Parallel", func(t *testing.T) { // sytest: New room members see their own join event t.Run("New room members see their own join event", func(t *testing.T) { @@ -29,16 +33,15 @@ func TestMembersLocal(t *testing.T) { // sytest: Existing members see new members' join events t.Run("Existing members see new members' join events", func(t *testing.T) { t.Parallel() - bob.JoinRoom(t, roomID, []string{}) // SyncJoinedTo already checks everything we need to know - alice.MustSyncUntil(t, client.SyncReq{}, client.SyncJoinedTo(bob.UserID, roomID)) + alice.MustSyncUntil(t, client.SyncReq{Since: sinceToken}, client.SyncJoinedTo(bob.UserID, roomID)) }) // sytest: Existing members see new members' presence t.Run("Existing members see new members' presence", func(t *testing.T) { runtime.SkipIf(t, runtime.Dendrite) // Still failing t.Parallel() - alice.MustSyncUntil(t, client.SyncReq{}, + alice.MustSyncUntil(t, client.SyncReq{Since: sinceToken}, client.SyncJoinedTo(bob.UserID, roomID), func(clientUserID string, topLevelSyncJSON gjson.Result) error { presenceEvents := topLevelSyncJSON.Get("presence.events") From 1764ceada1f5d00ae89bb72dc937013b59bdcb5e Mon Sep 17 00:00:00 2001 From: Jonathan de Jong Date: Tue, 18 Oct 2022 08:50:43 +0200 Subject: [PATCH 2/7] add explicit presence-setting --- tests/csapi/rooms_members_local_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/csapi/rooms_members_local_test.go b/tests/csapi/rooms_members_local_test.go index 9df7fe2d..09720d28 100644 --- a/tests/csapi/rooms_members_local_test.go +++ b/tests/csapi/rooms_members_local_test.go @@ -6,6 +6,8 @@ import ( "github.com/matrix-org/complement/internal/b" "github.com/matrix-org/complement/internal/client" + "github.com/matrix-org/complement/internal/match" + "github.com/matrix-org/complement/internal/must" "github.com/matrix-org/complement/runtime" "github.com/tidwall/gjson" ) @@ -18,6 +20,18 @@ func TestMembersLocal(t *testing.T) { bob := deployment.Client(t, "hs1", "@bob:hs1") roomID := alice.CreateRoom(t, map[string]interface{}{"preset": "public_chat"}) + res := bob.DoFunc( + t, + "PUT", + []string{"_matrix", "client", "v3", "presence", bob.UserID, "status"}, + client.WithJSONBody(t, map[string]interface{}{ + "presence": "online", + }), + ) + must.MatchResponse(t, res, match.HTTPResponse{ + StatusCode: 200, + }) + _, sinceToken := alice.MustSync(t, client.SyncReq{TimeoutMillis: "0"}) bob.JoinRoom(t, roomID, []string{}) From f28a1bca3a6dd07f5472c02fbf8fa8e4f5ad749b Mon Sep 17 00:00:00 2001 From: Jonathan de Jong Date: Tue, 18 Oct 2022 09:23:31 +0200 Subject: [PATCH 3/7] fix dendrite test failure --- tests/csapi/rooms_members_local_test.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tests/csapi/rooms_members_local_test.go b/tests/csapi/rooms_members_local_test.go index 09720d28..efe75379 100644 --- a/tests/csapi/rooms_members_local_test.go +++ b/tests/csapi/rooms_members_local_test.go @@ -13,7 +13,24 @@ import ( ) func TestMembersLocal(t *testing.T) { - deployment := Deploy(t, b.BlueprintOneToOneRoom) + deployment := Deploy(t, b.MustValidate(b.Blueprint{ + Name: "ab", + Homeservers: []b.Homeserver{ + { + Name: "hs1", + Users: []b.User{ + { + Localpart: "@alice", + DisplayName: "Alice", + }, + { + Localpart: "@bob", + DisplayName: "Bob", + }, + }, + }, + }, + })) defer deployment.Destroy(t) alice := deployment.Client(t, "hs1", "@alice:hs1") @@ -53,7 +70,6 @@ func TestMembersLocal(t *testing.T) { // sytest: Existing members see new members' presence t.Run("Existing members see new members' presence", func(t *testing.T) { - runtime.SkipIf(t, runtime.Dendrite) // Still failing t.Parallel() alice.MustSyncUntil(t, client.SyncReq{Since: sinceToken}, client.SyncJoinedTo(bob.UserID, roomID), From 6e43a327dbe392911f96e2f1c62a03cd8d73824c Mon Sep 17 00:00:00 2001 From: Jonathan de Jong Date: Wed, 19 Oct 2022 09:32:54 +0200 Subject: [PATCH 4/7] fix imports --- tests/csapi/rooms_members_local_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/csapi/rooms_members_local_test.go b/tests/csapi/rooms_members_local_test.go index efe75379..a74b9252 100644 --- a/tests/csapi/rooms_members_local_test.go +++ b/tests/csapi/rooms_members_local_test.go @@ -4,12 +4,12 @@ import ( "fmt" "testing" + "github.com/tidwall/gjson" + "github.com/matrix-org/complement/internal/b" "github.com/matrix-org/complement/internal/client" "github.com/matrix-org/complement/internal/match" "github.com/matrix-org/complement/internal/must" - "github.com/matrix-org/complement/runtime" - "github.com/tidwall/gjson" ) func TestMembersLocal(t *testing.T) { From 502127d47fa0a7f6ad02a42973aba7fed9bb2346 Mon Sep 17 00:00:00 2001 From: Jonathan de Jong Date: Thu, 20 Oct 2022 11:56:23 +0200 Subject: [PATCH 5/7] apply review feedback --- tests/csapi/rooms_members_local_test.go | 35 +++---------------------- 1 file changed, 3 insertions(+), 32 deletions(-) diff --git a/tests/csapi/rooms_members_local_test.go b/tests/csapi/rooms_members_local_test.go index a74b9252..fef12dc8 100644 --- a/tests/csapi/rooms_members_local_test.go +++ b/tests/csapi/rooms_members_local_test.go @@ -8,46 +8,17 @@ import ( "github.com/matrix-org/complement/internal/b" "github.com/matrix-org/complement/internal/client" - "github.com/matrix-org/complement/internal/match" - "github.com/matrix-org/complement/internal/must" ) func TestMembersLocal(t *testing.T) { - deployment := Deploy(t, b.MustValidate(b.Blueprint{ - Name: "ab", - Homeservers: []b.Homeserver{ - { - Name: "hs1", - Users: []b.User{ - { - Localpart: "@alice", - DisplayName: "Alice", - }, - { - Localpart: "@bob", - DisplayName: "Bob", - }, - }, - }, - }, - })) + deployment := Deploy(t, b.BlueprintAlice) defer deployment.Destroy(t) alice := deployment.Client(t, "hs1", "@alice:hs1") - bob := deployment.Client(t, "hs1", "@bob:hs1") + bob := deployment.RegisterUser(t, "hs1", "bob", "bobspassword", false) roomID := alice.CreateRoom(t, map[string]interface{}{"preset": "public_chat"}) - res := bob.DoFunc( - t, - "PUT", - []string{"_matrix", "client", "v3", "presence", bob.UserID, "status"}, - client.WithJSONBody(t, map[string]interface{}{ - "presence": "online", - }), - ) - must.MatchResponse(t, res, match.HTTPResponse{ - StatusCode: 200, - }) + bob.MustSync(t, client.SyncReq{TimeoutMillis: "0", SetPresence: "online"}) _, sinceToken := alice.MustSync(t, client.SyncReq{TimeoutMillis: "0"}) From 1114d6bbbe7f587a180fd4824237e8863787c400 Mon Sep 17 00:00:00 2001 From: Jonathan de Jong Date: Sat, 10 Dec 2022 11:11:14 +0100 Subject: [PATCH 6/7] add more parentheses, change skipif note, and remove additional skipif --- tests/csapi/rooms_members_local_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/csapi/rooms_members_local_test.go b/tests/csapi/rooms_members_local_test.go index 20d22238..e63867c8 100644 --- a/tests/csapi/rooms_members_local_test.go +++ b/tests/csapi/rooms_members_local_test.go @@ -44,8 +44,11 @@ func TestMembersLocal(t *testing.T) { // sytest: Existing members see new members' presence // Split into initial and incremental sync cases in Complement. t.Run("Existing members see new members' presence (in initial sync)", func(t *testing.T) { - runtime.SkipIf(t, runtime.Dendrite) // FIXME: https://github.com/matrix-org/dendrite/issues/2803 + runtime.SkipIf(t, runtime.Dendrite) // FIXME: https://github.com/matrix-org/matrix-spec/issues/1374 t.Parallel() + // First we sync to make sure bob to have joined the room... + alice.MustSyncUntil(t, client.SyncReq{}, client.SyncJoinedTo(bob.UserID, roomID)) + // ...and then we do another initial sync - this time waiting for bob's presence - to confirm we can get that. alice.MustSyncUntil(t, client.SyncReq{}, client.SyncJoinedTo(bob.UserID, roomID), client.SyncPresenceHas(bob.UserID, nil), @@ -54,8 +57,7 @@ func TestMembersLocal(t *testing.T) { // sytest: Existing members see new members' presence // Split into initial and incremental sync cases in Complement. - t.Run("Existing members see new members' presence in incremental sync", func(t *testing.T) { - runtime.SkipIf(t, runtime.Dendrite) // FIXME: https://github.com/matrix-org/dendrite/issues/2803 + t.Run("Existing members see new members' presence (in incremental sync)", func(t *testing.T) { t.Parallel() alice.MustSyncUntil(t, client.SyncReq{Since: incrementalSyncToken}, client.SyncJoinedTo(bob.UserID, roomID), From d554e729c4e97c849c14e0f17fa8919b4dba4e85 Mon Sep 17 00:00:00 2001 From: Jonathan de Jong Date: Fri, 19 May 2023 12:37:54 +0200 Subject: [PATCH 7/7] address review feedback --- tests/csapi/rooms_members_local_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/csapi/rooms_members_local_test.go b/tests/csapi/rooms_members_local_test.go index e63867c8..09ae5356 100644 --- a/tests/csapi/rooms_members_local_test.go +++ b/tests/csapi/rooms_members_local_test.go @@ -13,6 +13,8 @@ func TestMembersLocal(t *testing.T) { defer deployment.Destroy(t) alice := deployment.Client(t, "hs1", "@alice:hs1") + // Here we don't use the BlueprintOneToOneRoom because else Bob would be able to see Alice's presence changes through + // that pre-existing one-on-one DM room. So we exclude that here. bob := deployment.RegisterUser(t, "hs1", "bob", "bobspassword", false) roomID := alice.CreateRoom(t, map[string]interface{}{"preset": "public_chat"}) @@ -23,7 +25,7 @@ func TestMembersLocal(t *testing.T) { }), ) - _, incrementalSyncToken := alice.MustSync(t, client.SyncReq{TimeoutMillis: "0"}) + _, incrementalSyncTokenBeforeBobJoinsRoom := alice.MustSync(t, client.SyncReq{TimeoutMillis: "0"}) bob.JoinRoom(t, roomID, []string{}) t.Run("Parallel", func(t *testing.T) { @@ -38,7 +40,7 @@ func TestMembersLocal(t *testing.T) { t.Run("Existing members see new members' join events", func(t *testing.T) { t.Parallel() // SyncJoinedTo already checks everything we need to know - alice.MustSyncUntil(t, client.SyncReq{Since: incrementalSyncToken}, client.SyncJoinedTo(bob.UserID, roomID)) + alice.MustSyncUntil(t, client.SyncReq{Since: incrementalSyncTokenBeforeBobJoinsRoom}, client.SyncJoinedTo(bob.UserID, roomID)) }) // sytest: Existing members see new members' presence @@ -59,7 +61,7 @@ func TestMembersLocal(t *testing.T) { // Split into initial and incremental sync cases in Complement. t.Run("Existing members see new members' presence (in incremental sync)", func(t *testing.T) { t.Parallel() - alice.MustSyncUntil(t, client.SyncReq{Since: incrementalSyncToken}, + alice.MustSyncUntil(t, client.SyncReq{Since: incrementalSyncTokenBeforeBobJoinsRoom}, client.SyncJoinedTo(bob.UserID, roomID), client.SyncPresenceHas(bob.UserID, nil), )