Created a new stress test.
This commit is contained in:
parent
036e12fd62
commit
83c18a2bda
6 changed files with 113 additions and 2 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -5,3 +5,5 @@
|
||||||
c_src/system
|
c_src/system
|
||||||
test/logs
|
test/logs
|
||||||
test/test.cover
|
test/test.cover
|
||||||
|
int_test/logs
|
||||||
|
int_test/test.cover
|
||||||
|
|
12
Rakefile
12
Rakefile
|
@ -37,3 +37,15 @@ task :test do
|
||||||
run_tests "test", "+A10"
|
run_tests "test", "+A10"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
task :int_test do
|
||||||
|
run_tests "int_test", "+A10"
|
||||||
|
end
|
||||||
|
|
||||||
|
# task :compile_perf_tests do
|
||||||
|
# do_compile_tests("perftest")
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# desc "Run performance tests"
|
||||||
|
# task :perftest => [:compile, :compile_perf_tests] do
|
||||||
|
# run_tests "perftest", "+A10"
|
||||||
|
# end
|
||||||
|
|
|
@ -136,7 +136,7 @@ def run_tests(dir, rest = "")
|
||||||
-noshell -s ct_run script_start -s erlang halt \
|
-noshell -s ct_run script_start -s erlang halt \
|
||||||
#{get_cover(dir)} \
|
#{get_cover(dir)} \
|
||||||
#{get_suites(dir)} -logdir #{dir}/logs -env TEST_DIR #{PWD}/#{dir} \
|
#{get_suites(dir)} -logdir #{dir}/logs -env TEST_DIR #{PWD}/#{dir} \
|
||||||
#{rest}" , :verbose => false
|
#{rest}"# , :verbose => false
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
5
int_test/DB_CONFIG
Normal file
5
int_test/DB_CONFIG
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
set_flags DB_TXN_WRITE_NOSYNC
|
||||||
|
set_cachesize 0 536870912 1
|
||||||
|
set_lg_max 104857600
|
||||||
|
set_lg_bsize 536870912
|
||||||
|
set_log_config DB_LOG_IN_MEMORY
|
92
int_test/stress_SUITE.erl
Normal file
92
int_test/stress_SUITE.erl
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
%% -------------------------------------------------------------------
|
||||||
|
%%
|
||||||
|
%% bdberl: Port Driver Stress tests
|
||||||
|
%% Copyright (c) 2008 The Hive. All rights reserved.
|
||||||
|
%%
|
||||||
|
%% -------------------------------------------------------------------
|
||||||
|
-module(stress_SUITE).
|
||||||
|
-compile(export_all).
|
||||||
|
-include_lib("ct.hrl").
|
||||||
|
|
||||||
|
%% NOTE: all of the tests are set for a low number of iterations to guarantee
|
||||||
|
%% that they all pass and run in a reasonable amount of time. That kinda defeats
|
||||||
|
%% the purpose of the test, tho. Work is ongoing to make this a useful test suite.
|
||||||
|
|
||||||
|
all() ->
|
||||||
|
[rewrite_array_test,
|
||||||
|
rewrite_bytes_test,
|
||||||
|
write_array_test,
|
||||||
|
write_bytes_test].
|
||||||
|
|
||||||
|
init_per_suite(Config) ->
|
||||||
|
{ok, Cwd} = file:get_cwd(),
|
||||||
|
{ok, _} = file:copy(lists:append([Cwd, "/../../../int_test/DB_CONFIG"]),
|
||||||
|
lists:append([Cwd, "/DB_CONFIG"])),
|
||||||
|
crypto:start(),
|
||||||
|
Config.
|
||||||
|
|
||||||
|
end_per_suite(_Config) ->
|
||||||
|
ok.
|
||||||
|
|
||||||
|
init_per_testcase(TestCase, Config) ->
|
||||||
|
Size = 1024 * 1024,
|
||||||
|
Chunk = crypto:rand_bytes(Size),
|
||||||
|
Name = io_lib:format("~p.db", [TestCase]),
|
||||||
|
{ok, Db} = bdberl:open(Name, hash),
|
||||||
|
[{size, Size}, {chunk, Chunk}, {db, Db}|Config].
|
||||||
|
|
||||||
|
end_per_testcase(_TestCase, Config) ->
|
||||||
|
bdberl:close(?config(db, Config)),
|
||||||
|
ok.
|
||||||
|
|
||||||
|
%%---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
rewrite_array_test(Config) ->
|
||||||
|
%% If you try to run this one for more than 2K iterations than the Erlang
|
||||||
|
%% VM will die with a memory allocation error when creating the binary.
|
||||||
|
ct:print("Running rewrite_array test for 2000 iterations..."),
|
||||||
|
Chunk = ?config(chunk, Config),
|
||||||
|
rewrite_array(?config(db, Config), Chunk, [Chunk], 20).
|
||||||
|
|
||||||
|
rewrite_array(_Db, _Block, _Bytes, 0) ->
|
||||||
|
ok;
|
||||||
|
rewrite_array(Db, Block, Bytes, Iter) ->
|
||||||
|
bdberl:put(Db, 1, Bytes),
|
||||||
|
rewrite_array(Db, Block, [Block|Bytes], Iter - 1).
|
||||||
|
|
||||||
|
%%---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
rewrite_bytes_test(Config) ->
|
||||||
|
ct:print("Running rewrite_bytes test for 2500 iterations..."),
|
||||||
|
rewrite_bytes(?config(db, Config), ?config(chunk, Config), 25).
|
||||||
|
|
||||||
|
rewrite_bytes(_Db, _Bytes, 0) ->
|
||||||
|
ok;
|
||||||
|
rewrite_bytes(Db, Bytes, Iter) ->
|
||||||
|
bdberl:put(Db, 1, Bytes),
|
||||||
|
rewrite_bytes(Db, Bytes, Iter - 1).
|
||||||
|
|
||||||
|
%%---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
write_array_test(Config) ->
|
||||||
|
ct:print("Running write_array test for 150 iterations..."),
|
||||||
|
Chunk = ?config(chunk, Config),
|
||||||
|
write_array(?config(db, Config), Chunk, [Chunk], 15).
|
||||||
|
|
||||||
|
write_array(_Db, _Block, _Bytes, 0) ->
|
||||||
|
ok;
|
||||||
|
write_array(Db, Block, Bytes, Iter) ->
|
||||||
|
bdberl:put(Db, Iter, Bytes),
|
||||||
|
write_array(Db, Block, [Block|Bytes], Iter - 1).
|
||||||
|
|
||||||
|
%%---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
write_bytes_test(Config) ->
|
||||||
|
ct:print("Running write_bytes test for 2500 iterations..."),
|
||||||
|
write_bytes(?config(db, Config), ?config(chunk, Config), 25).
|
||||||
|
|
||||||
|
write_bytes(_Db, _Bytes, 0) ->
|
||||||
|
ok;
|
||||||
|
write_bytes(Db, Bytes, Iter) ->
|
||||||
|
bdberl:put(Db, Iter, Bytes),
|
||||||
|
write_bytes(Db, Bytes, Iter - 1).
|
|
@ -47,7 +47,7 @@ thrash_run(Owner) ->
|
||||||
thrash_incr_loop(Owner, 0) ->
|
thrash_incr_loop(Owner, 0) ->
|
||||||
Owner ! {finished, self()};
|
Owner ! {finished, self()};
|
||||||
thrash_incr_loop(Owner, Count) ->
|
thrash_incr_loop(Owner, Count) ->
|
||||||
ct:print("~p", [Count]),
|
% ct:print("~p", [Count]),
|
||||||
%% Choose random key
|
%% Choose random key
|
||||||
Key = random:uniform(1200),
|
Key = random:uniform(1200),
|
||||||
|
|
Loading…
Reference in a new issue