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

Exceptionally simple performance test upon selects

Mayorov Andrey 11 лет назад
Родитель
Сommit
8408128252
1 измененных файлов с 60 добавлено и 0 удалено
  1. 60 0
      test/pgsql_perf_tests.erl

+ 60 - 0
test/pgsql_perf_tests.erl

@@ -0,0 +1,60 @@
+%%%
+
+-module(pgsql_perf_tests).
+
+-include_lib("eunit/include/eunit.hrl").
+
+%%
+
+perf_test_() ->
+    [
+        {timeout, 60, prepare_data()},
+        {timeout, 60, get_data()}
+    ].
+
+drop_data_test_() ->
+    drop_data().
+
+%%
+
+-define(noise_size, 10000000).
+
+prepare_data() ->
+    {"insert blob", with_connection(fun (C) ->
+        Noise = noise(?noise_size),
+        {ok, [], []} = pgsql:squery(C, "create table test_big_blobs (id int4 primary key, noise bytea)"),
+        {ok, 1} = pgsql:equery(C, "insert into test_big_blobs (id, noise) values (1, $1)", [Noise])
+    end)}.
+
+get_data() ->
+    {"get blob back", with_connection(fun (C) ->
+        {ok, _, [{Noise}]} = pgsql:equery(C, "select noise from test_big_blobs"),
+        ?assertEqual(?noise_size, byte_size(Noise))
+    end)}.
+
+drop_data() ->
+    {"cleanup", with_connection(fun (C) ->
+        {ok, [], []} = pgsql:squery(C, "drop table test_big_blobs")
+    end)}.
+
+noise(N) ->
+    crypto:rand_bytes(N).
+
+%%
+
+-define(host, "localhost").
+-define(port, 5432).
+
+with_connection(F) ->
+    with_connection(F, "epgsql_test", []).
+
+with_connection(F, Username, Args) ->
+    Args2 = [{port, ?port}, {database, "epgsql_test_db1"} | Args],
+    fun () ->
+        {ok, C} = pgsql:connect(?host, Username, Args2),
+        try
+            F(C)
+        after
+            pgsql:close(C)
+        end
+    end.