Browse Source

unit tests for pool_settings

Yuriy Zhloba 9 years ago
parent
commit
aadc2186c4
3 changed files with 58 additions and 2 deletions
  1. 3 0
      src/epgsql_pool.app.src
  2. 5 2
      src/epgsql_pool_settings.erl
  3. 50 0
      test/epgsql_pool_settings_tests.erl

+ 3 - 0
src/epgsql_pool.app.src

@@ -1,3 +1,5 @@
+%%-*- mode: erlang -*-
+
 {application, epgsql_pool, [
 {application, epgsql_pool, [
     {description, "Connection pool for PostgreSQL"},
     {description, "Connection pool for PostgreSQL"},
     {vsn, "1.0.0"},
     {vsn, "1.0.0"},
@@ -6,5 +8,6 @@
         epgsql,
         epgsql,
         pooler
         pooler
     ]},
     ]},
+    {mod, {epgsql_pool_app, []}},
     {env, []}
     {env, []}
 ]}.
 ]}.

+ 5 - 2
src/epgsql_pool_settings.erl

@@ -23,7 +23,7 @@ get_connection_params(PoolName) ->
     Key = {connection, epgsql_pool_utils:pool_name_to_atom(PoolName)},
     Key = {connection, epgsql_pool_utils:pool_name_to_atom(PoolName)},
     case ets:lookup(?MODULE, Key) of
     case ets:lookup(?MODULE, Key) of
         [] -> throw({connection_params_not_found, PoolName});
         [] -> throw({connection_params_not_found, PoolName});
-        [ConnectionParams] -> ConnectionParams
+        [{{connection, PoolName}, ConnectionParams}] -> ConnectionParams
     end.
     end.
 
 
 
 
@@ -61,7 +61,7 @@ init([]) ->
 
 
 -spec handle_call(gs_request(), gs_from(), gs_reply()) -> gs_call_reply().
 -spec handle_call(gs_request(), gs_from(), gs_reply()) -> gs_call_reply().
 handle_call({save, Key, Value}, _From, Table) ->
 handle_call({save, Key, Value}, _From, Table) ->
-    ets:insert(Table, Key, Value),
+    ets:insert(Table, {Key, Value}),
     {reply, ok, Table};
     {reply, ok, Table};
 
 
 handle_call(Any, _From, State) ->
 handle_call(Any, _From, State) ->
@@ -76,6 +76,9 @@ handle_cast(Any, State) ->
 
 
 
 
 -spec handle_info(gs_request(), gs_state()) -> gs_info_reply().
 -spec handle_info(gs_request(), gs_state()) -> gs_info_reply().
+handle_info(stop, State) ->
+    {stop, normal, State};
+
 handle_info(Request, State) ->
 handle_info(Request, State) ->
     error_logger:error_msg("unknown info ~p in ~p ~n", [Request, ?MODULE]),
     error_logger:error_msg("unknown info ~p in ~p ~n", [Request, ?MODULE]),
     {noreply, State}.
     {noreply, State}.

+ 50 - 0
test/epgsql_pool_settings_tests.erl

@@ -0,0 +1,50 @@
+-module(epgsql_pool_settings_tests).
+
+-include("epgsql_pool.hrl").
+-include_lib("eunit/include/eunit.hrl").
+
+
+get_set_test() ->
+    epgsql_pool_settings:start_link(),
+
+    ?assertEqual(10000, epgsql_pool_settings:get(connection_timeout)),
+    ?assertEqual(10000, epgsql_pool_settings:get(query_timeout)),
+    ?assertEqual(1000, epgsql_pool_settings:get(pooler_get_worker_timeout)),
+
+    epgsql_pool_settings:set(connection_timeout, 5000),
+    ?assertEqual(5000, epgsql_pool_settings:get(connection_timeout)),
+
+    epgsql_pool_settings:set(max_reconnect_timeout, 4500),
+    ?assertEqual(4500, epgsql_pool_settings:get(max_reconnect_timeout)),
+
+    ?assertThrow({settings_not_found, some_key},
+                 epgsql_pool_settings:get(some_key)),
+
+    epgsql_pool_settings:set(some_key, 42),
+    ?assertEqual(42, epgsql_pool_settings:get(some_key)),
+
+    epgsql_pool_settings ! stop,
+    ok.
+
+
+connection_params_test() ->
+    epgsql_pool_settings:start_link(),
+
+    ?assertThrow({connection_params_not_found, some_pool},
+                 epgsql_pool_settings:get_connection_params(some_pool)),
+
+    Params1 = #epgsql_connection_params{host = "localhost", port = 5432,
+                                        username="user", password="123",
+                                        database="db"},
+    epgsql_pool_settings:set_connection_params(pool_1, Params1),
+
+    Params2 = #epgsql_connection_params{host = "some.host", port = 5432,
+                                        username="someuser", password="123",
+                                        database="somedb"},
+    epgsql_pool_settings:set_connection_params(pool_2, Params2),
+
+    ?assertEqual(Params1, epgsql_pool_settings:get_connection_params(pool_1)),
+    ?assertEqual(Params2, epgsql_pool_settings:get_connection_params(pool_2)),
+
+    epgsql_pool_settings ! stop,
+    ok.