Jelajahi Sumber

priority_queue:plen/2 test

Feng 10 tahun lalu
induk
melakukan
89741b6bfe
2 mengubah file dengan 27 tambahan dan 1 penghapusan
  1. 17 0
      test/emqttd_mqueue_tests.erl
  2. 10 1
      test/priority_queue_tests.erl

+ 17 - 0
test/emqttd_mqueue_tests.erl

@@ -140,6 +140,23 @@ infinity_priority_mqueue_test() ->
             end, Q, lists:seq(1, 255)),
     ?assertEqual(510, ?Q:len(Qx)),
     ?assertEqual([{len, 510}, {max_len, infinity}, {dropped, 0}], ?Q:stats(Qx)).
+
+priority_mqueue2_test() ->
+    Opts = [{type, priority},
+            {max_length, 2},
+            {low_watermark, 0.2},
+            {high_watermark, 0.6},
+            {queue_qos0, false}],
+    Q = ?Q:new("priority_queue2_test", Opts, alarm_fun()),
+    ?assertEqual(2, ?Q:max_len(Q)),
+    Q1 = ?Q:in(#mqtt_message{topic = <<"x">>, qos = 1, payload = <<1>>}, Q),
+    Q2 = ?Q:in(#mqtt_message{topic = <<"x">>, qos = 1, payload = <<2>>}, Q1),
+    Q3 = ?Q:in(#mqtt_message{topic = <<"y">>, qos = 1, payload = <<3>>}, Q2),
+    Q4 = ?Q:in(#mqtt_message{topic = <<"y">>, qos = 1, payload = <<4>>}, Q3),
+    ?assertEqual(4, ?Q:len(Q4)),
+    {{value, Val}, Q5} = ?Q:out(Q4),
+    ?debugFmt("Val: ~p~n", [Val]),
+    ?assertEqual(3, ?Q:len(Q5)).
  
 alarm_fun() -> fun(_, _) -> alarm_fun() end.
 

+ 10 - 1
test/priority_queue_tests.erl

@@ -40,7 +40,16 @@ plen_test() ->
     Q2 = ?PQ:in(y, 2, Q1),
     ?assertEqual(1, ?PQ:plen(2, Q2)),
     Q3 = ?PQ:in(z, 2, Q2),
-    ?assertEqual(2, ?PQ:plen(2, Q3)).
+    ?assertEqual(2, ?PQ:plen(2, Q3)),
+    {_, Q4} = ?PQ:out(1, Q3),
+    ?assertEqual(0, ?PQ:plen(1, Q4)),
+    {_, Q5} = ?PQ:out(Q4),
+    ?assertEqual(1, ?PQ:plen(2, Q5)),
+    {_, Q6} = ?PQ:out(Q5),
+    ?assertEqual(0, ?PQ:plen(2, Q6)),
+    ?assertEqual(1, ?PQ:len(Q6)),
+    {_, Q7} = ?PQ:out(Q6),
+    ?assertEqual(0, ?PQ:len(Q7)).
 
 out2_test() ->
     Els = [a, {b, 1}, {c, 1}, {d, 2}, {e, 2}, {f, 2}],