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

Add test to verify unused member crash gets handled

Seth Falcon 14 лет назад
Родитель
Сommit
8354c5daee
1 измененных файлов с 17 добавлено и 2 удалено
  1. 17 2
      test/pooler_test.erl

+ 17 - 2
test/pooler_test.erl

@@ -117,6 +117,12 @@ pooler_basics_test_() ->
              application:stop(pooler)
      end,
      [
+      {"there are init_count members at start",
+       fun() ->
+               Stats = [ P || {P, {_, free, _}} <- pooler:pool_stats() ],
+               ?assertEqual(2, length(Stats))
+       end},
+
       {"take and return one",
        fun() ->
                P = pooler:take_member(),
@@ -147,9 +153,10 @@ pooler_basics_test_() ->
                ?assertEqual(P1, pooler:take_member())
        end},
 
-      {"if a pid crashes it is replaced",
+      {"if an in-use pid crashes it is replaced",
        fun() ->
-               Pids0 = [pooler:take_member(), pooler:take_member(), pooler:take_member()],
+               Pids0 = [pooler:take_member(), pooler:take_member(),
+                        pooler:take_member()],
                Ids0 = [ pooled_gs:get_id(P) || P <- Pids0 ],
                % crash them all
                [ pooled_gs:crash(P) || P <- Pids0 ],
@@ -159,6 +166,14 @@ pooler_basics_test_() ->
        end
        },
 
+      {"if a free pid crashes it is replaced",
+       fun() ->
+               FreePids = [ P || {P, {_, free, _}} <- pooler:pool_stats() ],
+               [ exit(P, kill) || P <- FreePids ],
+               Pids1 = get_n_pids(3, []),
+               ?assertEqual(3, length(Pids1))
+       end},
+
       {"if a pid is returned with bad status it is replaced",
        fun() ->
                Pids0 = [pooler:take_member(), pooler:take_member(), pooler:take_member()],