Return-Path: X-Original-To: apmail-couchdb-commits-archive@www.apache.org Delivered-To: apmail-couchdb-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0122E11B5E for ; Fri, 15 Aug 2014 20:24:35 +0000 (UTC) Received: (qmail 74694 invoked by uid 500); 15 Aug 2014 20:24:29 -0000 Delivered-To: apmail-couchdb-commits-archive@couchdb.apache.org Received: (qmail 74386 invoked by uid 500); 15 Aug 2014 20:24:29 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 73889 invoked by uid 99); 15 Aug 2014 20:24:29 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Aug 2014 20:24:29 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 626299C5B1A; Fri, 15 Aug 2014 20:24:29 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: chewbranca@apache.org To: commits@couchdb.apache.org Date: Fri, 15 Aug 2014 20:24:49 -0000 Message-Id: <17893b667628406f9ccf92a0fb5014ad@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [22/50] [abbrv] couch commit: updated refs/heads/1963-eunit-bigcouch to 95bfc03 Port 172-os-daemons-errors.t etap test suite to eunit Merged into couchdb_os_daemons_tests suite. Removed errors redirection to /dev/null to explicitly signal that permissions are set correctly. Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/49de105d Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/49de105d Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/49de105d Branch: refs/heads/1963-eunit-bigcouch Commit: 49de105d4d2f11b213431e3f1287a776914ea4fd Parents: a8a38c9 Author: Alexander Shorin Authored: Tue Jun 3 15:54:33 2014 +0400 Committer: Russell Branca Committed: Fri Aug 15 13:23:44 2014 -0700 ---------------------------------------------------------------------- test/couchdb/couchdb_os_daemons_tests.erl | 64 ++++++++++++++++++++- test/couchdb/fixtures/os_daemon_bad_perm.sh | 17 ++++++ test/couchdb/fixtures/os_daemon_can_reboot.sh | 15 +++++ test/couchdb/fixtures/os_daemon_die_on_boot.sh | 15 +++++ test/couchdb/fixtures/os_daemon_die_quickly.sh | 15 +++++ 5 files changed, 125 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/49de105d/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 dd07e82..aa949c9 100644 --- a/test/couchdb/couchdb_os_daemons_tests.erl +++ b/test/couchdb/couchdb_os_daemons_tests.erl @@ -28,6 +28,10 @@ -define(DAEMON_CONFIGER, "os_daemon_configer.escript"). -define(DAEMON_LOOPER, "os_daemon_looper.escript"). +-define(DAEMON_BAD_PERM, "os_daemon_bad_perm.sh"). +-define(DAEMON_CAN_REBOOT, "os_daemon_can_reboot.sh"). +-define(DAEMON_DIE_ON_BOOT, "os_daemon_die_on_boot.sh"). +-define(DAEMON_DIE_QUICKLY, "os_daemon_die_quickly.sh"). -define(DELAY, 100). -define(TIMEOUT, 1000). @@ -84,6 +88,20 @@ configuration_reader_test_() -> fun setup/1, fun teardown/2, [{?DAEMON_CONFIGER, fun should_read_write_config_settings_by_daemon/2}] + + } + }. + +error_test_() -> + { + "OS Daemon process error tests", + { + foreachx, + fun setup/1, fun teardown/2, + [{?DAEMON_BAD_PERM, fun should_fail_due_to_lack_of_permissions/2}, + {?DAEMON_DIE_ON_BOOT, fun should_die_on_boot/2}, + {?DAEMON_DIE_QUICKLY, fun should_die_quickly/2}, + {?DAEMON_CAN_REBOOT, fun should_not_being_halted/2}] } }. @@ -154,13 +172,57 @@ should_read_write_config_settings_by_daemon(DName, _) -> check_daemon(D, DName) end). +should_fail_due_to_lack_of_permissions(DName, _) -> + ?_test(should_halts(DName, 1000)). + +should_die_on_boot(DName, _) -> + ?_test(should_halts(DName, 1000)). + +should_die_quickly(DName, _) -> + ?_test(should_halts(DName, 4000)). + +should_not_being_halted(DName, _) -> + ?_test(begin + timer:sleep(1000), + {ok, [D1]} = couch_os_daemons:info([table]), + check_daemon(D1, DName, 0), + + % Should reboot every two seconds. We're at 1s, so wait + % until 3s to be in the middle of the next invocation's + % life span. + + timer:sleep(2000), + {ok, [D2]} = couch_os_daemons:info([table]), + check_daemon(D2, DName, 1), + + % If the kill command changed, that means we rebooted the process. + ?assertNotEqual(D1#daemon.kill, D2#daemon.kill) + end). + +should_halts(DName, Time) -> + timer:sleep(Time), + {ok, [D]} = couch_os_daemons:info([table]), + check_dead(D, DName), + couch_config:delete("os_daemons", DName, false). check_daemon(D) -> check_daemon(D, D#daemon.name). check_daemon(D, Name) -> + check_daemon(D, Name, 0). + +check_daemon(D, Name, Errs) -> ?assert(is_port(D#daemon.port)), ?assertEqual(Name, D#daemon.name), ?assertNotEqual(undefined, D#daemon.kill), - ?assertEqual([], D#daemon.errors), + ?assertEqual(running, D#daemon.status), + ?assertEqual(Errs, length(D#daemon.errors)), ?assertEqual([], D#daemon.buf). + +check_dead(D, Name) -> + ?assert(is_port(D#daemon.port)), + ?assertEqual(Name, D#daemon.name), + ?assertNotEqual(undefined, D#daemon.kill), + ?assertEqual(halted, D#daemon.status), + ?assertEqual(nil, D#daemon.errors), + ?assertEqual(nil, D#daemon.buf). http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/49de105d/test/couchdb/fixtures/os_daemon_bad_perm.sh ---------------------------------------------------------------------- diff --git a/test/couchdb/fixtures/os_daemon_bad_perm.sh b/test/couchdb/fixtures/os_daemon_bad_perm.sh new file mode 100644 index 0000000..345c8b4 --- /dev/null +++ b/test/couchdb/fixtures/os_daemon_bad_perm.sh @@ -0,0 +1,17 @@ +#!/bin/sh -e +# +# 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. +# +# Please do not make this file executable as that's the error being tested. + +sleep 5 http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/49de105d/test/couchdb/fixtures/os_daemon_can_reboot.sh ---------------------------------------------------------------------- diff --git a/test/couchdb/fixtures/os_daemon_can_reboot.sh b/test/couchdb/fixtures/os_daemon_can_reboot.sh new file mode 100755 index 0000000..5bc10e8 --- /dev/null +++ b/test/couchdb/fixtures/os_daemon_can_reboot.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e +# +# 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. + +sleep 2 http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/49de105d/test/couchdb/fixtures/os_daemon_die_on_boot.sh ---------------------------------------------------------------------- diff --git a/test/couchdb/fixtures/os_daemon_die_on_boot.sh b/test/couchdb/fixtures/os_daemon_die_on_boot.sh new file mode 100755 index 0000000..256ee79 --- /dev/null +++ b/test/couchdb/fixtures/os_daemon_die_on_boot.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e +# +# 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. + +exit 1 http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/49de105d/test/couchdb/fixtures/os_daemon_die_quickly.sh ---------------------------------------------------------------------- diff --git a/test/couchdb/fixtures/os_daemon_die_quickly.sh b/test/couchdb/fixtures/os_daemon_die_quickly.sh new file mode 100755 index 0000000..f5a1368 --- /dev/null +++ b/test/couchdb/fixtures/os_daemon_die_quickly.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e +# +# 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. + +sleep 1