summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMagnus Ahltorp <map@kth.se>2016-05-13 17:20:08 +0200
committerMagnus Ahltorp <map@kth.se>2016-05-13 17:22:09 +0200
commitcc037396bf405ec942352ea834e137ea1b24e6af (patch)
treeaf9d2df2ddb095f50d344ecf8002f0a7c0144762 /test
parent8a19f620874ebecf125f831c633aec02c3922fd6 (diff)
Added 'keyexists' command to permdb
Diffstat (limited to 'test')
-rwxr-xr-xtest/permdbbench.erl37
1 files changed, 36 insertions, 1 deletions
diff --git a/test/permdbbench.erl b/test/permdbbench.erl
index e825146..1575817 100755
--- a/test/permdbbench.erl
+++ b/test/permdbbench.erl
@@ -40,6 +40,17 @@ getvalue_loop([{K, VSeed}|Rest], Port, Datasize) ->
exit(mismatch)
end.
+keyexists_loop([], _Port, _Datasize) ->
+ none;
+keyexists_loop([{K, VSeed}|Rest], Port, Datasize) ->
+ case permdb:keyexists(testdb, K) of
+ true ->
+ keyexists_loop(Rest, Port, Datasize);
+ false ->
+ io:format("key didn't exist ~p~n", [K]),
+ exit(mismatch)
+ end.
+
addvalue_loop([], _Port, _Datasize) ->
none;
addvalue_loop([{K, VSeed}|Rest], Port, Datasize) ->
@@ -56,6 +67,10 @@ testget(_Filename, TestData, Datasize) ->
getvalue_loop(TestData, none, Datasize),
ok.
+testcheck(_Filename, TestData, Datasize) ->
+ keyexists_loop(TestData, none, Datasize),
+ ok.
+
testadd(_Filename, TestData, Datasize) ->
addvalue_loop(TestData, none, Datasize),
case permdb:commit(testdb, 600000) of
@@ -85,12 +100,30 @@ chunk(List, N) ->
Rest = lists:nthtail(N, List),
[First | chunk(Rest, N)].
+massive(Filename) ->
+ Size = 200000,
+ Datasize = 1000,
+ ChunkSize = 200000,
+ {Time1, TestData} = timer:tc(fun () -> gentestdata(Size) end),
+ TestDataLists = chunk(TestData, ChunkSize),
+ testinit(Filename),
+ runbench(fun () ->
+ lists:foreach(fun (E) ->
+ testadd(Filename, E, Datasize)
+ end, TestDataLists)
+ end, Size, "Add"),
+ runbench(fun () -> testget(Filename, TestData, Datasize) end, Size, "Get"),
+ runbench(fun () -> testget(Filename, TestData, Datasize) end, Size, "Get"),
+ runbench(fun () -> testcheck(Filename, TestData, Datasize) end, Size, "Check"),
+ stop().
+
+
main([]) ->
{ok, Cwd} = file:get_cwd(),
code:add_path(Cwd ++ "/ebin"),
Size = 20000,
Datasize = 1000,
- ChunkSize = 1000,
+ ChunkSize = 2000,
io:format("Size ~p entries, chunks of ~p entries, entry size ~p bytes~n", [Size, ChunkSize, Datasize]),
Filename = "testpermdb",
file:delete(Filename),
@@ -125,5 +158,7 @@ main([]) ->
{ok, FileInfoIdx2} = file:read_file_info(Filename ++ ".idx"),
io:format("rebuilt index file size ~p~n", [FileInfoIdx2#file_info.size]),
+ massive(Filename),
+
ok.