From 37f784f0414fd2e0bb70000cbd2656ebcdb5ef9a Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Fri, 21 Sep 2018 15:17:29 +0100 Subject: [PATCH 1/2] Add regex tests for dollar bucket queries Proce this works as well as for dollar key. This isn't tested in riak_test currently, but seems illogical not to support it her eif it is supported on $key queries. --- test/end_to_end/riak_SUITE.erl | 51 ++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/test/end_to_end/riak_SUITE.erl b/test/end_to_end/riak_SUITE.erl index 71b0b76..2e8607d 100644 --- a/test/end_to_end/riak_SUITE.erl +++ b/test/end_to_end/riak_SUITE.erl @@ -3,10 +3,10 @@ -include("include/leveled.hrl"). -export([all/0]). -export([ - crossbucket_aae/1, - handoff/1, - dollar_bucket_index/1, - dollar_key_index/1 + crossbucket_aae/1, + handoff/1, + dollar_bucket_index/1, + dollar_key_index/1 ]). all() -> [ @@ -598,12 +598,45 @@ dollar_bucket_index(_Config) -> end, FoldAccT = {FoldKeysFun, []}, - {async, Folder} = leveled_bookie:book_keylist(Bookie1, ?RIAK_TAG, <<"Bucket2">>, FoldAccT), - ResLen = length(Folder()), + {async, Folder} = + leveled_bookie:book_keylist(Bookie1, + ?RIAK_TAG, + <<"Bucket2">>, + FoldAccT), + Results = Folder(), + true = 1700 == length(Results), + + {<<"Bucket2">>, SampleKey} = lists:nth(100, Results), + UUID = "[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}", + {ok, RESingleMatch} = re:compile(SampleKey), + {ok, REAllMatch} = re:compile(UUID), + {ok, REMiss} = re:compile("no_key"), - io:format("Length of Result of folder ~w~n", [ResLen]), - - true = 1700 == ResLen, + {async, FolderREMiss} = + leveled_bookie:book_keylist(Bookie1, + ?RIAK_TAG, + <<"Bucket2">>, + {null, null}, + {FoldKeysFun, []}, + REMiss), + {async, FolderRESingleMatch} = + leveled_bookie:book_keylist(Bookie1, + ?RIAK_TAG, + <<"Bucket2">>, + {null, null}, + {FoldKeysFun, []}, + RESingleMatch), + {async, FolderREAllMatch} = + leveled_bookie:book_keylist(Bookie1, + ?RIAK_TAG, + <<"Bucket2">>, + {null, null}, + {FoldKeysFun, []}, + REAllMatch), + + true = 0 == length(FolderREMiss()), + true = 1 == length(FolderRESingleMatch()), + true = 1700 == length(FolderREAllMatch()), ok = leveled_bookie:book_close(Bookie1), testutil:reset_filestructure(). From 8f320a054eb1217d16040942d9feda4aadf7f79b Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Fri, 21 Sep 2018 17:08:59 +0100 Subject: [PATCH 2/2] Add object deletion to test of dolerkey index Related to tracking a failure in riak_test --- test/end_to_end/riak_SUITE.erl | 37 +++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/test/end_to_end/riak_SUITE.erl b/test/end_to_end/riak_SUITE.erl index 2e8607d..0482bd5 100644 --- a/test/end_to_end/riak_SUITE.erl +++ b/test/end_to_end/riak_SUITE.erl @@ -524,7 +524,6 @@ dollar_key_index(_Config) -> StartKey = testutil:fixed_bin_key(123), EndKey = testutil:fixed_bin_key(779), - {async, Folder} = leveled_bookie:book_keylist(Bookie1, ?RIAK_TAG, @@ -557,6 +556,42 @@ dollar_key_index(_Config) -> true = 657 == length(FolderREMatch()), true = 0 == length(FolderREMiss()), + % Delete an object - and check that it does not show in + % $key index query + DeleteFun = + fun(KeyID) -> + ok = leveled_bookie:book_put(Bookie1, + <<"Bucket1">>, + testutil:fixed_bin_key(KeyID), + delete, [], + ?RIAK_TAG) + end, + DelList = [200, 400, 600, 800, 1200], + lists:foreach(DeleteFun, DelList), + + {async, DeleteFolder0} = + leveled_bookie:book_keylist(Bookie1, + ?RIAK_TAG, + <<"Bucket1">>, + {StartKey, EndKey}, + {FoldKeysFun, []} + ), + ResultsDeleteFolder0 = length(DeleteFolder0()), + io:format("Length of Result of folder ~w~n", [ResultsDeleteFolder0]), + true = 657 - 3 == ResultsDeleteFolder0, + + {async, DeleteFolder1} = + leveled_bookie:book_keylist(Bookie1, + ?RIAK_TAG, + <<"Bucket1">>, + {testutil:fixed_bin_key(1151), + testutil:fixed_bin_key(1250)}, + {FoldKeysFun, []} + ), + ResultsDeleteFolder1 = length(DeleteFolder1()), + io:format("Length of Result of folder ~w~n", [ResultsDeleteFolder1]), + true = 100 -1 == ResultsDeleteFolder1, + ok = leveled_bookie:book_close(Bookie1), testutil:reset_filestructure().