Просмотр исходного кода

test: add test coverage for pmap cluster nodes

zmstone 1 год назад
Родитель
Сommit
996727215f

+ 3 - 1
apps/emqx_dashboard/src/emqx_dashboard_monitor.erl

@@ -47,7 +47,9 @@
 -export([do_sample/2]).
 
 %% For tests
--export([current_rate_cluster/0, sample_interval/1, store/1, format/1, clean/1, lookup/1]).
+-export([
+    current_rate_cluster/0, sample_interval/1, store/1, format/1, clean/1, lookup/1, sample_nodes/3
+]).
 
 -define(TAB, ?MODULE).
 

+ 18 - 3
apps/emqx_dashboard/test/emqx_dashboard_monitor_SUITE.erl

@@ -167,6 +167,21 @@ t_empty_table(_Config) ->
         sys:resume(whereis(emqx_dashboard_monitor))
     end.
 
+t_pmap_nodes(_Config) ->
+    MaxAge = 3 * timer:hours(24),
+    Now = erlang:system_time(millisecond) - 1,
+    Interval = emqx_dashboard_monitor:sample_interval(MaxAge),
+    NowBase = Now - (Now rem Interval),
+    StartTs = NowBase - MaxAge,
+    DataPoints = 5,
+    ok = emqx_dashboard_monitor:clean(0),
+    ok = insert_data_points(DataPoints, StartTs, Now),
+    Nodes = [node(), node(), node()],
+    Data = emqx_dashboard_monitor:format(emqx_dashboard_monitor:sample_nodes(Nodes, StartTs, #{})),
+    #{sent := Total0} = hd(Data),
+    TotalSent = check_sample_intervals(Interval, hd(Data), tl(Data), _Index = 1, Total0),
+    ?assertEqual(DataPoints * length(Nodes), TotalSent).
+
 t_downsample_7d(_Config) ->
     MaxAge = 7 * timer:hours(24),
     test_downsample(MaxAge, 10).
@@ -190,14 +205,14 @@ test_downsample(MaxAge, DataPoints) ->
     Interval = emqx_dashboard_monitor:sample_interval(MaxAge),
     NowBase = Now - (Now rem Interval),
     StartTs = NowBase - MaxAge,
-    emqx_dashboard_monitor:clean(0),
-    ?assertEqual([], ets:tab2list(emqx_dashboard_monitor)),
+    ok = emqx_dashboard_monitor:clean(0),
     %% insert the start mark for deterministic test boundary
     ok = write(StartTs, sent_1()),
     ok = insert_data_points(DataPoints - 1, StartTs, Now),
     Data = emqx_dashboard_monitor:format(emqx_dashboard_monitor:do_sample(all, StartTs)),
     ?assertEqual(StartTs, maps:get(time_stamp, hd(Data))),
-    TotalSent = check_sample_intervals(Interval, hd(Data), tl(Data), _Index = 1, _Total = 1),
+    #{sent := Total0} = hd(Data),
+    TotalSent = check_sample_intervals(Interval, hd(Data), tl(Data), _Index = 1, Total0),
     ?assertEqual(DataPoints, TotalSent).
 
 check_sample_intervals(_Interval, _, [], _Index, Total) ->