Skip to content

Commit 9eb3acf

Browse files
authored
Merge pull request #655 from ably/fix/presence-integration-test
Fix presence newness check and flaky tests
2 parents 6bcf832 + 21488ee commit 9eb3acf

File tree

2 files changed

+3
-44
lines changed

2 files changed

+3
-44
lines changed

ably/proto_presence_message.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (msg1 *PresenceMessage) IsNewerThan(msg2 *PresenceMessage) (bool, error) {
9898
return true, err
9999
}
100100
if msg1Serial == msg2Serial {
101-
return msg1Index >= msg2Index, nil
101+
return msg1Index > msg2Index, nil
102102
}
103103
return msg1Serial > msg2Serial, nil
104104
}

ably/realtime_presence_integration_test.go

+2-43
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func TestRealtimePresence_EnsureChannelIsAttached(t *testing.T) {
141141
assert.NoError(t, err)
142142
}
143143

144-
func SkipTestRealtimePresence_Presence_Enter_Update_Leave(t *testing.T) {
144+
func TestRealtimePresence_Presence_Enter_Update_Leave(t *testing.T) {
145145
app, client1 := ablytest.NewRealtime(nil...)
146146
defer safeclose(t, ablytest.FullRealtimeCloser(client1), app)
147147

@@ -199,7 +199,7 @@ func SkipTestRealtimePresence_Presence_Enter_Update_Leave(t *testing.T) {
199199
assert.Equal(t, "leave client2", member_received.Data)
200200
}
201201

202-
func SkipTestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
202+
func TestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
203203
app, client1 := ablytest.NewRealtime(nil...)
204204
defer safeclose(t, ablytest.FullRealtimeCloser(client1), app)
205205

@@ -254,47 +254,6 @@ func SkipTestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
254254
assert.Empty(t, members)
255255
}
256256

257-
func TestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
258-
app, client1 := ablytest.NewRealtime(nil...)
259-
defer safeclose(t, ablytest.FullRealtimeCloser(client1), app)
260-
261-
client2 := app.NewRealtime(ably.WithClientID("client2"))
262-
defer safeclose(t, ablytest.FullRealtimeCloser(client2))
263-
264-
err := ablytest.Wait(ablytest.ConnWaiter(client1, client1.Connect, ably.ConnectionEventConnected), nil)
265-
assert.NoError(t, err)
266-
267-
err = ablytest.Wait(ablytest.ConnWaiter(client2, client2.Connect, ably.ConnectionEventConnected), nil)
268-
assert.NoError(t, err)
269-
270-
client1Channel := client1.Channels.Get("channel")
271-
err = client1Channel.Attach(context.Background())
272-
273-
assert.NoError(t, err)
274-
275-
client2Channel := client2.Channels.Get("channel")
276-
err = client2Channel.Attach(context.Background())
277-
assert.NoError(t, err)
278-
279-
// ENTER
280-
err = client2Channel.Presence.Enter(context.Background(), "enter client2")
281-
assert.NoError(t, err)
282-
283-
leaveAction := ably.PresenceActionLeave
284-
subCh1, unsub1, err := ablytest.ReceivePresenceMessages(client1Channel, &leaveAction)
285-
assert.NoError(t, err)
286-
defer unsub1()
287-
288-
// Server Synthesized Leave when client2 disconnects
289-
client2.Close()
290-
291-
member_received := <-subCh1
292-
assert.Len(t, subCh1, 0) // Ensure no more updates received
293-
294-
assert.Equal(t, ably.PresenceActionLeave, member_received.Action)
295-
assert.Equal(t, "client2", member_received.ClientID)
296-
}
297-
298257
// When a client is created with a ClientID, Enter is used to announce the client's presence.
299258
// This example shows Client A entering their presence.
300259
func ExampleRealtimePresence_Enter() {

0 commit comments

Comments
 (0)