You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2020/07/30 15:10:41 UTC

[couchdb] branch prototype/fdb-layer-ebtree-views updated (f204b22 -> 50a9f60)

This is an automated email from the ASF dual-hosted git repository.

davisp pushed a change to branch prototype/fdb-layer-ebtree-views
in repository https://gitbox.apache.org/repos/asf/couchdb.git.


 discard f204b22  Moar tests
     new 50a9f60  Moar tests

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (f204b22)
            \
             N -- N -- N   refs/heads/prototype/fdb-layer-ebtree-views (50a9f60)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/couch_views/test/couch_views_red_test.erl | 70 +++++++++++++++++++++++----
 1 file changed, 61 insertions(+), 9 deletions(-)


[couchdb] 01/01: Moar tests

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch prototype/fdb-layer-ebtree-views
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 50a9f6013ff0a6ac95ea52aedb033650700ad1b3
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Thu Jul 30 09:40:45 2020 -0500

    Moar tests
---
 src/couch_views/test/couch_views_red_test.erl | 494 ++++++++++++++++++++++++--
 1 file changed, 472 insertions(+), 22 deletions(-)

diff --git a/src/couch_views/test/couch_views_red_test.erl b/src/couch_views/test/couch_views_red_test.erl
index 579e53b..0bdc9fd 100644
--- a/src/couch_views/test/couch_views_red_test.erl
+++ b/src/couch_views/test/couch_views_red_test.erl
@@ -52,7 +52,38 @@ map_views_test_() ->
                 ?TDEF(should_reduce_start_and_end_key),
                 ?TDEF(should_reduce_start_and_end_key_rev),
                 ?TDEF(should_reduce_empty_range),
-                ?TDEF(should_reduce_empty_range_rev)
+                ?TDEF(should_reduce_empty_range_rev),
+                ?TDEF(should_reduce_grouped),
+                ?TDEF(should_reduce_grouped_rev),
+                ?TDEF(should_reduce_grouped_start_key),
+                ?TDEF(should_reduce_grouped_start_key_rev),
+                ?TDEF(should_reduce_grouped_end_key),
+                ?TDEF(should_reduce_grouped_end_key_rev),
+                ?TDEF(should_reduce_grouped_inclusive_end_false),
+                ?TDEF(should_reduce_grouped_inclusive_end_false_rev),
+                ?TDEF(should_reduce_grouped_start_and_end_key),
+                ?TDEF(should_reduce_grouped_start_and_end_key_rev),
+                ?TDEF(should_reduce_grouped_empty_range),
+                ?TDEF(should_reduce_grouped_empty_range_rev),
+
+                ?TDEF(should_reduce_array_keys),
+                ?TDEF(should_reduce_grouped_array_keys),
+                ?TDEF(should_reduce_group_1_array_keys),
+                ?TDEF(should_reduce_group_1_array_keys_start_key),
+                ?TDEF(should_reduce_group_1_array_keys_start_key_rev),
+                ?TDEF(should_reduce_group_1_array_keys_end_key),
+                ?TDEF(should_reduce_group_1_array_keys_end_key_rev),
+                ?TDEF(should_reduce_group_1_array_keys_inclusive_end_false),
+                ?TDEF(should_reduce_group_1_array_keys_inclusive_end_false_rev),
+                ?TDEF(should_reduce_group_1_array_keys_start_and_end_key),
+                ?TDEF(should_reduce_group_1_array_keys_start_and_end_key_rev),
+                ?TDEF(should_reduce_group_1_array_keys_sub_array_select),
+                ?TDEF(should_reduce_group_1_array_keys_sub_array_select_rev),
+                ?TDEF(should_reduce_group_1_array_keys_sub_array_inclusive_end),
+                ?TDEF(should_reduce_group_1_array_keys_empty_range),
+                ?TDEF(should_reduce_group_1_array_keys_empty_range_rev),
+
+                ?TDEF(should_reduce_many_values)
             ]
         }
     }.
@@ -60,7 +91,7 @@ map_views_test_() ->
 
 should_reduce() ->
     Result = run_query(<<"baz_count">>, #{}),
-    Expect = {ok, [{row, [{key, null}, {value, 10}]}]},
+    Expect = {ok, [row(null, 10)]},
     ?assertEqual(Expect, Result).
 
 
@@ -69,7 +100,7 @@ should_reduce_rev() ->
         direction => rev
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 10}]}]},
+    Expect = {ok, [row(null, 10)]},
     ?assertEqual(Expect, Result).
 
 
@@ -78,7 +109,7 @@ should_reduce_start_key() ->
         start_key => 4
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 7}]}]},
+    Expect = {ok, [row(null, 7)]},
     ?assertEqual(Expect, Result).
 
 
@@ -88,7 +119,7 @@ should_reduce_start_key_rev() ->
         start_key => 4
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 4}]}]},
+    Expect = {ok, [row(null, 4)]},
     ?assertEqual(Expect, Result).
 
 
@@ -97,7 +128,7 @@ should_reduce_end_key() ->
         end_key => 6
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 6}]}]},
+    Expect = {ok, [row(null, 6)]},
     ?assertEqual(Expect, Result).
 
 
@@ -107,7 +138,7 @@ should_reduce_end_key_rev() ->
         end_key => 6
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 5}]}]},
+    Expect = {ok, [row(null, 5)]},
     ?assertEqual(Expect, Result).
 
 
@@ -117,7 +148,7 @@ should_reduce_inclusive_end_false() ->
         inclusive_end => false
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 5}]}]},
+    Expect = {ok, [row(null, 5)]},
     ?assertEqual(Expect, Result).
 
 
@@ -128,7 +159,7 @@ should_reduce_inclusive_end_false_rev() ->
         inclusive_end => false
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 4}]}]},
+    Expect = {ok, [row(null, 4)]},
     ?assertEqual(Expect, Result).
 
 
@@ -138,7 +169,7 @@ should_reduce_start_and_end_key() ->
         end_key => 5
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 3}]}]},
+    Expect = {ok, [row(null, 3)]},
     ?assertEqual(Expect, Result).
 
 
@@ -149,7 +180,7 @@ should_reduce_start_and_end_key_rev() ->
         end_key => 3
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 3}]}]},
+    Expect = {ok, [row(null, 3)]},
     ?assertEqual(Expect, Result).
 
 
@@ -159,7 +190,7 @@ should_reduce_empty_range() ->
         end_key => 100001
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 0}]}]},
+    Expect = {ok, [row(null, 0)]},
     ?assertEqual(Expect, Result).
 
 
@@ -170,25 +201,440 @@ should_reduce_empty_range_rev() ->
         end_key => 100000
     },
     Result = run_query(<<"baz_count">>, Args),
-    Expect = {ok, [{row, [{key, null}, {value, 0}]}]},
+    Expect = {ok, [row(null, 0)]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped() ->
+    Args = #{
+        group_level => exact
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(1, 1),
+        row(2, 1),
+        row(3, 1),
+        row(4, 1),
+        row(5, 1),
+        row(6, 1),
+        row(7, 1),
+        row(8, 1),
+        row(9, 1),
+        row(10, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => exact
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(10, 1),
+        row(9, 1),
+        row(8, 1),
+        row(7, 1),
+        row(6, 1),
+        row(5, 1),
+        row(4, 1),
+        row(3, 1),
+        row(2, 1),
+        row(1, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_start_key() ->
+    Args = #{
+        group_level => exact,
+        start_key => 3
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(3, 1),
+        row(4, 1),
+        row(5, 1),
+        row(6, 1),
+        row(7, 1),
+        row(8, 1),
+        row(9, 1),
+        row(10, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_start_key_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => exact,
+        start_key => 3
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(3, 1),
+        row(2, 1),
+        row(1, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_end_key() ->
+    Args = #{
+        group_level => exact,
+        end_key => 6
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(1, 1),
+        row(2, 1),
+        row(3, 1),
+        row(4, 1),
+        row(5, 1),
+        row(6, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_end_key_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => exact,
+        end_key => 6
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(10, 1),
+        row(9, 1),
+        row(8, 1),
+        row(7, 1),
+        row(6, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_inclusive_end_false() ->
+    Args = #{
+        group_level => exact,
+        end_key => 4,
+        inclusive_end => false
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(1, 1),
+        row(2, 1),
+        row(3, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_inclusive_end_false_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => exact,
+        end_key => 4,
+        inclusive_end => false
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(10, 1),
+        row(9, 1),
+        row(8, 1),
+        row(7, 1),
+        row(6, 1),
+        row(5, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_start_and_end_key() ->
+    Args = #{
+        group_level => exact,
+        start_key => 2,
+        end_key => 4
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(2, 1),
+        row(3, 1),
+        row(4, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_start_and_end_key_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => exact,
+        start_key => 4,
+        end_key => 2
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, [
+        row(4, 1),
+        row(3, 1),
+        row(2, 1)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_empty_range() ->
+    Args = #{
+        group_level => exact,
+        start_key => 100000,
+        end_key => 100001
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, []},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_empty_range_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => exact,
+        start_key => 100001,
+        end_key => 100000
+    },
+    Result = run_query(<<"baz_count">>, Args),
+    Expect = {ok, []},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_array_keys() ->
+    Result = run_query(<<"boom">>, #{}),
+    Expect = {ok, [row(null, 15.0)]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_grouped_array_keys() ->
+    Args = #{
+        group_level => exact
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([0, 3], 1.5),
+        row([0, 6], 1.5),
+        row([0, 9], 1.5),
+        row([1, 1], 1.5),
+        row([1, 4], 1.5),
+        row([1, 7], 1.5),
+        row([1, 10], 1.5),
+        row([2, 2], 1.5),
+        row([2, 5], 1.5),
+        row([2, 8], 1.5)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys() ->
+    Args = #{
+        group_level => 1
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([0], 4.5),
+        row([1], 6.0),
+        row([2], 4.5)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_start_key() ->
+    Args = #{
+        group_level => 1,
+        start_key => [1]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([1], 6.0),
+        row([2], 4.5)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_start_key_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => 1,
+        start_key => [1, 500]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([1], 6.0),
+        row([0], 4.5)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_end_key() ->
+    Args = #{
+        group_level => 1,
+        end_key => [1, 500]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([0], 4.5),
+        row([1], 6.0)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_end_key_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => 1,
+        end_key => [1]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([2], 4.5),
+        row([1], 6.0)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_inclusive_end_false() ->
+    Args = #{
+        group_level => 1,
+        end_key => [1],
+        inclusive_end => false
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([0], 4.5)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_inclusive_end_false_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => 1,
+        end_key => [1, 10],
+        inclusive_end => false
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([2], 4.5)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_start_and_end_key() ->
+    Args = #{
+        group_level => 1,
+        start_key => [1],
+        end_key => [1, 500]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([1], 6.0)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_start_and_end_key_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => 1,
+        start_key => [1, 500],
+        end_key => [1]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([1], 6.0)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_sub_array_select() ->
+    % Test that keys are applied below the key grouping
+    Args = #{
+        group_level => 1,
+        start_key => [0, 6],
+        end_key => [1, 4]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([0], 3.0),
+        row([1], 3.0)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_sub_array_select_rev() ->
+    % Test that keys are applied below the key grouping
+    Args = #{
+        direction => rev,
+        group_level => 1,
+        start_key => [1, 4],
+        end_key => [0, 6]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([1], 3.0),
+        row([0], 3.0)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_sub_array_inclusive_end() ->
+    % Test that keys are applied below the key grouping
+    Args = #{
+        group_level => 1,
+        start_key => [0, 6],
+        end_key => [1, 4],
+        inclusive_end => false
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, [
+        row([0], 3.0),
+        row([1], 1.5)
+    ]},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_empty_range() ->
+    Args = #{
+        group_level => 1,
+        start_key => [100],
+        end_key => [101]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, []},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_group_1_array_keys_empty_range_rev() ->
+    Args = #{
+        direction => rev,
+        group_level => 1,
+        start_key => [101],
+        end_key => [100]
+    },
+    Result = run_query(<<"boom">>, Args),
+    Expect = {ok, []},
+    ?assertEqual(Expect, Result).
+
+
+should_reduce_many_values() ->
+    Result = run_query(<<"boom">>, #{}, 500),
+    Expect = {ok, [row(null, 750.0)]},
     ?assertEqual(Expect, Result).
 
 
 run_query(Idx, Args) ->
-    run_query(Idx, Args, false).
+    run_query(Idx, Args, 10).
 
 
-run_query(Idx, Args, DebugCluster) ->
+run_query(Idx, Args, NumDocs) ->
     DbName = ?tempdb(),
     {ok, Db} = fabric2_db:create(DbName, [{user_ctx, ?ADMIN_USER}]),
     DDoc = create_ddoc(),
-    Docs = make_docs(10),
+    Docs = make_docs(NumDocs),
     fabric2_db:update_docs(Db, [DDoc | Docs]),
-    if not DebugCluster -> ok; true ->
-        couch_views:query(Db, DDoc, Idx, fun default_cb/2, [], #{}),
-        fabric2_fdb:debug_cluster(),
-        ok
-    end,
     couch_views:query(Db, DDoc, Idx, fun default_cb/2, [], Args).
 
 
@@ -206,6 +652,10 @@ default_cb(Row, Acc) ->
     {ok, [Row | Acc]}.
 
 
+row(Key, Value) ->
+    {row, [{key, Key}, {value, Value}]}.
+
+
 create_ddoc() ->
     couch_doc:from_json_obj({[
         {<<"_id">>, <<"_design/bar">>},
@@ -224,7 +674,7 @@ create_ddoc() ->
             {<<"boom">>, {[
                 {<<"map">>, <<
                     "function(doc) {\n"
-                    "   emit([doc.val.toString(), doc.val], doc.val);\n"
+                    "   emit([doc.val % 3, doc.val], 1.5);\n"
                     "}"
                 >>},
                 {<<"reduce">>, <<"_sum">>}