mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-07 19:22:14 +09:00
fix(gateway): reconcile hotpatched member-list and push fixes (#2425)
This commit is contained in:
@@ -118,6 +118,7 @@ run_broadcast_channel_list_dispatches_sync_immediately() ->
|
||||
<<"user">> => #{<<"id">> => <<"1">>, <<"username">> => <<"one">>},
|
||||
<<"roles">> => []
|
||||
},
|
||||
ok = guild_member_list_engine:bulk_load(Ref, [{1, <<"one">>, [], true}], []),
|
||||
OldState = channel_list_state(Ref, make_subs_tab([{<<"500">>, <<"s1">>, [{0, 99}]}]), [
|
||||
Member
|
||||
]),
|
||||
@@ -144,6 +145,9 @@ run_broadcast_channel_list_fans_out_repeated_syncs() ->
|
||||
#{<<"user">> => #{<<"id">> => <<"1">>, <<"username">> => <<"one">>}},
|
||||
#{<<"user">> => #{<<"id">> => <<"2">>, <<"username">> => <<"two">>}}
|
||||
],
|
||||
ok = guild_member_list_engine:bulk_load(
|
||||
Ref, [{1, <<"one">>, [], true}, {2, <<"two">>, [], true}], []
|
||||
),
|
||||
OldState = channel_list_state(
|
||||
Ref, make_subs_tab([{<<"500">>, <<"s1">>, [{0, 99}]}]), Members
|
||||
),
|
||||
@@ -408,6 +412,7 @@ presence_delta_state(Ref) ->
|
||||
<<"user">> => #{<<"id">> => <<"1">>, <<"username">> => <<"one">>},
|
||||
<<"roles">> => []
|
||||
},
|
||||
ok = guild_member_list_engine:bulk_load(Ref, [{1, <<"one">>, [], true}], []),
|
||||
channel_list_state(Ref, make_subs_tab([{<<"500">>, <<"s1">>, [{0, 99}]}]), [Member]).
|
||||
|
||||
presence_map(Status, Mobile, CustomStatus) ->
|
||||
|
||||
@@ -271,6 +271,9 @@ guild_server_stub(StateData, TestPid) ->
|
||||
|
||||
guild_server_stub_loop(StateData, TestPid) ->
|
||||
receive
|
||||
{'$gen_call', From, {get_voice_guild_state}} ->
|
||||
gen:reply(From, undefined),
|
||||
guild_server_stub_loop(StateData, TestPid);
|
||||
{'$gen_call', From, {get_sessions}} ->
|
||||
gen:reply(From, StateData),
|
||||
guild_server_stub_loop(StateData, TestPid);
|
||||
|
||||
@@ -171,8 +171,8 @@ handle_resume_clamps_truncated_gap_in_replay_buffer_test() ->
|
||||
#{seq => 5, event => message_create, data => #{}}
|
||||
]
|
||||
}),
|
||||
{reply, {ok, Missed, 5}, State1} = session_lifecycle:handle_resume(2, self(), State0),
|
||||
?assertEqual([4, 5], [maps:get(seq, Event) || Event <- Missed]),
|
||||
{reply, {ok, [], 5}, State1} = session_lifecycle:handle_resume(2, self(), State0),
|
||||
?assertEqual([4, 5], collect_dispatched_seqs(2)),
|
||||
?assertEqual(self(), maps:get(socket_pid, State1)).
|
||||
|
||||
handle_resume_clamps_skipped_event_hole_test() ->
|
||||
@@ -183,8 +183,8 @@ handle_resume_clamps_skipped_event_hole_test() ->
|
||||
#{seq => 5, event => message_create, data => #{}}
|
||||
]
|
||||
}),
|
||||
{reply, {ok, Missed, 5}, _State1} = session_lifecycle:handle_resume(2, self(), State0),
|
||||
?assertEqual([3, 5], [maps:get(seq, Event) || Event <- Missed]).
|
||||
{reply, {ok, [], 5}, _State1} = session_lifecycle:handle_resume(2, self(), State0),
|
||||
?assertEqual([3, 5], collect_dispatched_seqs(2)).
|
||||
|
||||
handle_resume_rejects_seq_ahead_of_current_test() ->
|
||||
State0 = resume_test_state(#{
|
||||
@@ -211,8 +211,8 @@ handle_resume_accepts_seq_at_ack_seq_test() ->
|
||||
#{seq => 10, event => message_create, data => #{}}
|
||||
]
|
||||
}),
|
||||
{reply, {ok, Missed, 10}, _State1} = session_lifecycle:handle_resume(8, self(), State0),
|
||||
?assertEqual([9, 10], [maps:get(seq, Event) || Event <- Missed]).
|
||||
{reply, {ok, [], 10}, _State1} = session_lifecycle:handle_resume(8, self(), State0),
|
||||
?assertEqual([9, 10], collect_dispatched_seqs(2)).
|
||||
|
||||
handle_resume_accepts_contiguous_replay_buffer_test() ->
|
||||
State0 = resume_test_state(#{
|
||||
@@ -223,8 +223,8 @@ handle_resume_accepts_contiguous_replay_buffer_test() ->
|
||||
#{seq => 5, event => message_create, data => #{}}
|
||||
]
|
||||
}),
|
||||
{reply, {ok, Missed, 5}, State1} = session_lifecycle:handle_resume(2, self(), State0),
|
||||
?assertEqual([3, 4, 5], [maps:get(seq, Event) || Event <- Missed]),
|
||||
{reply, {ok, [], 5}, State1} = session_lifecycle:handle_resume(2, self(), State0),
|
||||
?assertEqual([3, 4, 5], collect_dispatched_seqs(3)),
|
||||
?assertEqual(self(), maps:get(socket_pid, State1)).
|
||||
|
||||
handle_resume_cancels_pending_resume_timer_test() ->
|
||||
@@ -445,6 +445,19 @@ resume_test_state(Overrides) ->
|
||||
Overrides
|
||||
).
|
||||
|
||||
%% Small replay buffers are delivered inline (dispatched straight to the socket) rather
|
||||
%% than returned in the resume reply, so these tests read the missed events back off
|
||||
%% self()'s mailbox instead of the (now empty) reply list.
|
||||
collect_dispatched_seqs(Count) ->
|
||||
lists:sort([collect_dispatched_seq() || _ <- lists:seq(1, Count)]).
|
||||
|
||||
collect_dispatched_seq() ->
|
||||
receive
|
||||
{dispatch, _Event, _Payload, Seq} -> Seq
|
||||
after 200 ->
|
||||
?assert(false)
|
||||
end.
|
||||
|
||||
fenced_terminate_releases_the_user_session_count_test() ->
|
||||
ok = session_abuse_protection:ensure_tables(),
|
||||
UserId = 900201,
|
||||
|
||||
Reference in New Issue
Block a user