mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +09:00
fix(gateway): repair the session lifecycle, limits and dead code (#2490)
This commit is contained in:
1 parent
9a229c1b73
commit
d3170fc320
28 files changed
+727
-235
No files matched your search
@@ -12,12 +12,15 @@
|
||||
message_create_flood_keeps_replay_buffer_bounded_test_() ->
|
||||
{timeout, 30, fun message_create_flood_keeps_replay_buffer_bounded/0}.
|
||||
|
||||
pre_encoded_flood_does_not_fill_replay_buffer_test_() ->
|
||||
{timeout, 30, fun pre_encoded_flood_does_not_fill_replay_buffer/0}.
|
||||
pre_encoded_flood_keeps_replay_buffer_bounded_test_() ->
|
||||
{timeout, 30, fun pre_encoded_flood_keeps_replay_buffer_bounded/0}.
|
||||
|
||||
guild_members_chunk_flood_does_not_fill_replay_buffer_test_() ->
|
||||
{timeout, 30, fun guild_members_chunk_flood_does_not_fill_replay_buffer/0}.
|
||||
|
||||
guild_member_list_update_flood_does_not_fill_replay_buffer_test_() ->
|
||||
{timeout, 30, fun guild_member_list_update_flood_does_not_fill_replay_buffer/0}.
|
||||
|
||||
message_create_flood_keeps_replay_buffer_bounded() ->
|
||||
State0 = base_state(),
|
||||
State1 = lists:foldl(
|
||||
@@ -40,9 +43,10 @@ message_create_flood_keeps_replay_buffer_bounded() ->
|
||||
?assertEqual(?MAX_EVENT_BUFFER_SIZE, limited_deque:size(Buffer)),
|
||||
?assert(limited_deque:bytes(Buffer) =< ?MAX_TOTAL_BUFFER_BYTES),
|
||||
?assertEqual(?EVENT_COUNT - ?MAX_EVENT_BUFFER_SIZE + 1, first_buffered_seq(BufferedEvents)),
|
||||
?assertEqual(?EVENT_COUNT, last_buffered_seq(BufferedEvents)).
|
||||
?assertEqual(?EVENT_COUNT, last_buffered_seq(BufferedEvents)),
|
||||
?assertEqual(?EVENT_COUNT - ?MAX_EVENT_BUFFER_SIZE, maps:get(replay_floor, State1)).
|
||||
|
||||
pre_encoded_flood_does_not_fill_replay_buffer() ->
|
||||
pre_encoded_flood_keeps_replay_buffer_bounded() ->
|
||||
Encoded = iolist_to_binary(json:encode(#{<<"content">> => <<"preencoded stress">>})),
|
||||
State1 = lists:foldl(
|
||||
fun(_Seq, State) ->
|
||||
@@ -54,6 +58,27 @@ pre_encoded_flood_does_not_fill_replay_buffer() ->
|
||||
base_state(),
|
||||
lists:seq(1, ?EVENT_COUNT)
|
||||
),
|
||||
Buffer = maps:get(buffer, State1),
|
||||
BufferedEvents = limited_deque:to_list(Buffer),
|
||||
?assertEqual(?EVENT_COUNT, maps:get(seq, State1)),
|
||||
?assertEqual(?MAX_EVENT_BUFFER_SIZE, limited_deque:size(Buffer)),
|
||||
?assert(limited_deque:bytes(Buffer) =< ?MAX_TOTAL_BUFFER_BYTES),
|
||||
?assertEqual(?EVENT_COUNT - ?MAX_EVENT_BUFFER_SIZE + 1, first_buffered_seq(BufferedEvents)),
|
||||
?assertEqual(?EVENT_COUNT, last_buffered_seq(BufferedEvents)),
|
||||
?assertEqual(?EVENT_COUNT - ?MAX_EVENT_BUFFER_SIZE, maps:get(replay_floor, State1)).
|
||||
|
||||
guild_member_list_update_flood_does_not_fill_replay_buffer() ->
|
||||
Encoded = iolist_to_binary(json:encode(#{<<"ops">> => []})),
|
||||
State1 = lists:foldl(
|
||||
fun(_Seq, State) ->
|
||||
{noreply, NextState} = session_dispatch:handle_dispatch(
|
||||
guild_member_list_update, {pre_encoded, Encoded}, State
|
||||
),
|
||||
NextState
|
||||
end,
|
||||
base_state(),
|
||||
lists:seq(1, ?EVENT_COUNT)
|
||||
),
|
||||
?assertEqual(?EVENT_COUNT, maps:get(seq, State1)),
|
||||
?assertEqual(0, limited_deque:size(maps:get(buffer, State1))),
|
||||
?assertEqual(0, maps:get(buffer_bytes, State1)).
|
||||
|
||||
Reference in new issue
Block a user