Skip to content
Browse files

Make tests compile with Triq again

  • Loading branch information...
1 parent 4023ecf commit 5733075cda5c801f7d310f2569d3e63c189b40f1 @krestenkrab krestenkrab committed
Showing with 127 additions and 5 deletions.
  1. +3 −1 rebar.config
  2. +121 −0 src/basho_bench_driver_hanoidb.erl
  3. +0 −1 test/hanoidb_merger_tests.erl
  4. +3 −3 test/hanoidb_tests.erl
View
4 rebar.config
@@ -3,7 +3,7 @@
{clean_files, ["*.eunit", "ebin/*.beam"]}.
{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}.
-{erl_opts, [%{d,'TRIQ',true}, %{d,'DEBUG',true},
+{erl_opts, [%{d,'DEBUG',true},
{parse_transform, lager_transform},
fail_on_warning,
warn_unused_vars,
@@ -28,6 +28,8 @@
, {lager, ".*", {git, "git://github.com/basho/lager", {branch, "master"}}}
, {snappy, "1.0.*", {git, "git://github.com/fdmanana/snappy-erlang-nif.git", {branch, "master"}}}
, {plain_fsm, "1.1.*", {git, "git://github.com/gburd/plain_fsm", {branch, "master"}}}
+ , {basho_bench, ".*", {git, "git://github.com/basho/basho_bench", {branch, "master"}}}
+ , {triq, ".*", {git, "git://github.com/krestenkrab/triq", {branch, "master"}}}
% , {lz4, ".*", {git, "git://github.com/gburd/erlang-lz4.git", {branch, "master"}}}
% , {edown, "0.3.*", {git, "git://github.com/esl/edown.git", {branch, "master"}}}
% , {asciiedoc, "0.1.*", {git, "git://github.com/norton/asciiedoc.git", {branch, "master"}}}
View
121 src/basho_bench_driver_hanoidb.erl
@@ -0,0 +1,121 @@
+%% ----------------------------------------------------------------------------
+%%
+%% hanoidb: LSM-trees (Log-Structured Merge Trees) Indexed Storage
+%%
+%% Copyright 2011-2012 (c) Trifork A/S. All Rights Reserved.
+%% http://trifork.com/ info@trifork.com
+%%
+%% Copyright 2012 (c) Basho Technologies, Inc. All Rights Reserved.
+%% http://basho.com/ info@basho.com
+%%
+%% This file is provided to you under the Apache License, Version 2.0 (the
+%% "License"); you may not use this file except in compliance with the License.
+%% You may obtain a copy of the License at
+%%
+%% http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+%% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+%% License for the specific language governing permissions and limitations
+%% under the License.
+%%
+%% ----------------------------------------------------------------------------
+
+-module(basho_bench_driver_hanoidb).
+
+-record(state, { tree,
+ filename,
+ flags,
+ sync_interval,
+ last_sync }).
+
+-export([new/1,
+ run/4]).
+
+-include("hanoidb.hrl").
+-include_lib("basho_bench/include/basho_bench.hrl").
+
+-record(key_range, { from_key = <<>> :: binary(),
+ from_inclusive = true :: boolean(),
+ to_key :: binary() | undefined,
+ to_inclusive = false :: boolean(),
+ limit :: pos_integer() | undefined }).
+
+%% ====================================================================
+%% API
+%% ====================================================================
+
+new(_Id) ->
+ %% Make sure bitcask is available
+ case code:which(hanoidb) of
+ non_existing ->
+ ?FAIL_MSG("~s requires hanoidb to be available on code path.\n",
+ [?MODULE]);
+ _ ->
+ ok
+ end,
+
+ %% Get the target directory
+ Dir = basho_bench_config:get(hanoidb_dir, "."),
+ Filename = filename:join(Dir, "test.hanoidb"),
+ Config = basho_bench_config:get(hanoidb_flags, []),
+
+ %% Look for sync interval config
+ case basho_bench_config:get(hanoidb_sync_interval, infinity) of
+ Value when is_integer(Value) ->
+ SyncInterval = Value;
+ infinity ->
+ SyncInterval = infinity
+ end,
+
+ %% Get any bitcask flags
+ case hanoidb:open(Filename, Config) of
+ {error, Reason} ->
+ ?FAIL_MSG("Failed to open hanoidb in ~s: ~p\n", [Filename, Reason]);
+ {ok, FBTree} ->
+ {ok, #state { tree = FBTree,
+ filename = Filename,
+ sync_interval = SyncInterval,
+ last_sync = os:timestamp() }}
+ end.
+
+run(get, KeyGen, _ValueGen, State) ->
+ case hanoidb:lookup(State#state.tree, KeyGen()) of
+ {ok, _Value} ->
+ {ok, State};
+ not_found ->
+ {ok, State};
+ {error, Reason} ->
+ {error, Reason}
+ end;
+run(put, KeyGen, ValueGen, State) ->
+ case hanoidb:put(State#state.tree, KeyGen(), ValueGen()) of
+ ok ->
+ {ok, State};
+ {error, Reason} ->
+ {error, Reason}
+ end;
+run(delete, KeyGen, _ValueGen, State) ->
+ case hanoidb:delete(State#state.tree, KeyGen()) of
+ ok ->
+ {ok, State};
+ {error, Reason} ->
+ {error, Reason}
+ end;
+
+run(fold_100, KeyGen, _ValueGen, State) ->
+ [From,To] = lists:usort([KeyGen(), KeyGen()]),
+ case hanoidb:sync_fold_range(State#state.tree,
+ fun(_Key,_Value,Count) ->
+ Count+1
+ end,
+ 0,
+ #key_range{ from_key=From,
+ to_key=To,
+ limit=100 }) of
+ Count when Count >= 0; Count =< 100 ->
+ {ok,State};
+ Count ->
+ {error, {bad_fold_count, Count}}
+ end.
View
1 test/hanoidb_merger_tests.erl
@@ -27,7 +27,6 @@
-ifdef(QC_PROPER).
-ifdef(TEST).
--include_lib("proper/include/proper.hrl").
-include_lib("eunit/include/eunit.hrl").
-endif.
View
6 test/hanoidb_tests.erl
@@ -49,9 +49,9 @@
next_state/3, postcondition/3,
precondition/2]).
--record(tree, { elements = dict:new() }).
--record(state, { open = dict:new(),
- closed = dict:new() }).
+-record(tree, { elements = dict:new() :: dict() }).
+-record(state, { open = dict:new() :: dict(),
+ closed = dict:new() :: dict()}).
-define(SERVER, hanoidb_drv).
full_test_() ->

0 comments on commit 5733075

Please sign in to comment.
Something went wrong with that request. Please try again.