Skip to content

Commit

Permalink
Adding testcase for keydir which demonstrates bjorked NIF when used o…
Browse files Browse the repository at this point in the history
…n 32-bit VM
  • Loading branch information
dizzyd committed Jul 4, 2010
1 parent a59a95b commit f25bc6b
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions src/bitcask_nifs.erl
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
-endif.

-ifdef(TEST).
-ifdef(EQC).
-include_lib("eqc/include/eqc.hrl").
-endif.
-compile(export_all).
-include_lib("eunit/include/eunit.hrl").
-endif.

Expand Down Expand Up @@ -205,4 +209,44 @@ create_file_test() ->
true = create_file(Fname),
false = create_file(Fname).

-ifdef(EQC).

-define(POW_2(N), trunc(math:pow(2, N))).

-define(QC_OUT(P),
eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)).

g_uint32() ->
choose(0, ?POW_2(31)).

g_uint64() ->
choose(0, ?POW_2(62)).

g_entry() ->
#bitcask_entry{ key = non_empty(binary()),
file_id = g_uint32(),
total_sz = g_uint32(),
offset = g_uint64(),
tstamp = g_uint32() }.

keydir_get_put_prop() ->
?FORALL(E, g_entry(),
begin
{ok, Ref} = keydir_new(),

ok = keydir_put(Ref, E#bitcask_entry.key, E#bitcask_entry.file_id,
E#bitcask_entry.total_sz, E#bitcask_entry.offset,
E#bitcask_entry.tstamp),

E2 = keydir_get(Ref, E#bitcask_entry.key),
keydir_release(Ref),
?assertEqual(E, E2),
true
end).

keydir_get_put_test_() ->
{timeout, 60, fun() -> eqc:quickcheck(?QC_OUT(keydir_get_put_prop())) end}.

-endif.

-endif.

0 comments on commit f25bc6b

Please sign in to comment.