|
@@ -162,8 +162,26 @@ t_match_ordering(_) ->
|
|
|
?assertEqual(Ids1, Ids2),
|
|
?assertEqual(Ids1, Ids2),
|
|
|
?assertEqual([t_match_id1, t_match_id2, t_match_id3], Ids1).
|
|
?assertEqual([t_match_id1, t_match_id2, t_match_id3], Ids1).
|
|
|
|
|
|
|
|
|
|
+t_match_wildcards(_) ->
|
|
|
|
|
+ Tab = new(),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/b">>, id1, <<>>, Tab),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/b/#">>, id2, <<>>, Tab),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/b/#">>, id3, <<>>, Tab),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/b/c">>, id4, <<>>, Tab),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/b/+">>, id5, <<>>, Tab),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/b/d">>, id6, <<>>, Tab),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/+/+">>, id7, <<>>, Tab),
|
|
|
|
|
+ emqx_rule_index:insert(<<"a/+/#">>, id8, <<>>, Tab),
|
|
|
|
|
+
|
|
|
|
|
+ Rules = [id(M) || M <- emqx_rule_index:matches(<<"a/b/c">>, Tab, [])],
|
|
|
|
|
+ ?assertEqual([id2, id3, id4, id5, id7, id8], Rules),
|
|
|
|
|
+
|
|
|
|
|
+ Rules1 = [id(M) || M <- emqx_rule_index:matches(<<"a/b">>, Tab, [])],
|
|
|
|
|
+ ?assertEqual([id1, id2, id3, id8], Rules1),
|
|
|
|
|
+ ok.
|
|
|
|
|
+
|
|
|
new() ->
|
|
new() ->
|
|
|
- ets:new(?MODULE, [public, ordered_set, {write_concurrency, true}]).
|
|
|
|
|
|
|
+ ets:new(?MODULE, [public, ordered_set, {read_concurrency, true}]).
|
|
|
|
|
|
|
|
match(T, Tab) ->
|
|
match(T, Tab) ->
|
|
|
emqx_rule_index:match(T, Tab).
|
|
emqx_rule_index:match(T, Tab).
|