Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 24 additions & 13 deletions tests/msc3902/federation_room_join_partial_state_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,23 +141,34 @@ func (s *server) WithWaitForLeave(
)
defer removePDUHandler()

leaveAction()

// `WithWaitForLeave` expects the user to be in the room and to leave as a
// result of the action, so that the leave arrives as a PDU our handler
// matches. Snapshot the membership *before* the action: if the user has
// already left, no such PDU is coming, which is a test bug rather than
// something to wait for.
memberEvent := room.CurrentState("m.room.member", userID)
membership := ""
membership := "leave"
if memberEvent != nil {
membership, _ = memberEvent.Membership()
}
if membership == "leave" {
t.Logf("%s has already seen %s leave test room %s.", s.ServerName(), userID, room.RoomID)
} else {
select {
case <-leaveChannel:
t.Logf("%s saw %s leave test room %s.", s.ServerName(), userID, room.RoomID)
break
case <-time.After(1 * time.Second):
t.Errorf("%s timed out waiting for %s to leave test room %s.", s.ServerName(), userID, room.RoomID)
}
alreadyLeft := membership == "leave"
if alreadyLeft {
t.Fatalf("%s: %s had already left test room %s before WithWaitForLeave ran.", s.ServerName(), userID, room.RoomID)
}

leaveAction()

// Wait on the channel fed by our PDU handler rather than polling
// `room.CurrentState`: the room's current state is updated (by
// `room.AddEvent`) *before* the PDU callback runs, so returning on a
// `CurrentState` check could deregister our handler in the window before
// the callback fires, making the (expected) leave look unexpected to
// `HandleTransactionRequests`.
select {
case <-leaveChannel:
t.Logf("%s saw %s leave test room %s.", s.ServerName(), userID, room.RoomID)
case <-time.After(1 * time.Second):
t.Errorf("%s timed out waiting for %s to leave test room %s.", s.ServerName(), userID, room.RoomID)
}
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tests are failing:

❌ TestPartialStateJoin (2m34.33s)
❌ TestPartialStateJoin/Leave_during_resync (10.99s)
❌ TestPartialStateJoin/Leave_during_resync/does_not_wait_for_resync (2.28s)
❌ TestPartialStateJoin/Leave_during_resync/is_seen_after_the_resync (2.29s)
❌ TestPartialStateJoin/Outgoing_device_list_updates (24.94s)
❌ TestPartialStateJoin/Outgoing_device_list_updates/Device_list_updates_reach_all_servers_in_partial_state_rooms (1.68s)
❌ TestPartialStateJoin/Outgoing_device_list_updates/Device_list_updates_reach_incorrectly_absent_servers_once_partial_state_join_completes (3.81s)
❌ TestPartialStateJoin/Outgoing_device_list_updates/Device_list_updates_reach_incorrectly_kicked_servers_once_partial_state_join_completes (5.67s)
❌ TestPartialStateJoin/Outgoing_device_list_updates/Device_list_updates_reach_newly_joined_servers_in_partial_state_rooms (4.67s)

Specifics for couple test cases:

❌ TestPartialStateJoin/Leave_during_resync/does_not_wait_for_resync (2.28s)
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/register => 200 OK (111.307859ms)
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/capabilities => 200 OK (4.095333ms)
      server.go:210: Creating room !0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171 with version 10
      federation_room_join_partial_state_test.go:3684: Alice begins a partial join to a room
      federation_room_join_partial_state_test.go:4510: Registered state_ids handler for event $bktTP-VUFCYYjBE92q9rLxKnEnkERA6CL8evt3fpU5g
      federation_room_join_partial_state_test.go:4551: Registered /state handler for event $bktTP-VUFCYYjBE92q9rLxKnEnkERA6CL8evt3fpU5g
  2026/06/09 08:48:20 Received send-join of event $sWMXmm7djuzQ7_nFd8y6dW01nIvFTjgvCog7R-viTVo
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/join/!0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171 => 200 OK (75.501743ms)
      federation_room_join_partial_state_test.go:4404: /join request completed
      federation_room_join_partial_state_test.go:3688: Alice waits to see her join
      federation_room_join_partial_state_test.go:4489: Incoming state_ids request for event [$bktTP-VUFCYYjBE92q9rLxKnEnkERA6CL8evt3fpU5g] in room !0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/sync => 200 OK (22.618627ms)
      federation_room_join_partial_state_test.go:3695: Alice leaves and waits for confirmation
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/rooms/!0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171/leave => 200 OK (23.643394ms)
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/sync => 200 OK (19.05725ms)
      federation_room_join_partial_state_test.go:3723: Alice's leave is received by the resident server
      federation_room_join_partial_state_test.go:4427: Cleaning up after test...
      federation_room_join_partial_state_test.go:4496: Replying to /state_ids request for event [$bktTP-VUFCYYjBE92q9rLxKnEnkERA6CL8evt3fpU5g]
      federation_room_join_partial_state_test.go:4529: Incoming state request for event [$bktTP-VUFCYYjBE92q9rLxKnEnkERA6CL8evt3fpU5g] in room !0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171
      federation_room_join_partial_state_test.go:4537: Replying to /state request for event [$bktTP-VUFCYYjBE92q9rLxKnEnkERA6CL8evt3fpU5g]
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/rooms/!0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171/members => 200 OK (32.05937ms)
      federation_room_join_partial_state_test.go:4429: @user-51-t43alice:hs1's partial state join to !0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171 completed.
      federation_room_join_partial_state_test.go:156: host.docker.internal:45171: @user-51-t43alice:hs1 had already left test room !0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171 before WithWaitForLeave ran.
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/rooms/!0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171/leave => 200 OK (15.093236ms)
      federation_room_join_partial_state_test.go:171: host.docker.internal:45171 timed out waiting for @user-51-t43alice:hs1 to leave test room !0-kuhoS2HynKMFoBaAVt:host.docker.internal:45171.
❌ TestPartialStateJoin/Outgoing_device_list_updates/Device_list_updates_reach_newly_joined_servers_in_partial_state_rooms (4.67s)
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/register => 200 OK (14.497077ms)
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/capabilities => 200 OK (6.319961ms)
      server.go:210: Creating room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483 with version 10
      federation_room_join_partial_state_test.go:4510: Registered state_ids handler for event $kLwIKis2rqHT0iYKhrlPl9ANQbbQZCNJIh0QcHG1-Wc
      federation_room_join_partial_state_test.go:4551: Registered /state handler for event $kLwIKis2rqHT0iYKhrlPl9ANQbbQZCNJIh0QcHG1-Wc
  2026/06/09 08:47:43 Received send-join of event $eCDCY848myJfso3EUaOp0tSD-oYrAaRoEM0uKmV8QQ4
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/join/!0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483 => 200 OK (118.335705ms)
      federation_room_join_partial_state_test.go:4404: /join request completed
      federation_room_join_partial_state_test.go:4489: Incoming state_ids request for event [$kLwIKis2rqHT0iYKhrlPl9ANQbbQZCNJIh0QcHG1-Wc] in room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483
      client.go:860: [CSAPI] PUT hs1/_matrix/client/v3/devices/HJZGHFCAOA => 200 OK (86.732122ms)
      federation_room_join_partial_state_test.go:2294: @user-33-t24alice:hs1 sent device list update.
      federation_room_join_partial_state_test.go:2167: Complement server received m.device_list_update: {"device_display_name":"A new device name 1","device_id":"HJZGHFCAOA","prev_id":[],"stream_id":41,"user_id":"@user-33-t24alice:hs1"}
      federation_room_join_partial_state_test.go:2297: @charlie and @derek received device list update.
  2026/06/09 08:47:44 Received send-join of event $aIVc_eE8-6DBmfRIR6IfFdu7nBYl8YBfHeGcbcy_Hbk
      federation_room_join_partial_state_test.go:2300: Server.MustJoinRoom joined room ID !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/sync => 200 OK (68.678334ms)
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/sync => 200 OK (10.852562ms)
      federation_room_join_partial_state_test.go:2313: Alice successfully received event $aIVc_eE8-6DBmfRIR6IfFdu7nBYl8YBfHeGcbcy_Hbk via /sync
      client.go:860: [CSAPI] PUT hs1/_matrix/client/v3/devices/HJZGHFCAOA => 200 OK (7.263855ms)
      federation_room_join_partial_state_test.go:2316: @user-33-t24alice:hs1 sent device list update.
      federation_room_join_partial_state_test.go:2167: Complement server received m.device_list_update: {"device_display_name":"A new device name 2","device_id":"HJZGHFCAOA","prev_id":[],"stream_id":43,"user_id":"@user-33-t24alice:hs1"}
      federation_room_join_partial_state_test.go:2167: Complement server received m.device_list_update: {"device_display_name":"A new device name 2","device_id":"HJZGHFCAOA","prev_id":[41],"stream_id":43,"user_id":"@user-33-t24alice:hs1"}
      federation_room_join_partial_state_test.go:2319: @charlie, @derek and @elsie received device list update.
      federation_room_join_partial_state_test.go:4496: Replying to /state_ids request for event [$kLwIKis2rqHT0iYKhrlPl9ANQbbQZCNJIh0QcHG1-Wc]
      federation_room_join_partial_state_test.go:4529: Incoming state request for event [$kLwIKis2rqHT0iYKhrlPl9ANQbbQZCNJIh0QcHG1-Wc] in room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483
      federation_room_join_partial_state_test.go:4537: Replying to /state request for event [$kLwIKis2rqHT0iYKhrlPl9ANQbbQZCNJIh0QcHG1-Wc]
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/rooms/!0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483/members => 200 OK (76.347531ms)
      federation_room_join_partial_state_test.go:2323: @user-33-t24alice:hs1's partial state join to !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483 completed.
      client.go:860: [CSAPI] PUT hs1/_matrix/client/v3/devices/HJZGHFCAOA => 200 OK (6.628917ms)
      federation_room_join_partial_state_test.go:2326: @user-33-t24alice:hs1 sent device list update.
      federation_room_join_partial_state_test.go:2167: Complement server received m.device_list_update: {"device_display_name":"A new device name 3","device_id":"HJZGHFCAOA","prev_id":[43],"stream_id":46,"user_id":"@user-33-t24alice:hs1"}
      federation_room_join_partial_state_test.go:2167: Complement server received m.device_list_update: {"device_display_name":"A new device name 2","device_id":"HJZGHFCAOA","prev_id":[43],"stream_id":44,"user_id":"@user-33-t24alice:hs1"}
      federation_room_join_partial_state_test.go:2329: @charlie, @derek and @elsie received device list update.
      federation_room_join_partial_state_test.go:156: host.docker.internal:39381: @user-33-t24alice:hs1 had already left test room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483 before WithWaitForLeave ran.
      federation_room_join_partial_state_test.go:4427: Cleaning up after test...
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/rooms/!0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483/members => 200 OK (7.654741ms)
      federation_room_join_partial_state_test.go:4429: @user-33-t24alice:hs1's partial state join to !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483 completed.
      federation_room_join_partial_state_test.go:2167: Complement server received m.device_list_update: {"device_display_name":"A new device name 3","device_id":"HJZGHFCAOA","prev_id":[44],"stream_id":46,"user_id":"@user-33-t24alice:hs1"}
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/rooms/!0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483/leave => 200 OK (31.443572ms)
      federation_room_join_partial_state_test.go:169: host.docker.internal:40483 saw @user-33-t24alice:hs1 leave test room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483.
      federation_room_join_partial_state_test.go:169: host.docker.internal:39381 saw @user-33-t24alice:hs1 leave test room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483.
      federation_room_join_partial_state_test.go:4427: Cleaning up after test...
      client.go:860: [CSAPI] GET hs1/_matrix/client/v3/rooms/!0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483/members => 200 OK (5.144066ms)
      federation_room_join_partial_state_test.go:4429: @user-33-t24alice:hs1's partial state join to !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483 completed.
      federation_room_join_partial_state_test.go:156: host.docker.internal:40483: @user-33-t24alice:hs1 had already left test room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483 before WithWaitForLeave ran.
      client.go:860: [CSAPI] POST hs1/_matrix/client/v3/rooms/!0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483/leave => 200 OK (8.149377ms)
      federation_room_join_partial_state_test.go:171: host.docker.internal:40483 timed out waiting for @user-33-t24alice:hs1 to leave test room !0-C7eWPIF3FWzfgDTjDj:host.docker.internal:40483.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, hmm, sorry, could have sworn I saw the tests pass.

Expand Down
Loading