diff --git a/test/end_to_end/riak_SUITE.erl b/test/end_to_end/riak_SUITE.erl index 7eec3df..60c2609 100644 --- a/test/end_to_end/riak_SUITE.erl +++ b/test/end_to_end/riak_SUITE.erl @@ -284,6 +284,8 @@ handoff(_Config) -> {sync_strategy, riak_sync}], {ok, Bookie1} = leveled_bookie:book_start(StartOpts1), + % Add some noe Riak objects in - which should be ignored in folds. + Hashes = testutil:stdload(Bookie1, 1000), % Generate 200K objects to be used within the test, and load them into % the first store (outputting the generated objects as a list of lists) % to be used elsewhere @@ -322,6 +324,11 @@ handoff(_Config) -> {sync_strategy, none}], {ok, Bookie4} = leveled_bookie:book_start(StartOpts4), + FoldStObjectsFun = + fun(B, K, V, Acc) -> + [{B, K, erlang:phash2(V)}|Acc] + end, + FoldObjectsFun = fun(Book) -> fun(B, K, Obj, ok) -> @@ -384,6 +391,26 @@ handoff(_Config) -> check_tictacfold(Bookie2, Bookie3, TicTacFolder, none, TreeSize), check_tictacfold(Bookie3, Bookie4, TicTacFolder, none, TreeSize), + StdFolder = + {foldobjects_allkeys, + ?STD_TAG, + FoldStObjectsFun, + true, + sqn_order}, + + {async, StdFold1} = leveled_bookie:book_returnfolder(Bookie1, StdFolder), + {async, StdFold2} = leveled_bookie:book_returnfolder(Bookie2, StdFolder), + {async, StdFold3} = leveled_bookie:book_returnfolder(Bookie3, StdFolder), + {async, StdFold4} = leveled_bookie:book_returnfolder(Bookie4, StdFolder), + StdFoldOut1 = lists:sort(StdFold1()), + StdFoldOut2 = lists:sort(StdFold2()), + StdFoldOut3 = lists:sort(StdFold3()), + StdFoldOut4 = lists:sort(StdFold4()), + true = StdFoldOut1 == lists:sort(Hashes), + true = StdFoldOut2 == [], + true = StdFoldOut3 == [], + true = StdFoldOut4 == [], + % Shutdown ok = leveled_bookie:book_close(Bookie1), ok = leveled_bookie:book_close(Bookie2), diff --git a/test/end_to_end/testutil.erl b/test/end_to_end/testutil.erl index 95ace81..0d1af19 100644 --- a/test/end_to_end/testutil.erl +++ b/test/end_to_end/testutil.erl @@ -7,6 +7,7 @@ book_riakget/3, book_riakhead/3, riakload/2, + stdload/2, reset_filestructure/0, reset_filestructure/1, check_bucket_stats/2, @@ -173,6 +174,22 @@ riakload(Bookie, ObjectList) -> end, ObjectList). +stdload(Bookie, Count) -> + stdload(Bookie, Count, []). + +stdload(_Bookie, 0, Acc) -> + Acc; +stdload(Bookie, Count, Acc) -> + B = "Bucket", + K = leveled_codec:generate_uuid(), + V = get_compressiblevalue(), + R = leveled_bookie:book_put(Bookie, B, K, V, [], ?STD_TAG), + case R of + ok -> ok; + pause -> timer:sleep(?SLOWOFFER_DELAY) + end, + stdload(Bookie, Count - 1, [{B, K, erlang:phash2(V)}|Acc]). + reset_filestructure() -> reset_filestructure(0, ?ROOT_PATH).