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/07/22 01:57:44 UTC
[31/43] couchdb commit: updated refs/heads/1963-eunit-bigcouch to
424dca5
Port 171-os-daemons-config.t etap test suite to eunit
Merged into couchdb_os_daemons_tests suite.
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/9f293c27
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/9f293c27
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/9f293c27
Branch: refs/heads/1963-eunit-bigcouch
Commit: 9f293c270e8d8de984a05341716d48ed9eae7da0
Parents: 9d135ef
Author: Alexander Shorin <kx...@apache.org>
Authored: Tue Jun 3 14:10:25 2014 +0400
Committer: Russell Branca <ch...@apache.org>
Committed: Mon Jul 21 16:46:48 2014 -0700
----------------------------------------------------------------------
test/couchdb/couch_auth_cache_tests.erl | 40 +++-----
test/couchdb/couchdb_os_daemons_tests.erl | 21 ++++
.../couchdb/fixtures/os_daemon_configer.escript | 101 +++++++++++++++++++
test/etap/171-os-daemons-config.es | 85 ----------------
test/etap/171-os-daemons-config.t | 72 -------------
5 files changed, 138 insertions(+), 181 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/9f293c27/test/couchdb/couch_auth_cache_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couch_auth_cache_tests.erl b/test/couchdb/couch_auth_cache_tests.erl
index 34f7127..3b2321c 100644
--- a/test/couchdb/couch_auth_cache_tests.erl
+++ b/test/couchdb/couch_auth_cache_tests.erl
@@ -74,47 +74,43 @@ should_get_nil_on_missed_cache(_) ->
?_assertEqual(nil, couch_auth_cache:get_user_creds("joe")).
should_get_right_password_hash(DbName) ->
- ?_assert(begin
+ ?_test(begin
PasswordHash = hash_password("pass1"),
{ok, _} = update_user_doc(DbName, "joe", "pass1"),
Creds = couch_auth_cache:get_user_creds("joe"),
?assertEqual(PasswordHash,
- couch_util:get_value(<<"password_sha">>, Creds)),
- true
+ couch_util:get_value(<<"password_sha">>, Creds))
end).
should_ensure_doc_hash_equals_cached_one(DbName) ->
- ?_assert(begin
+ ?_test(begin
{ok, _} = update_user_doc(DbName, "joe", "pass1"),
Creds = couch_auth_cache:get_user_creds("joe"),
CachedHash = couch_util:get_value(<<"password_sha">>, Creds),
StoredHash = get_user_doc_password_sha(DbName, "joe"),
- ?assertEqual(StoredHash, CachedHash),
- true
+ ?assertEqual(StoredHash, CachedHash)
end).
should_update_password(DbName) ->
- ?_assert(begin
+ ?_test(begin
PasswordHash = hash_password("pass2"),
{ok, Rev} = update_user_doc(DbName, "joe", "pass1"),
{ok, _} = update_user_doc(DbName, "joe", "pass2", Rev),
Creds = couch_auth_cache:get_user_creds("joe"),
?assertEqual(PasswordHash,
- couch_util:get_value(<<"password_sha">>, Creds)),
- true
+ couch_util:get_value(<<"password_sha">>, Creds))
end).
should_cleanup_cache_after_userdoc_deletion(DbName) ->
- ?_assert(begin
+ ?_test(begin
{ok, _} = update_user_doc(DbName, "joe", "pass1"),
delete_user_doc(DbName, "joe"),
- ?assertEqual(nil, couch_auth_cache:get_user_creds("joe")),
- true
+ ?assertEqual(nil, couch_auth_cache:get_user_creds("joe"))
end).
should_restore_cache_after_userdoc_recreation(DbName) ->
- ?_assert(begin
+ ?_test(begin
PasswordHash = hash_password("pass5"),
{ok, _} = update_user_doc(DbName, "joe", "pass1"),
delete_user_doc(DbName, "joe"),
@@ -124,22 +120,20 @@ should_restore_cache_after_userdoc_recreation(DbName) ->
Creds = couch_auth_cache:get_user_creds("joe"),
?assertEqual(PasswordHash,
- couch_util:get_value(<<"password_sha">>, Creds)),
- true
+ couch_util:get_value(<<"password_sha">>, Creds))
end).
should_drop_cache_on_auth_db_change(DbName) ->
- ?_assert(begin
+ ?_test(begin
{ok, _} = update_user_doc(DbName, "joe", "pass1"),
full_commit(DbName),
couch_config:set("couch_httpd_auth", "authentication_db",
?b2l(?tempdb()), false),
- ?assertEqual(nil, couch_auth_cache:get_user_creds("joe")),
- true
+ ?assertEqual(nil, couch_auth_cache:get_user_creds("joe"))
end).
should_restore_cache_on_auth_db_change(DbName) ->
- ?_assert(begin
+ ?_test(begin
PasswordHash = hash_password("pass1"),
{ok, _} = update_user_doc(DbName, "joe", "pass1"),
Creds = couch_auth_cache:get_user_creds("joe"),
@@ -157,20 +151,18 @@ should_restore_cache_on_auth_db_change(DbName) ->
Creds = couch_auth_cache:get_user_creds("joe"),
?assertEqual(PasswordHash,
- couch_util:get_value(<<"password_sha">>, Creds)),
- true
+ couch_util:get_value(<<"password_sha">>, Creds))
end).
should_recover_cache_after_shutdown(DbName) ->
- ?_assert(begin
+ ?_test(begin
PasswordHash = hash_password("pass2"),
{ok, Rev0} = update_user_doc(DbName, "joe", "pass1"),
{ok, Rev1} = update_user_doc(DbName, "joe", "pass2", Rev0),
full_commit(DbName),
shutdown_db(DbName),
{ok, Rev1} = get_doc_rev(DbName, "joe"),
- ?assertEqual(PasswordHash, get_user_doc_password_sha(DbName, "joe")),
- true
+ ?assertEqual(PasswordHash, get_user_doc_password_sha(DbName, "joe"))
end).
http://git-wip-us.apache.org/repos/asf/couchdb/blob/9f293c27/test/couchdb/couchdb_os_daemons_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_os_daemons_tests.erl b/test/couchdb/couchdb_os_daemons_tests.erl
index 1f9f6be..dd07e82 100644
--- a/test/couchdb/couchdb_os_daemons_tests.erl
+++ b/test/couchdb/couchdb_os_daemons_tests.erl
@@ -26,6 +26,7 @@
buf=[]
}).
+-define(DAEMON_CONFIGER, "os_daemon_configer.escript").
-define(DAEMON_LOOPER, "os_daemon_looper.escript").
-define(DELAY, 100).
-define(TIMEOUT, 1000).
@@ -75,6 +76,17 @@ os_daemons_test_() ->
}
}.
+configuration_reader_test_() ->
+ {
+ "OS Daemon requests CouchDB configuration",
+ {
+ foreachx,
+ fun setup/1, fun teardown/2,
+ [{?DAEMON_CONFIGER,
+ fun should_read_write_config_settings_by_daemon/2}]
+ }
+ }.
+
should_check_daemon(DName, _) ->
?_test(begin
@@ -133,6 +145,15 @@ should_keep_alive_one_daemon_on_killing_other(DName, _) ->
check_daemon(T, DName)
end).
+should_read_write_config_settings_by_daemon(DName, _) ->
+ ?_test(begin
+ % have to wait till daemon run all his tests
+ % see daemon's script for more info
+ timer:sleep(?TIMEOUT),
+ {ok, [D]} = couch_os_daemons:info([table]),
+ check_daemon(D, DName)
+ end).
+
check_daemon(D) ->
check_daemon(D, D#daemon.name).
http://git-wip-us.apache.org/repos/asf/couchdb/blob/9f293c27/test/couchdb/fixtures/os_daemon_configer.escript
----------------------------------------------------------------------
diff --git a/test/couchdb/fixtures/os_daemon_configer.escript b/test/couchdb/fixtures/os_daemon_configer.escript
new file mode 100755
index 0000000..d437423
--- /dev/null
+++ b/test/couchdb/fixtures/os_daemon_configer.escript
@@ -0,0 +1,101 @@
+#! /usr/bin/env escript
+
+% 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.
+
+-include("../couch_eunit.hrl").
+
+
+read() ->
+ case io:get_line('') of
+ eof ->
+ stop;
+ Data ->
+ ejson:decode(Data)
+ end.
+
+write(Mesg) ->
+ Data = iolist_to_binary(ejson:encode(Mesg)),
+ io:format(binary_to_list(Data) ++ "\n", []).
+
+get_cfg(Section) ->
+ write([<<"get">>, Section]),
+ read().
+
+get_cfg(Section, Name) ->
+ write([<<"get">>, Section, Name]),
+ read().
+
+log(Mesg) ->
+ write([<<"log">>, Mesg]).
+
+log(Mesg, Level) ->
+ write([<<"log">>, Mesg, {[{<<"level">>, Level}]}]).
+
+test_get_cfg1() ->
+ Path = list_to_binary(?FILE),
+ FileName = list_to_binary(filename:basename(?FILE)),
+ {[{FileName, Path}]} = get_cfg(<<"os_daemons">>).
+
+test_get_cfg2() ->
+ Path = list_to_binary(?FILE),
+ FileName = list_to_binary(filename:basename(?FILE)),
+ Path = get_cfg(<<"os_daemons">>, FileName),
+ <<"sequential">> = get_cfg(<<"uuids">>, <<"algorithm">>).
+
+
+test_get_unknown_cfg() ->
+ {[]} = get_cfg(<<"aal;3p4">>),
+ null = get_cfg(<<"aal;3p4">>, <<"313234kjhsdfl">>).
+
+test_log() ->
+ log(<<"foobar!">>),
+ log(<<"some stuff!">>, <<"debug">>),
+ log(2),
+ log(true),
+ write([<<"log">>, <<"stuff">>, 2]),
+ write([<<"log">>, 3, null]),
+ write([<<"log">>, [1, 2], {[{<<"level">>, <<"debug">>}]}]),
+ write([<<"log">>, <<"true">>, {[]}]).
+
+do_tests() ->
+ test_get_cfg1(),
+ test_get_cfg2(),
+ test_get_unknown_cfg(),
+ test_log(),
+ loop(io:read("")).
+
+loop({ok, _}) ->
+ loop(io:read(""));
+loop(eof) ->
+ init:stop();
+loop({error, _Reason}) ->
+ init:stop().
+
+main([]) ->
+ init_code_path(),
+ couch_config:start_link(?CONFIG_CHAIN),
+ couch_drv:start_link(),
+ do_tests().
+
+init_code_path() ->
+ Paths = [
+ "couchdb",
+ "ejson",
+ "erlang-oauth",
+ "ibrowse",
+ "mochiweb",
+ "snappy"
+ ],
+ lists:foreach(fun(Name) ->
+ code:add_patha(filename:join([?BUILDDIR, "src", Name]))
+ end, Paths).
http://git-wip-us.apache.org/repos/asf/couchdb/blob/9f293c27/test/etap/171-os-daemons-config.es
----------------------------------------------------------------------
diff --git a/test/etap/171-os-daemons-config.es b/test/etap/171-os-daemons-config.es
deleted file mode 100755
index 15da0e9..0000000
--- a/test/etap/171-os-daemons-config.es
+++ /dev/null
@@ -1,85 +0,0 @@
-#! /usr/bin/env escript
-
-% 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.
-
-filename() ->
- list_to_binary(test_util:source_file("test/etap/171-os-daemons-config.es")).
-
-read() ->
- case io:get_line('') of
- eof ->
- stop;
- Data ->
- ejson:decode(Data)
- end.
-
-write(Mesg) ->
- Data = iolist_to_binary(ejson:encode(Mesg)),
- io:format(binary_to_list(Data) ++ "\n", []).
-
-get_cfg(Section) ->
- write([<<"get">>, Section]),
- read().
-
-get_cfg(Section, Name) ->
- write([<<"get">>, Section, Name]),
- read().
-
-log(Mesg) ->
- write([<<"log">>, Mesg]).
-
-log(Mesg, Level) ->
- write([<<"log">>, Mesg, {[{<<"level">>, Level}]}]).
-
-test_get_cfg1() ->
- FileName = filename(),
- {[{<<"foo">>, FileName}]} = get_cfg(<<"os_daemons">>).
-
-test_get_cfg2() ->
- FileName = filename(),
- FileName = get_cfg(<<"os_daemons">>, <<"foo">>),
- <<"sequential">> = get_cfg(<<"uuids">>, <<"algorithm">>).
-
-test_get_unknown_cfg() ->
- {[]} = get_cfg(<<"aal;3p4">>),
- null = get_cfg(<<"aal;3p4">>, <<"313234kjhsdfl">>).
-
-test_log() ->
- log(<<"foobar!">>),
- log(<<"some stuff!">>, <<"debug">>),
- log(2),
- log(true),
- write([<<"log">>, <<"stuff">>, 2]),
- write([<<"log">>, 3, null]),
- write([<<"log">>, [1, 2], {[{<<"level">>, <<"debug">>}]}]),
- write([<<"log">>, <<"true">>, {[]}]).
-
-do_tests() ->
- test_get_cfg1(),
- test_get_cfg2(),
- test_get_unknown_cfg(),
- test_log(),
- loop(io:read("")).
-
-loop({ok, _}) ->
- loop(io:read(""));
-loop(eof) ->
- init:stop();
-loop({error, _Reason}) ->
- init:stop().
-
-main([]) ->
- test_util:init_code_path(),
- application:start(config),
- couch_drv:start_link(),
- do_tests().
http://git-wip-us.apache.org/repos/asf/couchdb/blob/9f293c27/test/etap/171-os-daemons-config.t
----------------------------------------------------------------------
diff --git a/test/etap/171-os-daemons-config.t b/test/etap/171-os-daemons-config.t
deleted file mode 100755
index c8348d5..0000000
--- a/test/etap/171-os-daemons-config.t
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env escript
-%% -*- erlang -*-
-
-% 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.
-
--record(daemon, {
- port,
- name,
- cmd,
- kill,
- status=running,
- cfg_patterns=[],
- errors=[],
- buf=[]
-}).
-
-config_files() ->
- lists:map(fun test_util:build_file/1, [
- "etc/couchdb/default_dev.ini"
- ]).
-
-daemon_cmd() ->
- test_util:source_file("test/etap/171-os-daemons-config.es").
-
-main(_) ->
- test_util:init_code_path(),
-
- etap:plan(6),
- case (catch test()) of
- ok ->
- etap:end_tests();
- Other ->
- etap:diag(io_lib:format("Test died abnormally: ~p", [Other])),
- etap:bail(Other)
- end,
- ok.
-
-test() ->
- test_util:start_couch(),
- config:set("log", "level", "debug", false),
-
- % "foo" is a required name by this test.
- config:set("os_daemons", "foo", daemon_cmd(), false),
- timer:sleep(1000),
-
- {ok, [D1]} = couch_os_daemons:info([table]),
- check_daemon(D1, "foo"),
-
- ok.
-
-check_daemon(D, Name) ->
- BaseName = "171-os-daemons-config.es",
- BaseLen = length(BaseName),
- CmdLen = length(D#daemon.cmd),
- CmdName = lists:sublist(D#daemon.cmd, CmdLen-BaseLen+1, BaseLen),
-
- etap:is(is_port(D#daemon.port), true, "Daemon port is a port."),
- etap:is(D#daemon.name, Name, "Daemon name was set correctly."),
- etap:is(CmdName, BaseName, "Command name was set correctly."),
- etap:isnt(D#daemon.kill, undefined, "Kill command was set."),
- etap:is(D#daemon.errors, [], "No errors occurred while booting."),
- etap:is(D#daemon.buf, [], "No extra data left in the buffer.").