diff options
author | Magnus Ahltorp <map@kth.se> | 2016-05-13 17:20:08 +0200 |
---|---|---|
committer | Magnus Ahltorp <map@kth.se> | 2016-05-13 17:22:09 +0200 |
commit | cc037396bf405ec942352ea834e137ea1b24e6af (patch) | |
tree | af9d2df2ddb095f50d344ecf8002f0a7c0144762 /test/permdbbench.erl | |
parent | 8a19f620874ebecf125f831c633aec02c3922fd6 (diff) |
Added 'keyexists' command to permdb
Diffstat (limited to 'test/permdbbench.erl')
-rwxr-xr-x | test/permdbbench.erl | 37 |
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. |