|
@@ -0,0 +1,126 @@
|
|
|
|
+-module(limit_reached_SUITE).
|
|
|
|
+
|
|
|
|
+-include_lib("common_test/include/ct.hrl").
|
|
|
|
+-include_lib("eunit/include/eunit.hrl").
|
|
|
|
+
|
|
|
|
+%%-compile([export_all, nowarn_export_all]).
|
|
|
|
+-export([
|
|
|
|
+ all/0, groups/0,
|
|
|
|
+ init_per_suite/1, end_per_suite/1,
|
|
|
|
+ init_per_group/2, end_per_group/2,
|
|
|
|
+ init_per_testcase/2, end_per_testcase/2,
|
|
|
|
+ limit_reached1_test/1,
|
|
|
|
+ limit_reached2_test/1,
|
|
|
|
+ limit_reached3_test/1,
|
|
|
|
+ limit_reached4_test/1,
|
|
|
|
+ limit_reached5_test/1
|
|
|
|
+]).
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+all() ->
|
|
|
|
+ [
|
|
|
|
+ {group, test_group1}
|
|
|
|
+ %% перелік груп тестів або ж перелік окремих тестів
|
|
|
|
+ %%limit_reached1_test,
|
|
|
|
+ %%limit_reached2_test
|
|
|
|
+ ].
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+groups() ->
|
|
|
|
+ [
|
|
|
|
+ {
|
|
|
|
+ test_group1,
|
|
|
|
+ [sequence], %% виконувати тести послідовно
|
|
|
|
+ [
|
|
|
|
+ limit_reached1_test,
|
|
|
|
+ limit_reached2_test,
|
|
|
|
+ limit_reached3_test,
|
|
|
|
+ limit_reached4_test,
|
|
|
|
+ limit_reached5_test
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ ].
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+%% виконується перед запуском переліку тестів
|
|
|
|
+init_per_suite(Config) ->
|
|
|
|
+ {ok, _} = application:ensure_all_started(token_bucket),
|
|
|
|
+ Config.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+%% виконується після завершення всіх тестів
|
|
|
|
+end_per_suite(Config) ->
|
|
|
|
+ Config.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+%% виконується перед запуском групи тестів
|
|
|
|
+init_per_group(_GroupName, Config) ->
|
|
|
|
+ Config.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+%% виконується після завершення групи тестів
|
|
|
|
+end_per_group(_GroupName, _Config) ->
|
|
|
|
+ ok.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+%% виконується перед запуском кожного тесту
|
|
|
|
+init_per_testcase(_TestCase, Config) ->
|
|
|
|
+ Config.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+%% виконується після кожного тесту
|
|
|
|
+end_per_testcase(_TestCase, Config) ->
|
|
|
|
+ Config.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+limit_reached1_test(_Config) ->
|
|
|
|
+ ?assertEqual(false, token_bucket:is_limit_reached(123) ),
|
|
|
|
+ ct:pal("limit_reached1_test/1 : [OK]"),
|
|
|
|
+ ok.
|
|
|
|
+ %%Config.
|
|
|
|
+ %%{save_config, Config}.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+limit_reached2_test(_Config) ->
|
|
|
|
+ timer:sleep(1001), %% wait 1 sec
|
|
|
|
+ R = [token_bucket:is_limit_reached(123) || _ <- lists:seq(1,5)],
|
|
|
|
+ ?assertEqual([false,false,false,true,true], R),
|
|
|
|
+ ct:pal("limit_reached2_test/1 : [OK]"),
|
|
|
|
+ ok.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+limit_reached3_test(_Config) ->
|
|
|
|
+ timer:sleep(1001), %% wait 1 sec
|
|
|
|
+ R = [token_bucket:is_limit_reached(123, 4) || _ <- lists:seq(1,5)],
|
|
|
|
+ ?assertEqual([false,false,false,false,true], R),
|
|
|
|
+ ct:pal("limit_reached3_test/1 : [OK]"),
|
|
|
|
+ ok.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+limit_reached4_test(_Config) ->
|
|
|
|
+ timer:sleep(1001), %% wait 1 sec
|
|
|
|
+ R = [token_bucket:is_limit_reached(123, infinity) || _ <- lists:seq(1,5)],
|
|
|
|
+ ?assertEqual([false,false,false,false,false], R),
|
|
|
|
+ ct:pal("limit_reached4_test/1 : [OK]"),
|
|
|
|
+ ok.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+limit_reached5_test(_Config) ->
|
|
|
|
+ timer:sleep(1001), %% wait 1 sec
|
|
|
|
+ R = [token_bucket:is_limit_reached(123) || _ <- lists:seq(1,5)],
|
|
|
|
+ ?assertEqual([false,false,false,true,true], R),
|
|
|
|
+
|
|
|
|
+ R2 = [token_bucket:is_limit_reached(123, 4) || _ <- lists:seq(1,5)],
|
|
|
|
+ ?assertEqual([false,true,true,true,true], R2),
|
|
|
|
+
|
|
|
|
+ R3 = [token_bucket:is_limit_reached(777, 4) || _ <- lists:seq(1,5)],
|
|
|
|
+ ?assertEqual([false,false,false,false,true], R3),
|
|
|
|
+
|
|
|
|
+ timer:sleep(1001), %% wait 1 sec
|
|
|
|
+
|
|
|
|
+ ?assertEqual(false, token_bucket:is_limit_reached(123) ),
|
|
|
|
+
|
|
|
|
+ ct:pal("limit_reached5_test/1 : [OK]"),
|
|
|
|
+ ok.
|
|
|
|
+
|