Browse Source

Add test case for connect network error

Assert 'reply + stop' sequence.
Сергей Прохоров 7 years ago
parent
commit
4eacbed54f
3 changed files with 21 additions and 7 deletions
  1. 15 1
      test/epgsql_SUITE.erl
  2. 3 3
      test/epgsql_cast.erl
  3. 3 3
      test/epgsql_incremental.erl

+ 15 - 1
test/epgsql_SUITE.erl

@@ -49,7 +49,8 @@ groups() ->
             connect_with_invalid_user,
             connect_with_invalid_password,
             connect_with_ssl,
-            connect_with_client_cert
+            connect_with_client_cert,
+            connect_to_closed_port
             | ?MAPS_TESTS
         ]},
         {types, [parallel], [
@@ -258,6 +259,19 @@ connect_map(Config) ->
     ok.
 -endif.
 
+connect_to_closed_port(Config) ->
+    {Host, Port} = epgsql_ct:connection_data(Config),
+    Module = ?config(module, Config),
+    Trap = process_flag(trap_exit, true),
+    ?assertEqual({error, econnrefused},
+                 Module:connect(
+                   Host,
+                   "epgsql_test",
+                   "epgsql_test",
+                   [{port, Port + 1}, {database, "epgsql_test_db1"}])),
+    ?assertMatch({'EXIT', _, econnrefused}, receive Stop -> Stop end),
+    process_flag(trap_exit, Trap).
+
 prepared_query(Config) ->
     Module = ?config(module, Config),
     epgsql_ct:with_connection(Config, fun(C) ->

+ 3 - 3
test/epgsql_cast.erl

@@ -40,9 +40,9 @@ await_connect(Ref) ->
         {C, Ref, connected} ->
             {ok, C};
         {_C, Ref, Error = {error, _}} ->
-            Error;
-        {'EXIT', _C, _Reason} ->
-            {error, closed}
+            Error
+    after 5000 ->
+            error(timeout)
     end.
 
 close(C) ->

+ 3 - 3
test/epgsql_incremental.erl

@@ -38,9 +38,9 @@ await_connect(Ref) ->
         {C, Ref, connected} ->
             {ok, C};
         {_C, Ref, Error = {error, _}} ->
-            Error;
-        {'EXIT', _C, _Reason} ->
-            {error, closed}
+            Error
+    after 5000 ->
+            error(timeout)
     end.
 
 close(C) ->