You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ii...@apache.org on 2016/05/24 18:30:28 UTC
[3/4] couch-index commit: updated refs/heads/master to aa8e6f9
Add test suite for is_recompaction_enabled/2
Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/commit/2c5cef41
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/tree/2c5cef41
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/diff/2c5cef41
Branch: refs/heads/master
Commit: 2c5cef415e046c89bb0127b7a85be28f681d7bc3
Parents: 4d4d589
Author: ILYA Khlopotov <ii...@ca.ibm.com>
Authored: Tue May 17 11:46:33 2016 -0700
Committer: ILYA Khlopotov <ii...@ca.ibm.com>
Committed: Tue May 24 10:24:03 2016 -0700
----------------------------------------------------------------------
src/couch_index.erl | 119 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 119 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/blob/2c5cef41/src/couch_index.erl
----------------------------------------------------------------------
diff --git a/src/couch_index.erl b/src/couch_index.erl
index 85d8cb0..7f54a7f 100644
--- a/src/couch_index.erl
+++ b/src/couch_index.erl
@@ -444,3 +444,122 @@ get_value(Section, Key) ->
"false" -> false;
undefined -> undefined
end.
+
+-ifdef(TEST).
+-include_lib("couch/include/couch_eunit.hrl").
+
+get(db_name, _, _) ->
+ <<"db_name">>;
+get(idx_name, _, _) ->
+ <<"idx_name">>;
+get(signature, _, _) ->
+ <<61,237,157,230,136,93,96,201,204,17,137,186,50,249,44,135>>.
+
+setup(Settings) ->
+ ok = meck:new([config], [passthrough]),
+ ok = meck:new([test_index], [non_strict]),
+ ok = meck:expect(config, get, fun(Section, Key) ->
+ configure(Section, Key, Settings)
+ end),
+ ok = meck:expect(test_index, get, fun get/3),
+ {undefined, #st{mod = {test_index}}}.
+
+teardown(_, _) ->
+ (catch meck:unload(config)),
+ (catch meck:unload(test_index)),
+ ok.
+
+configure("view_compaction", "enabled_recompaction", [Global, _Db, _Index]) ->
+ Global;
+configure("view_compaction.recompaction", "db_name", [_Global, Db, _Index]) ->
+ Db;
+configure("view_compaction.recompaction", "db_name:" ++ _, [_, _, Index]) ->
+ Index;
+configure(Section, Key, _) ->
+ meck:passthrough([Section, Key]).
+
+recompaction_configuration_test_() ->
+ {
+ "Compaction tests",
+ {
+ setup,
+ fun test_util:start_couch/0, fun test_util:stop_couch/1,
+ {
+ foreachx,
+ fun setup/1, fun teardown/2,
+ recompaction_configuration_tests()
+ }
+ }
+ }.
+
+recompaction_configuration_tests() ->
+ AllCases = couch_tests_combinatorics:product([
+ [undefined, "true", "false"],
+ [undefined, "enabled", "disabled"],
+ [undefined, "enabled", "disabled"]
+ ]),
+
+ EnabledCases = [
+ [undefined, undefined, undefined],
+
+ [undefined, undefined,"enabled"],
+ [undefined, "enabled", undefined],
+ [undefined, "disabled", "enabled"],
+ [undefined, "enabled", "enabled"],
+
+ ["true", undefined, undefined],
+ ["true", undefined, "enabled"],
+ ["true", "disabled", "enabled"],
+ ["true", "enabled", undefined],
+ ["true", "enabled", "enabled"],
+
+ ["false", undefined, "enabled"],
+ ["false", "enabled", undefined],
+ ["false", "disabled", "enabled"],
+ ["false", "enabled", "enabled"]
+ ],
+
+ DisabledCases = [
+ [undefined, undefined, "disabled"],
+ [undefined, "disabled", undefined],
+ [undefined, "disabled", "disabled"],
+ [undefined, "enabled", "disabled"],
+
+ ["true", undefined, "disabled"],
+ ["true", "disabled", undefined],
+ ["true", "disabled", "disabled"],
+ ["true", "enabled", "disabled"],
+
+ ["false", undefined, undefined],
+ ["false", undefined, "disabled"],
+ ["false", "disabled", undefined],
+ ["false", "disabled", "disabled"],
+ ["false", "enabled", "disabled"]
+ ],
+
+ ?assertEqual([], AllCases -- (EnabledCases ++ DisabledCases)),
+
+ [{Settings, fun should_not_call_recompact/2} || Settings <- DisabledCases]
+ ++
+ [{Settings, fun should_call_recompact/2} || Settings <- EnabledCases].
+
+should_call_recompact(Settings, {IdxState, State}) ->
+ {test_id(Settings), ?_test(begin
+ ?assert(is_recompaction_enabled(IdxState, State)),
+ ok
+ end)}.
+
+should_not_call_recompact(Settings, {IdxState, State}) ->
+ {test_id(Settings), ?_test(begin
+ ?assertNot(is_recompaction_enabled(IdxState, State)),
+ ok
+ end)}.
+
+to_string(undefined) -> "undefined";
+to_string(Value) -> Value.
+
+test_id(Settings0) ->
+ Settings1 = [to_string(Value) || Value <- Settings0],
+ "[ " ++ lists:flatten(string:join(Settings1, " , ")) ++ " ]".
+
+-endif.