From 4e28e4173cfe7fea25638b1d43112e6a9a6efc51 Mon Sep 17 00:00:00 2001 From: martinsumner Date: Mon, 19 Sep 2016 18:50:11 +0100 Subject: [PATCH] Rebar and eunit changes Initial rebar compile - which exposed eunit tets failures associated with changes to file structures and filename references --- ebin/eleveleddb.app | 11 ++++++++++ src/eleveleddb.app.src | 12 +++++++++++ src/eleveleddb_app.erl | 16 +++++++++++++++ src/eleveleddb_sup.erl | 27 +++++++++++++++++++++++++ src/leveled_clerk.erl | 10 ++++----- src/leveled_inker.erl | 46 +++++++++++++++++++++++------------------- 6 files changed, 96 insertions(+), 26 deletions(-) create mode 100644 ebin/eleveleddb.app create mode 100644 src/eleveleddb.app.src create mode 100644 src/eleveleddb_app.erl create mode 100644 src/eleveleddb_sup.erl diff --git a/ebin/eleveleddb.app b/ebin/eleveleddb.app new file mode 100644 index 0000000..11d7f25 --- /dev/null +++ b/ebin/eleveleddb.app @@ -0,0 +1,11 @@ +{application,eleveleddb, + [{description,[]}, + {vsn,"1"}, + {registered,[]}, + {applications,[kernel,stdlib]}, + {mod,{eleveleddb_app,[]}}, + {env,[]}, + {modules,[eleveleddb_app,eleveleddb_sup,leveled_bookie, + leveled_cdb,leveled_clerk,leveled_inker, + leveled_iterator,leveled_penciller,leveled_rice, + leveled_sft]}]}. diff --git a/src/eleveleddb.app.src b/src/eleveleddb.app.src new file mode 100644 index 0000000..6d0069e --- /dev/null +++ b/src/eleveleddb.app.src @@ -0,0 +1,12 @@ +{application, eleveleddb, + [ + {description, ""}, + {vsn, "1"}, + {registered, []}, + {applications, [ + kernel, + stdlib + ]}, + {mod, { eleveleddb_app, []}}, + {env, []} + ]}. diff --git a/src/eleveleddb_app.erl b/src/eleveleddb_app.erl new file mode 100644 index 0000000..18f7546 --- /dev/null +++ b/src/eleveleddb_app.erl @@ -0,0 +1,16 @@ +-module(eleveleddb_app). + +-behaviour(application). + +%% Application callbacks +-export([start/2, stop/1]). + +%% =================================================================== +%% Application callbacks +%% =================================================================== + +start(_StartType, _StartArgs) -> + eleveleddb_sup:start_link(). + +stop(_State) -> + ok. diff --git a/src/eleveleddb_sup.erl b/src/eleveleddb_sup.erl new file mode 100644 index 0000000..37ef58b --- /dev/null +++ b/src/eleveleddb_sup.erl @@ -0,0 +1,27 @@ +-module(eleveleddb_sup). + +-behaviour(supervisor). + +%% API +-export([start_link/0]). + +%% Supervisor callbacks +-export([init/1]). + +%% Helper macro for declaring children of supervisor +-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}). + +%% =================================================================== +%% API functions +%% =================================================================== + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +%% =================================================================== +%% Supervisor callbacks +%% =================================================================== + +init([]) -> + {ok, { {one_for_one, 5, 10}, []} }. + diff --git a/src/leveled_clerk.erl b/src/leveled_clerk.erl index f423b59..717455f 100644 --- a/src/leveled_clerk.erl +++ b/src/leveled_clerk.erl @@ -295,8 +295,8 @@ generate_randomkeys(Count, Acc, BucketLow, BRange) -> RandKey = {{o, "Bucket" ++ BNumber, "Key" ++ KNumber}, - Count + 1, - {active, infinity}, null}, + {Count + 1, + {active, infinity}, null}}, generate_randomkeys(Count - 1, [RandKey|Acc], BucketLow, BRange). choose_pid_toquery([ManEntry|_T], Key) when @@ -310,8 +310,8 @@ choose_pid_toquery([_H|T], Key) -> find_randomkeys(_FList, 0, _Source) -> ok; find_randomkeys(FList, Count, Source) -> - K1 = leveled_sft:strip_to_keyonly(lists:nth(random:uniform(length(Source)), - Source)), + KV1 = lists:nth(random:uniform(length(Source)), Source), + K1 = leveled_bookie:strip_to_keyonly(KV1), P1 = choose_pid_toquery(FList, K1), FoundKV = leveled_sft:sft_get(P1, K1), case FoundKV of @@ -319,7 +319,7 @@ find_randomkeys(FList, Count, Source) -> io:format("Failed to find ~w in ~w~n", [K1, P1]), ?assertMatch(true, false); _ -> - Found = leveled_sft:strip_to_keyonly(FoundKV), + Found = leveled_bookie:strip_to_keyonly(FoundKV), io:format("success finding ~w in ~w~n", [K1, P1]), ?assertMatch(K1, Found) end, diff --git a/src/leveled_inker.erl b/src/leveled_inker.erl index 9b0c7c4..9d150f4 100644 --- a/src/leveled_inker.erl +++ b/src/leveled_inker.erl @@ -400,20 +400,22 @@ build_manifest(ManifestFilenames, OtherSQNs_imm = sequencenumbers_fromfilenames(UnremovedJournalFiles, JournalRegex1, 'SQN'), - Manifest1 = lists:foldl(fun(X, Acc) -> - if - X > JournalSQN1 - -> - FN = "nursery_" ++ - integer_to_list(X) - ++ "." ++ - ?JOURNAL_FILEX, - add_to_manifest(Acc, {X, FN}); - true - -> Acc - end end, - ConfirmedManifest, - lists:sort(OtherSQNs_imm)), + ExtendManifestFun = fun(X, Acc) -> + if + X > JournalSQN1 + -> + FN = filepath(RootPath, journal_dir) + ++ "nursery_" ++ + integer_to_list(X) + ++ "." ++ + ?JOURNAL_FILEX, + add_to_manifest(Acc, {X, FN}); + true + -> Acc + end end, + Manifest1 = lists:foldl(ExtendManifestFun, + ConfirmedManifest, + lists:sort(OtherSQNs_imm)), %% Enrich the manifest so it contains the Pid of any of the immutable %% entries @@ -648,7 +650,7 @@ build_dummy_journal() -> ok = leveled_cdb:cdb_put(J2, {3, K1}, term_to_binary({V3, []})), ok = leveled_cdb:cdb_put(J2, {4, K4}, term_to_binary({V4, []})), ok = leveled_cdb:cdb_close(J2), - Manifest = {2, [{1, "nursery_1.cdb"}], []}, + Manifest = [{1, "../test/journal/journal_files/nursery_1.cdb"}], ManifestBin = term_to_binary(Manifest), {ok, MF1} = file:open(filename:join(ManifestFP, "1.man"), [binary, raw, read, write]), @@ -669,14 +671,15 @@ simple_buildmanifest_test() -> RootPath = "../test/journal", build_dummy_journal(), Res = build_manifest(["1.man"], - ["nursery_1.cdb", "nursery_3.pnd"], + ["../test/journal/journal_files/nursery_1.cdb", + "../test/journal/journal_files/nursery_3.pnd"], fun simple_manifest_reader/2, RootPath), io:format("Build manifest output is ~w~n", [Res]), {Man, {ActJournal, ActJournalSQN}, HighSQN, ManSQN} = Res, ?assertMatch(HighSQN, 4), ?assertMatch(ManSQN, 1), - ?assertMatch([{1, "nursery_1.cdb", _}], Man), + ?assertMatch([{1, "../test/journal/journal_files/nursery_1.cdb", _}], Man), {ActSQN, _ActK} = leveled_cdb:cdb_lastkey(ActJournal), ?assertMatch(ActSQN, 4), ?assertMatch(ActJournalSQN, 3), @@ -699,16 +702,17 @@ another_buildmanifest_test() -> ok = leveled_cdb:cdb_close(NewActiveJN), %% Test setup - now build manifest Res = build_manifest(["1.man"], - ["nursery_1.cdb", - "nursery_3.cdb", - "nursery_5.pnd"], + ["../test/journal/journal_files/nursery_1.cdb", + "../test/journal/journal_files/nursery_3.cdb", + "../test/journal/journal_files/nursery_5.pnd"], fun simple_manifest_reader/2, RootPath), io:format("Build manifest output is ~w~n", [Res]), {Man, {ActJournal, ActJournalSQN}, HighSQN, ManSQN} = Res, ?assertMatch(HighSQN, 6), ?assertMatch(ManSQN, 1), - ?assertMatch([{3, "nursery_3.cdb", _}, {1, "nursery_1.cdb", _}], Man), + ?assertMatch([{3, "../test/journal/journal_files/nursery_3.cdb", _}, + {1, "../test/journal/journal_files/nursery_1.cdb", _}], Man), {ActSQN, _ActK} = leveled_cdb:cdb_lastkey(ActJournal), ?assertMatch(ActSQN, 6), ?assertMatch(ActJournalSQN, 5),