Skip to content

Commit

Permalink
Merge pull request #655 from ably/fix/presence-integration-test
Browse files Browse the repository at this point in the history
Fix presence newness check and flaky tests
  • Loading branch information
sacOO7 authored Jul 29, 2024
2 parents 6bcf832 + 21488ee commit 9eb3acf
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 44 deletions.
2 changes: 1 addition & 1 deletion ably/proto_presence_message.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (msg1 *PresenceMessage) IsNewerThan(msg2 *PresenceMessage) (bool, error) {
return true, err
}
if msg1Serial == msg2Serial {
return msg1Index >= msg2Index, nil
return msg1Index > msg2Index, nil
}
return msg1Serial > msg2Serial, nil
}
45 changes: 2 additions & 43 deletions ably/realtime_presence_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ func TestRealtimePresence_EnsureChannelIsAttached(t *testing.T) {
assert.NoError(t, err)
}

func SkipTestRealtimePresence_Presence_Enter_Update_Leave(t *testing.T) {
func TestRealtimePresence_Presence_Enter_Update_Leave(t *testing.T) {
app, client1 := ablytest.NewRealtime(nil...)
defer safeclose(t, ablytest.FullRealtimeCloser(client1), app)

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

func SkipTestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
func TestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
app, client1 := ablytest.NewRealtime(nil...)
defer safeclose(t, ablytest.FullRealtimeCloser(client1), app)

Expand Down Expand Up @@ -254,47 +254,6 @@ func SkipTestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
assert.Empty(t, members)
}

func TestRealtimePresence_ServerSynthesized_Leave(t *testing.T) {
app, client1 := ablytest.NewRealtime(nil...)
defer safeclose(t, ablytest.FullRealtimeCloser(client1), app)

client2 := app.NewRealtime(ably.WithClientID("client2"))
defer safeclose(t, ablytest.FullRealtimeCloser(client2))

err := ablytest.Wait(ablytest.ConnWaiter(client1, client1.Connect, ably.ConnectionEventConnected), nil)
assert.NoError(t, err)

err = ablytest.Wait(ablytest.ConnWaiter(client2, client2.Connect, ably.ConnectionEventConnected), nil)
assert.NoError(t, err)

client1Channel := client1.Channels.Get("channel")
err = client1Channel.Attach(context.Background())

assert.NoError(t, err)

client2Channel := client2.Channels.Get("channel")
err = client2Channel.Attach(context.Background())
assert.NoError(t, err)

// ENTER
err = client2Channel.Presence.Enter(context.Background(), "enter client2")
assert.NoError(t, err)

leaveAction := ably.PresenceActionLeave
subCh1, unsub1, err := ablytest.ReceivePresenceMessages(client1Channel, &leaveAction)
assert.NoError(t, err)
defer unsub1()

// Server Synthesized Leave when client2 disconnects
client2.Close()

member_received := <-subCh1
assert.Len(t, subCh1, 0) // Ensure no more updates received

assert.Equal(t, ably.PresenceActionLeave, member_received.Action)
assert.Equal(t, "client2", member_received.ClientID)
}

// When a client is created with a ClientID, Enter is used to announce the client's presence.
// This example shows Client A entering their presence.
func ExampleRealtimePresence_Enter() {
Expand Down

0 comments on commit 9eb3acf

Please sign in to comment.