Browse Source

better timeout tests

Yuriy Zhloba 9 years ago
parent
commit
dfea9a8cc5
3 changed files with 15 additions and 14 deletions
  1. 0 11
      src/epgsql_pool_app.erl
  2. 2 2
      src/epgsql_pool_worker.erl
  3. 13 1
      test/epgsql_pool_SUITE.erl

+ 0 - 11
src/epgsql_pool_app.erl

@@ -31,15 +31,4 @@ test_run() ->
     Res1 = epgsql_pool:query(my_pool, "select * from category"),
     error_logger:info_msg("Res1: ~p", [Res1]),
 
-    Res2 = epgsql_pool:query(my_pool, "select * from category where id = $1", [1], [{timeout, 200}]),
-    error_logger:info_msg("Res2: ~p", [Res2]),
-
-    Res3 = epgsql_pool:query(my_pool, "select pg_sleep(100) as A", [], [{timeout, 5000}]),
-    error_logger:info_msg("Res3: ~p", [Res3]),
-
-    Res4 = epgsql_pool:query(my_pool, "select pg_sleep(100) as B", [], [{timeout, 5000}]),
-    error_logger:info_msg("Res4: ~p", [Res4]),
-
-    Res5 = epgsql_pool:query(my_pool, "select 1 as C"),
-    error_logger:info_msg("Res5: ~p", [Res5]),
     ok.

+ 2 - 2
src/epgsql_pool_worker.erl

@@ -115,9 +115,9 @@ handle_info(keep_alive, #state{connection = #epgsql_connection{sock = Sock},
     %% send async keep-alive query to DB
     KA_Ref = epgsqli:squery(Sock, <<"SELECT 1">>),
 
-    KeepAliveTimeout = epgsql_pool_settings:get(keep_alive_timeout),
+    QueryTimeout = epgsql_pool_settings:get(query_timeout),
     erlang:cancel_timer(NR_KA_Timer),
-    NR_KA_Timer2 = erlang:send_after(KeepAliveTimeout * 2, self(), no_reply_to_keep_alive),
+    NR_KA_Timer2 = erlang:send_after(QueryTimeout, self(), no_reply_to_keep_alive),
     {noreply, State#state{keep_alive_query_ref = KA_Ref, no_reply_keep_alive_timer = NR_KA_Timer2}};
 
 handle_info({_Pid, Ref, done}, #state{keep_alive_query_ref = Ref,

+ 13 - 1
test/epgsql_pool_SUITE.erl

@@ -131,7 +131,7 @@ transaction_test(Config) ->
 
 
 reconnect_test(Config) ->
-    Worker = pooler:take_member(my_pool, 1000) ,
+    Worker = pooler:take_member(my_pool, 1000),
     [state, my_pool, #epgsql_connection{sock = Sock1} | _]= tuple_to_list(sys:get_state(Worker)),
     ct:pal("Worker: ~p, sock: ~p", [Worker, Sock1]),
 
@@ -173,6 +173,18 @@ timeout_test(_Config) ->
     Res2 = epgsql_pool:query(my_pool, "SELECT pg_sleep(1)", [], [{timeout, 500}]),
     ct:pal("Res2:~p", [Res2]),
     ?assertEqual({error, timeout}, Res2),
+
+    Worker = pooler:take_member(my_pool, 1000),
+
+    Res3 = epgsql_pool:query(Worker, "SELECT pg_sleep(100)", [], [{timeout, 500}]),
+    ct:pal("Res3:~p", [Res3]),
+    ?assertEqual({error, timeout}, Res3),
+
+    %% check worker and connection able to perform query
+    Res4 = epgsql_pool:query(Worker, "SELECT * FROM item", [], [{timeout, 500}]),
+    ct:pal("Res4:~p", [Res4]),
+    ?assertMatch({ok, _, _}, Res4),
+
     ok.