Further work on system tests
Another issue exposed with laziness in the using an incomplete ledger when checking for presence during compaction.
This commit is contained in:
parent
d903f184fd
commit
ad5aebe93e
5 changed files with 115 additions and 103 deletions
|
@ -12,6 +12,7 @@ all() -> [simple_put_fetch_head,
|
|||
journal_compaction,
|
||||
simple_snapshot].
|
||||
|
||||
|
||||
simple_put_fetch_head(_Config) ->
|
||||
RootPath = reset_filestructure(),
|
||||
StartOpts1 = #bookie_options{root_path=RootPath},
|
||||
|
@ -19,6 +20,7 @@ simple_put_fetch_head(_Config) ->
|
|||
{TestObject, TestSpec} = generate_testobject(),
|
||||
ok = leveled_bookie:book_riakput(Bookie1, TestObject, TestSpec),
|
||||
check_bookie_forobject(Bookie1, TestObject),
|
||||
check_bookie_formissingobject(Bookie1, "Bucket1", "Key2"),
|
||||
ok = leveled_bookie:book_close(Bookie1),
|
||||
StartOpts2 = #bookie_options{root_path=RootPath,
|
||||
max_journalsize=3000000},
|
||||
|
@ -31,6 +33,7 @@ simple_put_fetch_head(_Config) ->
|
|||
ChkList1 = lists:sublist(lists:sort(ObjList1), 100),
|
||||
check_bookie_forlist(Bookie2, ChkList1),
|
||||
check_bookie_forobject(Bookie2, TestObject),
|
||||
check_bookie_formissingobject(Bookie2, "Bucket1", "Key2"),
|
||||
ok = leveled_bookie:book_close(Bookie2),
|
||||
reset_filestructure().
|
||||
|
||||
|
@ -88,7 +91,6 @@ check_bookie_forlist(Bookie, ChkList) ->
|
|||
R = leveled_bookie:book_riakget(Bookie,
|
||||
Obj#r_object.bucket,
|
||||
Obj#r_object.key),
|
||||
io:format("Checking key ~s~n", [Obj#r_object.key]),
|
||||
R = {ok, Obj} end,
|
||||
ChkList).
|
||||
|
||||
|
@ -108,6 +110,10 @@ check_bookie_forobject(Bookie, TestObject) ->
|
|||
ok
|
||||
end.
|
||||
|
||||
check_bookie_formissingobject(Bookie, Bucket, Key) ->
|
||||
not_found = leveled_bookie:book_riakget(Bookie, Bucket, Key),
|
||||
not_found = leveled_bookie:book_riakhead(Bookie, Bucket, Key).
|
||||
|
||||
journal_compaction(_Config) ->
|
||||
RootPath = reset_filestructure(),
|
||||
StartOpts1 = #bookie_options{root_path=RootPath,
|
||||
|
@ -115,23 +121,30 @@ journal_compaction(_Config) ->
|
|||
{ok, Bookie1} = leveled_bookie:book_start(StartOpts1),
|
||||
{TestObject, TestSpec} = generate_testobject(),
|
||||
ok = leveled_bookie:book_riakput(Bookie1, TestObject, TestSpec),
|
||||
{ok, TestObject} = leveled_bookie:book_riakget(Bookie1,
|
||||
TestObject#r_object.bucket,
|
||||
TestObject#r_object.key),
|
||||
check_bookie_forobject(Bookie1, TestObject),
|
||||
ObjList1 = generate_multiple_objects(5000, 2),
|
||||
lists:foreach(fun({_RN, Obj, Spc}) ->
|
||||
leveled_bookie:book_riakput(Bookie1, Obj, Spc) end,
|
||||
ObjList1),
|
||||
ChkList1 = lists:sublist(lists:sort(ObjList1), 100),
|
||||
lists:foreach(fun({_RN, Obj, _Spc}) ->
|
||||
R = leveled_bookie:book_riakget(Bookie1,
|
||||
Obj#r_object.bucket,
|
||||
Obj#r_object.key),
|
||||
R = {ok, Obj} end,
|
||||
ChkList1),
|
||||
{ok, TestObject} = leveled_bookie:book_riakget(Bookie1,
|
||||
TestObject#r_object.bucket,
|
||||
TestObject#r_object.key),
|
||||
ChkList1 = lists:sublist(lists:sort(ObjList1), 1000),
|
||||
check_bookie_forlist(Bookie1, ChkList1),
|
||||
check_bookie_forobject(Bookie1, TestObject),
|
||||
{B2, K2, V2, Spec2, MD} = {"Bucket1",
|
||||
"Key1",
|
||||
"Value1",
|
||||
[],
|
||||
{"MDK1", "MDV1"}},
|
||||
{TestObject2, TestSpec2} = generate_testobject(B2, K2, V2, Spec2, MD),
|
||||
ok = leveled_bookie:book_riakput(Bookie1, TestObject2, TestSpec2),
|
||||
ok = leveled_bookie:book_compactjournal(Bookie1, 30000),
|
||||
check_bookie_forlist(Bookie1, ChkList1),
|
||||
check_bookie_forobject(Bookie1, TestObject),
|
||||
check_bookie_forobject(Bookie1, TestObject2),
|
||||
timer:sleep(5000), % Allow for compaction to complete
|
||||
io:format("Has journal completed?~n"),
|
||||
check_bookie_forlist(Bookie1, ChkList1),
|
||||
check_bookie_forobject(Bookie1, TestObject),
|
||||
check_bookie_forobject(Bookie1, TestObject2),
|
||||
%% Now replace all the objects
|
||||
ObjList2 = generate_multiple_objects(5000, 2),
|
||||
lists:foreach(fun({_RN, Obj, Spc}) ->
|
||||
|
@ -139,24 +152,12 @@ journal_compaction(_Config) ->
|
|||
ObjList2),
|
||||
ok = leveled_bookie:book_compactjournal(Bookie1, 30000),
|
||||
ChkList3 = lists:sublist(lists:sort(ObjList2), 500),
|
||||
lists:foreach(fun({_RN, Obj, _Spc}) ->
|
||||
R = leveled_bookie:book_riakget(Bookie1,
|
||||
Obj#r_object.bucket,
|
||||
Obj#r_object.key),
|
||||
R = {ok, Obj} end,
|
||||
ChkList3),
|
||||
check_bookie_forlist(Bookie1, ChkList3),
|
||||
ok = leveled_bookie:book_close(Bookie1),
|
||||
% Restart
|
||||
{ok, Bookie2} = leveled_bookie:book_start(StartOpts1),
|
||||
{ok, TestObject} = leveled_bookie:book_riakget(Bookie2,
|
||||
TestObject#r_object.bucket,
|
||||
TestObject#r_object.key),
|
||||
lists:foreach(fun({_RN, Obj, _Spc}) ->
|
||||
R = leveled_bookie:book_riakget(Bookie2,
|
||||
Obj#r_object.bucket,
|
||||
Obj#r_object.key),
|
||||
R = {ok, Obj} end,
|
||||
ChkList3),
|
||||
check_bookie_forobject(Bookie2, TestObject),
|
||||
check_bookie_forlist(Bookie2, ChkList3),
|
||||
ok = leveled_bookie:book_close(Bookie2),
|
||||
reset_filestructure().
|
||||
|
||||
|
@ -200,15 +201,19 @@ reset_filestructure() ->
|
|||
leveled_penciller:clean_testdir(RootPath ++ "/ledger"),
|
||||
RootPath.
|
||||
|
||||
|
||||
generate_testobject() ->
|
||||
{B1, K1, V1, Spec1, MD} = {"Bucket1",
|
||||
"Key1",
|
||||
"Value1",
|
||||
[],
|
||||
{"MDK1", "MDV1"}},
|
||||
Content = #r_content{metadata=MD, value=V1},
|
||||
{#r_object{bucket=B1, key=K1, contents=[Content], vclock=[{'a',1}]},
|
||||
Spec1}.
|
||||
generate_testobject(B1, K1, V1, Spec1, MD).
|
||||
|
||||
generate_testobject(B, K, V, Spec, MD) ->
|
||||
Content = #r_content{metadata=MD, value=V},
|
||||
{#r_object{bucket=B, key=K, contents=[Content], vclock=[{'a',1}]},
|
||||
Spec}.
|
||||
|
||||
generate_multiple_smallobjects(Count, KeyNumber) ->
|
||||
generate_multiple_objects(Count, KeyNumber, [], crypto:rand_bytes(512)).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue