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/29 00:35:28 UTC
[08/11] config commit: updated refs/heads/1963-eunit-bigcouch to
7a8e21e
Switch to using config instead of couch_config
Project: http://git-wip-us.apache.org/repos/asf/couchdb-config/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-config/commit/00955e8c
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-config/tree/00955e8c
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-config/diff/00955e8c
Branch: refs/heads/1963-eunit-bigcouch
Commit: 00955e8c119f50b3813ab1270a4326b8127b3834
Parents: 96d1129
Author: Russell Branca <ch...@apache.org>
Authored: Thu Aug 28 14:24:24 2014 -0700
Committer: Russell Branca <ch...@apache.org>
Committed: Thu Aug 28 14:25:46 2014 -0700
----------------------------------------------------------------------
test/config_tests.erl | 465 ++++++++++++++++++++++++++++
test/couch_config_tests.erl | 465 ----------------------------
test/fixtures/config_tests_1.ini | 22 ++
test/fixtures/config_tests_2.ini | 22 ++
test/fixtures/couch_config_tests_1.ini | 22 --
test/fixtures/couch_config_tests_2.ini | 22 --
6 files changed, 509 insertions(+), 509 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-config/blob/00955e8c/test/config_tests.erl
----------------------------------------------------------------------
diff --git a/test/config_tests.erl b/test/config_tests.erl
new file mode 100644
index 0000000..feebd2d
--- /dev/null
+++ b/test/config_tests.erl
@@ -0,0 +1,465 @@
+% Licensed 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.
+
+-module(config_tests).
+
+-include_lib("couch/include/couch_eunit.hrl").
+-include_lib("couch/include/couch_db.hrl").
+
+-define(SHORT_TIMEOUT, 100).
+-define(TIMEOUT, 1000).
+
+-define(CONFIG_DEFAULT,
+ filename:join([?BUILDDIR(), "etc", "couchdb", "default_dev.ini"])).
+-define(CONFIG_FIXTURESDIR,
+ filename:join([?BUILDDIR(), "src", "config", "test", "fixtures"])).
+-define(CONFIG_FIXTURE_1,
+ filename:join([?CONFIG_FIXTURESDIR, "config_tests_1.ini"])).
+-define(CONFIG_FIXTURE_2,
+ filename:join([?CONFIG_FIXTURESDIR, "config_tests_2.ini"])).
+-define(CONFIG_FIXTURE_TEMP,
+ begin
+ FileName = filename:join([?TEMPDIR, "config_temp.ini"]),
+ {ok, Fd} = file:open(FileName, write),
+ ok = file:truncate(Fd),
+ ok = file:close(Fd),
+ FileName
+ end).
+
+
+setup() ->
+ setup(?CONFIG_CHAIN).
+setup({temporary, Chain}) ->
+ setup(Chain);
+setup({persistent, Chain}) ->
+ setup(lists:append(Chain, [?CONFIG_FIXTURE_TEMP]));
+setup(Chain) ->
+ {ok, Pid} = config:start_link(Chain),
+ Pid.
+
+setup_empty() ->
+ setup([]).
+
+setup_register() ->
+ ConfigPid = setup(),
+ SentinelFunc = fun() ->
+ % Ping/Pong to make sure we wait for this
+ % process to die
+ receive
+ {ping, From} ->
+ From ! pong
+ end
+ end,
+ SentinelPid = spawn(SentinelFunc),
+ {ConfigPid, SentinelPid}.
+
+teardown({ConfigPid, SentinelPid}) ->
+ teardown(ConfigPid),
+ case process_info(SentinelPid) of
+ undefined -> ok;
+ _ ->
+ SentinelPid ! {ping, self()},
+ receive
+ pong ->
+ ok
+ after 100 ->
+ throw({timeout_error, registered_pid})
+ end
+ end;
+teardown(Pid) ->
+ config:stop(),
+ erlang:monitor(process, Pid),
+ receive
+ {'DOWN', _, _, Pid, _} ->
+ ok
+ after ?TIMEOUT ->
+ throw({timeout_error, config_stop})
+ end.
+teardown(_, Pid) ->
+ teardown(Pid).
+
+
+config_test_() ->
+ {
+ "CouchDB config tests",
+ [
+ config_get_tests(),
+ config_set_tests(),
+ config_del_tests(),
+ config_override_tests(),
+ config_persistent_changes_tests(),
+ config_register_tests(),
+ config_no_files_tests()
+ ]
+ }.
+
+config_get_tests() ->
+ {
+ "Config get tests",
+ {
+ foreach,
+ fun setup/0, fun teardown/1,
+ [
+ should_load_all_configs(),
+ should_locate_daemons_section(),
+ should_locate_mrview_handler(),
+ should_return_undefined_atom_on_missed_section(),
+ should_return_undefined_atom_on_missed_option(),
+ should_return_custom_default_value_on_missed_option(),
+ should_only_return_default_on_missed_option(),
+ should_get_binary_option()
+ ]
+ }
+ }.
+
+config_set_tests() ->
+ {
+ "Config set tests",
+ {
+ foreach,
+ fun setup/0, fun teardown/1,
+ [
+ should_update_option(),
+ should_create_new_section(),
+ should_set_binary_option()
+ ]
+ }
+ }.
+
+config_del_tests() ->
+ {
+ "Config deletion tests",
+ {
+ foreach,
+ fun setup/0, fun teardown/1,
+ [
+ should_return_undefined_atom_after_option_deletion(),
+ should_be_ok_on_deleting_unknown_options(),
+ should_delete_binary_option()
+ ]
+ }
+ }.
+
+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}
+ ]
+ }
+ }.
+
+config_register_tests() ->
+ {
+ "Config changes subscriber",
+ {
+ foreach,
+ fun setup_register/0, fun teardown/1,
+ [
+ fun should_handle_port_changes/1,
+ fun should_pass_persistent_flag/1,
+ fun should_not_trigger_handler_on_other_options_changes/1,
+ fun should_not_trigger_handler_after_related_process_death/1
+ ]
+ }
+ }.
+
+config_no_files_tests() ->
+ {
+ "Test config with no files",
+ {
+ foreach,
+ fun setup_empty/0, fun teardown/1,
+ [
+ should_ensure_that_no_ini_files_loaded(),
+ should_create_non_persistent_option(),
+ should_create_persistent_option()
+ ]
+ }
+ }.
+
+
+should_load_all_configs() ->
+ ?_assert(length(config:all()) > 0).
+
+should_locate_daemons_section() ->
+ ?_assert(length(config:get("daemons")) > 0).
+
+should_locate_mrview_handler() ->
+ ?_assertEqual("{couch_mrview_http, handle_view_req}",
+ config:get("httpd_design_handlers", "_view")).
+
+should_return_undefined_atom_on_missed_section() ->
+ ?_assertEqual(undefined,
+ config:get("foo", "bar")).
+
+should_return_undefined_atom_on_missed_option() ->
+ ?_assertEqual(undefined,
+ config:get("httpd", "foo")).
+
+should_return_custom_default_value_on_missed_option() ->
+ ?_assertEqual("bar",
+ config:get("httpd", "foo", "bar")).
+
+should_only_return_default_on_missed_option() ->
+ ?_assertEqual("0",
+ config:get("httpd", "port", "bar")).
+
+should_get_binary_option() ->
+ ?_assertEqual(<<"baz">>,
+ config:get(<<"foo">>, <<"bar">>, <<"baz">>)).
+
+should_update_option() ->
+ ?_assertEqual("severe",
+ begin
+ ok = config:set("log", "level", "severe", false),
+ config:get("log", "level")
+ end).
+
+should_create_new_section() ->
+ ?_assertEqual("bang",
+ begin
+ undefined = config:get("new_section", "bizzle"),
+ ok = config:set("new_section", "bizzle", "bang", false),
+ config:get("new_section", "bizzle")
+ end).
+
+should_set_binary_option() ->
+ ?_assertEqual(<<"baz">>,
+ begin
+ ok = config:set(<<"foo">>, <<"bar">>, <<"baz">>, false),
+ config:get(<<"foo">>, <<"bar">>)
+ end).
+
+should_return_undefined_atom_after_option_deletion() ->
+ ?_assertEqual(undefined,
+ begin
+ ok = config:delete("log", "level", false),
+ config:get("log", "level")
+ end).
+
+should_be_ok_on_deleting_unknown_options() ->
+ ?_assertEqual(ok, config:delete("zoo", "boo", false)).
+
+should_delete_binary_option() ->
+ ?_assertEqual(undefined,
+ begin
+ ok = config:set(<<"foo">>, <<"bar">>, <<"baz">>, false),
+ ok = config:delete(<<"foo">>, <<"bar">>, false),
+ config:get(<<"foo">>, <<"bar">>)
+ end).
+
+should_ensure_in_defaults(_, _) ->
+ ?_test(begin
+ ?assertEqual("100",
+ config:get("couchdb", "max_dbs_open")),
+ ?assertEqual("5984",
+ config:get("httpd", "port")),
+ ?assertEqual(undefined,
+ config:get("fizbang", "unicode"))
+ end).
+
+should_override_options(_, _) ->
+ ?_test(begin
+ ?assertEqual("10",
+ config:get("couchdb", "max_dbs_open")),
+ ?assertEqual("4895",
+ config:get("httpd", "port"))
+ end).
+
+should_create_new_sections_on_override(_, _) ->
+ ?_test(begin
+ ?assertEqual("80",
+ config:get("httpd", "port")),
+ ?assertEqual("normalized",
+ config:get("fizbang", "unicode"))
+ end).
+
+should_win_last_in_chain(_, _) ->
+ ?_assertEqual("80", config:get("httpd", "port")).
+
+should_write_changes(_, _) ->
+ ?_test(begin
+ ?assertEqual("5984",
+ config:get("httpd", "port")),
+ ?assertEqual(ok,
+ config:set("httpd", "port", "8080")),
+ ?assertEqual("8080",
+ config:get("httpd", "port")),
+ ?assertEqual(ok,
+ config:delete("httpd", "bind_address", "8080")),
+ ?assertEqual(undefined,
+ config:get("httpd", "bind_address"))
+ end).
+
+should_ensure_that_default_wasnt_modified(_, _) ->
+ ?_test(begin
+ ?assertEqual("5984",
+ config:get("httpd", "port")),
+ ?assertEqual("127.0.0.1",
+ config:get("httpd", "bind_address"))
+ end).
+
+should_ensure_that_written_to_last_config_in_chain(_, _) ->
+ ?_test(begin
+ ?assertEqual("8080",
+ config:get("httpd", "port")),
+ ?assertEqual(undefined,
+ config:get("httpd", "bind_address"))
+ end).
+
+should_handle_port_changes({_, SentinelPid}) ->
+ ?_assert(begin
+ MainProc = self(),
+ Port = "8080",
+
+ config:register(
+ fun("httpd", "port", Value) ->
+ % config catches every error raised from handler
+ % so it's not possible to just assert on wrong value.
+ % We have to return the result as message
+ MainProc ! (Value =:= Port)
+ end,
+ SentinelPid
+ ),
+ ok = config:set("httpd", "port", Port, false),
+
+ receive
+ R ->
+ R
+ after ?TIMEOUT ->
+ erlang:error({assertion_failed,
+ [{module, ?MODULE},
+ {line, ?LINE},
+ {reason, "Timeout"}]})
+ end
+ end).
+
+should_pass_persistent_flag({_, SentinelPid}) ->
+ ?_assert(begin
+ MainProc = self(),
+
+ config:register(
+ fun("httpd", "port", _, Persist) ->
+ % config catches every error raised from handler
+ % so it's not possible to just assert on wrong value.
+ % We have to return the result as message
+ MainProc ! Persist
+ end,
+ SentinelPid
+ ),
+ ok = config:set("httpd", "port", "8080", false),
+
+ receive
+ false ->
+ true
+ after ?SHORT_TIMEOUT ->
+ false
+ end
+ end).
+
+should_not_trigger_handler_on_other_options_changes({_, SentinelPid}) ->
+ ?_assert(begin
+ MainProc = self(),
+
+ config:register(
+ fun("httpd", "port", _) ->
+ MainProc ! ok
+ end,
+ SentinelPid
+ ),
+ ok = config:set("httpd", "bind_address", "0.0.0.0", false),
+
+ receive
+ ok ->
+ false
+ after ?SHORT_TIMEOUT ->
+ true
+ end
+ end).
+
+should_not_trigger_handler_after_related_process_death({_, SentinelPid}) ->
+ ?_assert(begin
+ MainProc = self(),
+
+ config:register(
+ fun("httpd", "port", _) ->
+ MainProc ! ok
+ end,
+ SentinelPid
+ ),
+
+ SentinelPid ! {ping, MainProc},
+ receive
+ pong ->
+ ok
+ after ?SHORT_TIMEOUT ->
+ erlang:error({assertion_failed,
+ [{module, ?MODULE},
+ {line, ?LINE},
+ {reason, "Timeout"}]})
+ end,
+
+ ok = config:set("httpd", "port", "12345", false),
+
+ receive
+ ok ->
+ false
+ after ?SHORT_TIMEOUT ->
+ true
+ end
+ end).
+
+should_ensure_that_no_ini_files_loaded() ->
+ ?_assertEqual(0, length(config:all())).
+
+should_create_non_persistent_option() ->
+ ?_assertEqual("80",
+ begin
+ ok = config:set("httpd", "port", "80", false),
+ config:get("httpd", "port")
+ end).
+
+should_create_persistent_option() ->
+ ?_assertEqual("127.0.0.1",
+ begin
+ ok = config:set("httpd", "bind_address", "127.0.0.1"),
+ config:get("httpd", "bind_address")
+ end).
http://git-wip-us.apache.org/repos/asf/couchdb-config/blob/00955e8c/test/couch_config_tests.erl
----------------------------------------------------------------------
diff --git a/test/couch_config_tests.erl b/test/couch_config_tests.erl
deleted file mode 100644
index 0bc2c8a..0000000
--- a/test/couch_config_tests.erl
+++ /dev/null
@@ -1,465 +0,0 @@
-% Licensed 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.
-
--module(couch_config_tests).
-
--include_lib("couch/include/couch_eunit.hrl").
--include_lib("couch/include/couch_db.hrl").
-
--define(SHORT_TIMEOUT, 100).
--define(TIMEOUT, 1000).
-
--define(CONFIG_DEFAULT,
- filename:join([?BUILDDIR(), "etc", "couchdb", "default_dev.ini"])).
--define(CONFIG_FIXTURESDIR,
- filename:join([?BUILDDIR(), "src", "config", "test", "fixtures"])).
--define(CONFIG_FIXTURE_1,
- filename:join([?CONFIG_FIXTURESDIR, "couch_config_tests_1.ini"])).
--define(CONFIG_FIXTURE_2,
- filename:join([?CONFIG_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() ->
- 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.
-
-setup_empty() ->
- setup([]).
-
-setup_register() ->
- ConfigPid = setup(),
- SentinelFunc = fun() ->
- % Ping/Pong to make sure we wait for this
- % process to die
- receive
- {ping, From} ->
- From ! pong
- end
- end,
- SentinelPid = spawn(SentinelFunc),
- {ConfigPid, SentinelPid}.
-
-teardown({ConfigPid, SentinelPid}) ->
- teardown(ConfigPid),
- case process_info(SentinelPid) of
- undefined -> ok;
- _ ->
- SentinelPid ! {ping, self()},
- receive
- pong ->
- ok
- after 100 ->
- throw({timeout_error, registered_pid})
- end
- end;
-teardown(Pid) ->
- couch_config:stop(),
- erlang:monitor(process, Pid),
- receive
- {'DOWN', _, _, Pid, _} ->
- ok
- after ?TIMEOUT ->
- throw({timeout_error, config_stop})
- end.
-teardown(_, Pid) ->
- teardown(Pid).
-
-
-couch_config_test_() ->
- {
- "CouchDB config tests",
- [
- couch_config_get_tests(),
- couch_config_set_tests(),
- couch_config_del_tests(),
- config_override_tests(),
- config_persistent_changes_tests(),
- config_register_tests(),
- config_no_files_tests()
- ]
- }.
-
-couch_config_get_tests() ->
- {
- "Config get tests",
- {
- foreach,
- fun setup/0, fun teardown/1,
- [
- should_load_all_configs(),
- should_locate_daemons_section(),
- should_locate_mrview_handler(),
- should_return_undefined_atom_on_missed_section(),
- should_return_undefined_atom_on_missed_option(),
- should_return_custom_default_value_on_missed_option(),
- should_only_return_default_on_missed_option(),
- should_get_binary_option()
- ]
- }
- }.
-
-couch_config_set_tests() ->
- {
- "Config set tests",
- {
- foreach,
- fun setup/0, fun teardown/1,
- [
- should_update_option(),
- should_create_new_section(),
- should_set_binary_option()
- ]
- }
- }.
-
-couch_config_del_tests() ->
- {
- "Config deletion tests",
- {
- foreach,
- fun setup/0, fun teardown/1,
- [
- should_return_undefined_atom_after_option_deletion(),
- should_be_ok_on_deleting_unknown_options(),
- should_delete_binary_option()
- ]
- }
- }.
-
-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}
- ]
- }
- }.
-
-config_register_tests() ->
- {
- "Config changes subscriber",
- {
- foreach,
- fun setup_register/0, fun teardown/1,
- [
- fun should_handle_port_changes/1,
- fun should_pass_persistent_flag/1,
- fun should_not_trigger_handler_on_other_options_changes/1,
- fun should_not_trigger_handler_after_related_process_death/1
- ]
- }
- }.
-
-config_no_files_tests() ->
- {
- "Test couch_config with no files",
- {
- foreach,
- fun setup_empty/0, fun teardown/1,
- [
- should_ensure_that_no_ini_files_loaded(),
- should_create_non_persistent_option(),
- should_create_persistent_option()
- ]
- }
- }.
-
-
-should_load_all_configs() ->
- ?_assert(length(couch_config:all()) > 0).
-
-should_locate_daemons_section() ->
- ?_assert(length(couch_config:get("daemons")) > 0).
-
-should_locate_mrview_handler() ->
- ?_assertEqual("{couch_mrview_http, handle_view_req}",
- couch_config:get("httpd_design_handlers", "_view")).
-
-should_return_undefined_atom_on_missed_section() ->
- ?_assertEqual(undefined,
- couch_config:get("foo", "bar")).
-
-should_return_undefined_atom_on_missed_option() ->
- ?_assertEqual(undefined,
- couch_config:get("httpd", "foo")).
-
-should_return_custom_default_value_on_missed_option() ->
- ?_assertEqual("bar",
- couch_config:get("httpd", "foo", "bar")).
-
-should_only_return_default_on_missed_option() ->
- ?_assertEqual("0",
- couch_config:get("httpd", "port", "bar")).
-
-should_get_binary_option() ->
- ?_assertEqual(<<"baz">>,
- couch_config:get(<<"foo">>, <<"bar">>, <<"baz">>)).
-
-should_update_option() ->
- ?_assertEqual("severe",
- begin
- ok = couch_config:set("log", "level", "severe", false),
- couch_config:get("log", "level")
- end).
-
-should_create_new_section() ->
- ?_assertEqual("bang",
- begin
- undefined = couch_config:get("new_section", "bizzle"),
- ok = couch_config:set("new_section", "bizzle", "bang", false),
- couch_config:get("new_section", "bizzle")
- end).
-
-should_set_binary_option() ->
- ?_assertEqual(<<"baz">>,
- begin
- ok = couch_config:set(<<"foo">>, <<"bar">>, <<"baz">>, false),
- couch_config:get(<<"foo">>, <<"bar">>)
- end).
-
-should_return_undefined_atom_after_option_deletion() ->
- ?_assertEqual(undefined,
- begin
- ok = couch_config:delete("log", "level", false),
- couch_config:get("log", "level")
- end).
-
-should_be_ok_on_deleting_unknown_options() ->
- ?_assertEqual(ok, couch_config:delete("zoo", "boo", false)).
-
-should_delete_binary_option() ->
- ?_assertEqual(undefined,
- begin
- ok = couch_config:set(<<"foo">>, <<"bar">>, <<"baz">>, false),
- 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).
-
-should_handle_port_changes({_, SentinelPid}) ->
- ?_assert(begin
- MainProc = self(),
- Port = "8080",
-
- couch_config:register(
- fun("httpd", "port", Value) ->
- % couch_config catches every error raised from handler
- % so it's not possible to just assert on wrong value.
- % We have to return the result as message
- MainProc ! (Value =:= Port)
- end,
- SentinelPid
- ),
- ok = couch_config:set("httpd", "port", Port, false),
-
- receive
- R ->
- R
- after ?TIMEOUT ->
- erlang:error({assertion_failed,
- [{module, ?MODULE},
- {line, ?LINE},
- {reason, "Timeout"}]})
- end
- end).
-
-should_pass_persistent_flag({_, SentinelPid}) ->
- ?_assert(begin
- MainProc = self(),
-
- couch_config:register(
- fun("httpd", "port", _, Persist) ->
- % couch_config catches every error raised from handler
- % so it's not possible to just assert on wrong value.
- % We have to return the result as message
- MainProc ! Persist
- end,
- SentinelPid
- ),
- ok = couch_config:set("httpd", "port", "8080", false),
-
- receive
- false ->
- true
- after ?SHORT_TIMEOUT ->
- false
- end
- end).
-
-should_not_trigger_handler_on_other_options_changes({_, SentinelPid}) ->
- ?_assert(begin
- MainProc = self(),
-
- couch_config:register(
- fun("httpd", "port", _) ->
- MainProc ! ok
- end,
- SentinelPid
- ),
- ok = couch_config:set("httpd", "bind_address", "0.0.0.0", false),
-
- receive
- ok ->
- false
- after ?SHORT_TIMEOUT ->
- true
- end
- end).
-
-should_not_trigger_handler_after_related_process_death({_, SentinelPid}) ->
- ?_assert(begin
- MainProc = self(),
-
- couch_config:register(
- fun("httpd", "port", _) ->
- MainProc ! ok
- end,
- SentinelPid
- ),
-
- SentinelPid ! {ping, MainProc},
- receive
- pong ->
- ok
- after ?SHORT_TIMEOUT ->
- erlang:error({assertion_failed,
- [{module, ?MODULE},
- {line, ?LINE},
- {reason, "Timeout"}]})
- end,
-
- ok = couch_config:set("httpd", "port", "12345", false),
-
- receive
- ok ->
- false
- after ?SHORT_TIMEOUT ->
- true
- end
- end).
-
-should_ensure_that_no_ini_files_loaded() ->
- ?_assertEqual(0, length(couch_config:all())).
-
-should_create_non_persistent_option() ->
- ?_assertEqual("80",
- begin
- ok = couch_config:set("httpd", "port", "80", false),
- couch_config:get("httpd", "port")
- end).
-
-should_create_persistent_option() ->
- ?_assertEqual("127.0.0.1",
- begin
- ok = couch_config:set("httpd", "bind_address", "127.0.0.1"),
- couch_config:get("httpd", "bind_address")
- end).
http://git-wip-us.apache.org/repos/asf/couchdb-config/blob/00955e8c/test/fixtures/config_tests_1.ini
----------------------------------------------------------------------
diff --git a/test/fixtures/config_tests_1.ini b/test/fixtures/config_tests_1.ini
new file mode 100644
index 0000000..55451da
--- /dev/null
+++ b/test/fixtures/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-config/blob/00955e8c/test/fixtures/config_tests_2.ini
----------------------------------------------------------------------
diff --git a/test/fixtures/config_tests_2.ini b/test/fixtures/config_tests_2.ini
new file mode 100644
index 0000000..5f46357
--- /dev/null
+++ b/test/fixtures/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
http://git-wip-us.apache.org/repos/asf/couchdb-config/blob/00955e8c/test/fixtures/couch_config_tests_1.ini
----------------------------------------------------------------------
diff --git a/test/fixtures/couch_config_tests_1.ini b/test/fixtures/couch_config_tests_1.ini
deleted file mode 100644
index 55451da..0000000
--- a/test/fixtures/couch_config_tests_1.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-; 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-config/blob/00955e8c/test/fixtures/couch_config_tests_2.ini
----------------------------------------------------------------------
diff --git a/test/fixtures/couch_config_tests_2.ini b/test/fixtures/couch_config_tests_2.ini
deleted file mode 100644
index 5f46357..0000000
--- a/test/fixtures/couch_config_tests_2.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-; 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