test: provide more general `keymapper_info/1`
This commit is contained in:
parent
0d495c97c8
commit
b7566ab7e7
|
@ -105,7 +105,7 @@
|
||||||
%% Debug/troubleshooting:
|
%% Debug/troubleshooting:
|
||||||
%% Keymappers
|
%% Keymappers
|
||||||
-export([
|
-export([
|
||||||
bitsize/1,
|
keymapper_info/1,
|
||||||
compute_bitstring/3,
|
compute_bitstring/3,
|
||||||
compute_topic_bitmask/2,
|
compute_topic_bitmask/2,
|
||||||
compute_time_bitmask/1,
|
compute_time_bitmask/1,
|
||||||
|
@ -390,9 +390,9 @@ refresh_iterator(It = #it{handle = Handle, cursor = Cursor, next_action = Action
|
||||||
%% Internal exports
|
%% Internal exports
|
||||||
%%================================================================================
|
%%================================================================================
|
||||||
|
|
||||||
-spec bitsize(keymapper()) -> bits().
|
-spec keymapper_info(keymapper()) -> [bitsource()].
|
||||||
bitsize(#keymapper{bitsize = Bitsize}) ->
|
keymapper_info(#keymapper{source = Source, bitsize = Bitsize, epoch = Epoch}) ->
|
||||||
Bitsize.
|
#{source => Source, bitsize => Bitsize, epoch => Epoch}.
|
||||||
|
|
||||||
make_message_key(Topic, PublishedAt, MessageID, Keymapper) ->
|
make_message_key(Topic, PublishedAt, MessageID, Keymapper) ->
|
||||||
combine(compute_bitstring(Topic, PublishedAt, Keymapper), MessageID, Keymapper).
|
combine(compute_bitstring(Topic, PublishedAt, Keymapper), MessageID, Keymapper).
|
||||||
|
|
|
@ -28,13 +28,14 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
prop_bitstring_computes() ->
|
prop_bitstring_computes() ->
|
||||||
?FORALL(Keymapper, keymapper(), begin
|
?FORALL(
|
||||||
Bitsize = emqx_replay_message_storage:bitsize(Keymapper),
|
Keymapper,
|
||||||
|
keymapper(),
|
||||||
?FORALL({Topic, Timestamp}, {topic(), integer()}, begin
|
?FORALL({Topic, Timestamp}, {topic(), integer()}, begin
|
||||||
BS = emqx_replay_message_storage:compute_bitstring(Topic, Timestamp, Keymapper),
|
BS = emqx_replay_message_storage:compute_bitstring(Topic, Timestamp, Keymapper),
|
||||||
is_integer(BS) andalso (BS < (1 bsl Bitsize))
|
is_integer(BS) andalso (BS < (1 bsl get_keymapper_bitsize(Keymapper)))
|
||||||
end)
|
end)
|
||||||
end).
|
).
|
||||||
|
|
||||||
prop_topic_bitmask_computes() ->
|
prop_topic_bitmask_computes() ->
|
||||||
Keymapper = make_keymapper(16, [8, 12, 16], 100),
|
Keymapper = make_keymapper(16, [8, 12, 16], 100),
|
||||||
|
@ -56,7 +57,7 @@ prop_next_seek_monotonic() ->
|
||||||
),
|
),
|
||||||
?FORALL(
|
?FORALL(
|
||||||
Bitstring,
|
Bitstring,
|
||||||
bitstr(emqx_replay_message_storage:bitsize(Keymapper)),
|
bitstr(get_keymapper_bitsize(Keymapper)),
|
||||||
emqx_replay_message_storage:compute_next_seek(Bitstring, Filter) >= Bitstring
|
emqx_replay_message_storage:compute_next_seek(Bitstring, Filter) >= Bitstring
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
@ -436,6 +437,9 @@ make_keymapper(TimestampBits, TopicBits, MaxEpoch) ->
|
||||||
epoch => MaxEpoch
|
epoch => MaxEpoch
|
||||||
}).
|
}).
|
||||||
|
|
||||||
|
get_keymapper_bitsize(Keymapper) ->
|
||||||
|
maps:get(bitsize, emqx_replay_message_storage:keymapper_info(Keymapper)).
|
||||||
|
|
||||||
-spec interleave(list({Tag, list(E)}), rand:state()) -> list({Tag, E}).
|
-spec interleave(list({Tag, list(E)}), rand:state()) -> list({Tag, E}).
|
||||||
interleave(Seqs, Rng) ->
|
interleave(Seqs, Rng) ->
|
||||||
interleave(Seqs, length(Seqs), Rng).
|
interleave(Seqs, length(Seqs), Rng).
|
||||||
|
|
Loading…
Reference in New Issue