You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ch...@apache.org on 2014/08/11 22:22:55 UTC
[19/50] [abbrv] couch commit: updated refs/heads/1963-eunit-bigcouch
to 661443f
Port 081-config-override.t etap test suite to eunit
Merged into couch_config_tests suite.
Setup fixtures.
Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/9d73a901
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/9d73a901
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/9d73a901
Branch: refs/heads/1963-eunit-bigcouch
Commit: 9d73a9016bf523b2b2b91fe3b85eebcfcf223885
Parents: 0f10f53
Author: Alexander Shorin <kx...@apache.org>
Authored: Sun May 25 22:02:19 2014 +0400
Committer: Russell Branca <ch...@apache.org>
Committed: Mon Aug 11 13:22:07 2014 -0700
----------------------------------------------------------------------
test/couchdb/couch_config_tests.erl | 130 +++++++++++++++++++-
test/couchdb/fixtures/couch_config_tests_1.ini | 22 ++++
test/couchdb/fixtures/couch_config_tests_2.ini | 22 ++++
3 files changed, 168 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/9d73a901/test/couchdb/couch_config_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couch_config_tests.erl b/test/couchdb/couch_config_tests.erl
index ecff590..4bdc333 100644
--- a/test/couchdb/couch_config_tests.erl
+++ b/test/couchdb/couch_config_tests.erl
@@ -17,9 +17,30 @@
-define(TIMEOUT, 1000).
+-define(CONFIG_DEFAULT,
+ filename:join([?BUILDDIR, "etc", "couchdb", "default_dev.ini"])).
+-define(CONFIG_FIXTURE_1,
+ filename:join([?FIXTURESDIR, "couch_config_tests_1.ini"])).
+-define(CONFIG_FIXTURE_2,
+ filename:join([?FIXTURESDIR, "couch_config_tests_2.ini"])).
+-define(CONFIG_FIXTURE_TEMP,
+ begin
+ FileName = filename:join([?TEMPDIR, "couch_config_temp.ini"]),
+ {ok, Fd} = file:open(FileName, write),
+ ok = file:truncate(Fd),
+ ok = file:close(Fd),
+ FileName
+ end).
+
setup() ->
- {ok, Pid} = couch_config:start_link(?CONFIG_CHAIN),
+ setup(?CONFIG_CHAIN).
+setup({temporary, Chain}) ->
+ setup(Chain);
+setup({persistent, Chain}) ->
+ setup(lists:append(Chain, [?CONFIG_FIXTURE_TEMP]));
+setup(Chain) ->
+ {ok, Pid} = couch_config:start_link(Chain),
Pid.
teardown(Pid) ->
@@ -31,6 +52,8 @@ teardown(Pid) ->
after ?TIMEOUT ->
throw({timeout_error, config_stop})
end.
+teardown(_, Pid) ->
+ teardown(Pid).
couch_config_test_() ->
@@ -39,7 +62,9 @@ couch_config_test_() ->
[
couch_config_get_tests(),
couch_config_set_tests(),
- couch_config_del_tests()
+ couch_config_del_tests(),
+ config_override_tests(),
+ config_persistent_changes_tests()
]
}.
@@ -90,6 +115,43 @@ couch_config_del_tests() ->
}
}.
+config_override_tests() ->
+ {
+ "Configs overide tests",
+ {
+ foreachx,
+ fun setup/1, fun teardown/2,
+ [
+ {{temporary, [?CONFIG_DEFAULT]},
+ fun should_ensure_in_defaults/2},
+ {{temporary, [?CONFIG_DEFAULT, ?CONFIG_FIXTURE_1]},
+ fun should_override_options/2},
+ {{temporary, [?CONFIG_DEFAULT, ?CONFIG_FIXTURE_2]},
+ fun should_create_new_sections_on_override/2},
+ {{temporary, [?CONFIG_DEFAULT, ?CONFIG_FIXTURE_1,
+ ?CONFIG_FIXTURE_2]},
+ fun should_win_last_in_chain/2}
+ ]
+ }
+ }.
+
+config_persistent_changes_tests() ->
+ {
+ "Config persistent changes",
+ {
+ foreachx,
+ fun setup/1, fun teardown/2,
+ [
+ {{persistent, [?CONFIG_DEFAULT]},
+ fun should_write_changes/2},
+ {{temporary, [?CONFIG_DEFAULT]},
+ fun should_ensure_that_default_wasnt_modified/2},
+ {{temporary, [?CONFIG_FIXTURE_TEMP]},
+ fun should_ensure_that_written_to_last_config_in_chain/2}
+ ]
+ }
+ }.
+
should_load_all_configs() ->
?_assert(length(couch_config:all()) > 0).
@@ -151,10 +213,7 @@ should_return_undefined_atom_after_option_deletion() ->
end).
should_be_ok_on_deleting_unknown_options() ->
- ?_assertEqual(ok,
- begin
- couch_config:delete("zoo", "boo", false)
- end).
+ ?_assertEqual(ok, couch_config:delete("zoo", "boo", false)).
should_delete_binary_option() ->
?_assertEqual(undefined,
@@ -163,3 +222,62 @@ should_delete_binary_option() ->
ok = couch_config:delete(<<"foo">>, <<"bar">>, false),
couch_config:get(<<"foo">>, <<"bar">>)
end).
+
+should_ensure_in_defaults(_, _) ->
+ ?_test(begin
+ ?assertEqual("100",
+ couch_config:get("couchdb", "max_dbs_open")),
+ ?assertEqual("5984",
+ couch_config:get("httpd", "port")),
+ ?assertEqual(undefined,
+ couch_config:get("fizbang", "unicode"))
+ end).
+
+should_override_options(_, _) ->
+ ?_test(begin
+ ?assertEqual("10",
+ couch_config:get("couchdb", "max_dbs_open")),
+ ?assertEqual("4895",
+ couch_config:get("httpd", "port"))
+ end).
+
+should_create_new_sections_on_override(_, _) ->
+ ?_test(begin
+ ?assertEqual("80",
+ couch_config:get("httpd", "port")),
+ ?assertEqual("normalized",
+ couch_config:get("fizbang", "unicode"))
+ end).
+
+should_win_last_in_chain(_, _) ->
+ ?_assertEqual("80", couch_config:get("httpd", "port")).
+
+should_write_changes(_, _) ->
+ ?_test(begin
+ ?assertEqual("5984",
+ couch_config:get("httpd", "port")),
+ ?assertEqual(ok,
+ couch_config:set("httpd", "port", "8080")),
+ ?assertEqual("8080",
+ couch_config:get("httpd", "port")),
+ ?assertEqual(ok,
+ couch_config:delete("httpd", "bind_address", "8080")),
+ ?assertEqual(undefined,
+ couch_config:get("httpd", "bind_address"))
+ end).
+
+should_ensure_that_default_wasnt_modified(_, _) ->
+ ?_test(begin
+ ?assertEqual("5984",
+ couch_config:get("httpd", "port")),
+ ?assertEqual("127.0.0.1",
+ couch_config:get("httpd", "bind_address"))
+ end).
+
+should_ensure_that_written_to_last_config_in_chain(_, _) ->
+ ?_test(begin
+ ?assertEqual("8080",
+ couch_config:get("httpd", "port")),
+ ?assertEqual(undefined,
+ couch_config:get("httpd", "bind_address"))
+ end).
http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/9d73a901/test/couchdb/fixtures/couch_config_tests_1.ini
----------------------------------------------------------------------
diff --git a/test/couchdb/fixtures/couch_config_tests_1.ini b/test/couchdb/fixtures/couch_config_tests_1.ini
new file mode 100644
index 0000000..55451da
--- /dev/null
+++ b/test/couchdb/fixtures/couch_config_tests_1.ini
@@ -0,0 +1,22 @@
+; Licensed to the Apache Software Foundation (ASF) under one
+; or more contributor license agreements. See the NOTICE file
+; distributed with this work for additional information
+; regarding copyright ownership. The ASF licenses this file
+; to you under the Apache License, Version 2.0 (the
+; "License"); you may not use this file except in compliance
+; with the License. You may obtain a copy of the License at
+;
+; http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing,
+; software distributed under the License is distributed on an
+; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+; KIND, either express or implied. See the License for the
+; specific language governing permissions and limitations
+; under the License.
+
+[couchdb]
+max_dbs_open=10
+
+[httpd]
+port=4895
http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/9d73a901/test/couchdb/fixtures/couch_config_tests_2.ini
----------------------------------------------------------------------
diff --git a/test/couchdb/fixtures/couch_config_tests_2.ini b/test/couchdb/fixtures/couch_config_tests_2.ini
new file mode 100644
index 0000000..5f46357
--- /dev/null
+++ b/test/couchdb/fixtures/couch_config_tests_2.ini
@@ -0,0 +1,22 @@
+; Licensed to the Apache Software Foundation (ASF) under one
+; or more contributor license agreements. See the NOTICE file
+; distributed with this work for additional information
+; regarding copyright ownership. The ASF licenses this file
+; to you under the Apache License, Version 2.0 (the
+; "License"); you may not use this file except in compliance
+; with the License. You may obtain a copy of the License at
+;
+; http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing,
+; software distributed under the License is distributed on an
+; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+; KIND, either express or implied. See the License for the
+; specific language governing permissions and limitations
+; under the License.
+
+[httpd]
+port = 80
+
+[fizbang]
+unicode = normalized