diff options
author | Paul Joseph Davis <davisp@apache.org> | 2011-04-23 00:59:25 +0000 |
---|---|---|
committer | Paul Joseph Davis <davisp@apache.org> | 2011-04-23 00:59:25 +0000 |
commit | d47d7e98819363e31f81a7954fed8bccc5d7d03b (patch) | |
tree | c1573265174bca93ecf17c1d616ad64272e1099a | |
parent | d277f7173a10910cab990b5b18e7b01bfc5034f2 (diff) |
Fix random errors in 173-os-daemon-cfg-register.t
This is a backport of 1096098 from trunk.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/branches/1.1.x@1096099 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | license.skip | 3 | ||||
-rw-r--r-- | src/couchdb/couch_os_daemons.erl | 11 | ||||
-rwxr-xr-x | test/etap/173-os-daemon-cfg-register.es | 35 | ||||
-rwxr-xr-x | test/etap/173-os-daemon-cfg-register.t | 2 | ||||
-rw-r--r-- | test/etap/Makefile.am | 8 | ||||
-rw-r--r-- | test/etap/test_cfg_register.c | 30 |
7 files changed, 48 insertions, 43 deletions
@@ -65,7 +65,9 @@ src/erlang-oauth/oauth.app src/ibrowse/ibrowse.app src/mochiweb/mochiweb.app test/local.ini +test/etap/.deps/ test/etap/run +test/etap/test_cfg_register test/etap/test_util.erl test/javascript/run share/server/main.js diff --git a/license.skip b/license.skip index a9a53412..151ccc08 100644 --- a/license.skip +++ b/license.skip @@ -93,6 +93,9 @@ ^test/bench/Makefile ^test/bench/Makefile.in ^test/etap/.*beam +^test/etap/.*\.o +^test/etap/.deps/* +^test/etap/test_cfg_register ^test/etap/Makefile ^test/etap/Makefile.in ^test/etap/temp.* diff --git a/src/couchdb/couch_os_daemons.erl b/src/couchdb/couch_os_daemons.erl index bdd39997..d03f550c 100644 --- a/src/couchdb/couch_os_daemons.erl +++ b/src/couchdb/couch_os_daemons.erl @@ -86,12 +86,12 @@ handle_info({'EXIT', Port, Reason}, Table) -> ?LOG_INFO("Port ~p exited after stopping: ~p~n", [Port, Reason]); [#daemon{status=stopping}] -> true = ets:delete(Table, Port); - [#daemon{name=Name, status=restarting, errors=Errs}=D] -> + [#daemon{name=Name, status=restarting}=D] -> ?LOG_INFO("Daemon ~P restarting after config change.", [Name]), true = ets:delete(Table, Port), {ok, Port2} = start_port(D#daemon.cmd), true = ets:insert(Table, D#daemon{ - port=Port2, status=running, kill=undefined, errors=Errs, buf=[] + port=Port2, status=running, kill=undefined, buf=[] }); [#daemon{name=Name, status=halted}] -> ?LOG_ERROR("Halted daemon process: ~p", [Name]); @@ -106,12 +106,12 @@ handle_info({Port, {exit_status, Status}}, Table) -> [] -> ?LOG_ERROR("Unknown port ~p exiting ~p", [Port, Status]), {stop, {error, unknown_port_died, Status}, Table}; - [#daemon{name=Name, status=restarting, errors=Errors}=D] -> + [#daemon{name=Name, status=restarting}=D] -> ?LOG_INFO("Daemon ~P restarting after config change.", [Name]), true = ets:delete(Table, Port), {ok, Port2} = start_port(D#daemon.cmd), true = ets:insert(Table, D#daemon{ - port=Port2, kill=undefined, errors=Errors, buf=[] + port=Port2, status=running, kill=undefined, buf=[] }), {noreply, Table}; [#daemon{status=stopping}=D] -> @@ -140,7 +140,8 @@ handle_info({Port, {exit_status, Status}}, Table) -> true = ets:delete(Table, Port), {ok, Port2} = start_port(D#daemon.cmd), true = ets:insert(Table, D#daemon{ - port=Port2, kill=undefined, errors=Errors, buf=[] + port=Port2, status=running, kill=undefined, + errors=Errors, buf=[] }), {noreply, Table} end; diff --git a/test/etap/173-os-daemon-cfg-register.es b/test/etap/173-os-daemon-cfg-register.es deleted file mode 100755 index 3d536dc7..00000000 --- a/test/etap/173-os-daemon-cfg-register.es +++ /dev/null @@ -1,35 +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. - -write(Mesg) -> - Data = iolist_to_binary(couch_util:json_encode(Mesg)), - io:format(binary_to_list(Data) ++ "\n", []). - -cfg_register(Section) -> - write([<<"register">>, Section]). - -cfg_register(Section, Key) -> - write([<<"register">>, Section, Key]). - -wait(_) -> - init:stop(). - -do_tests() -> - cfg_register(<<"s1">>), - cfg_register(<<"s2">>, <<"k">>), - wait(io:read("")). - -main([]) -> - test_util:init_code_path(), - do_tests(). diff --git a/test/etap/173-os-daemon-cfg-register.t b/test/etap/173-os-daemon-cfg-register.t index af9cbaa0..71181aa2 100755 --- a/test/etap/173-os-daemon-cfg-register.t +++ b/test/etap/173-os-daemon-cfg-register.t @@ -28,7 +28,7 @@ daemon_name() -> "wheee". daemon_cmd() -> - test_util:source_file("test/etap/173-os-daemon-cfg-register.es"). + test_util:build_file("test/etap/test_cfg_register"). main(_) -> test_util:init_code_path(), diff --git a/test/etap/Makefile.am b/test/etap/Makefile.am index 6d7fe12b..005b99ee 100644 --- a/test/etap/Makefile.am +++ b/test/etap/Makefile.am @@ -13,6 +13,10 @@ noinst_SCRIPTS = run noinst_DATA = test_util.beam test_web.beam +noinst_PROGRAMS = test_cfg_register +test_cfg_register_SOURCES = test_cfg_register.c +test_cfg_register_CFLAGS = -D_BSD_SOURCE + %.beam: %.erl $(ERLC) $< @@ -78,7 +82,7 @@ EXTRA_DIST = \ 172-os-daemon-errors.3.es \ 172-os-daemon-errors.4.es \ 172-os-daemon-errors.t \ - 173-os-daemon-cfg-register.es \ 173-os-daemon-cfg-register.t \ 180-http-proxy.ini \ - 180-http-proxy.t + 180-http-proxy.t \ + 190-json-stream-parse.t diff --git a/test/etap/test_cfg_register.c b/test/etap/test_cfg_register.c new file mode 100644 index 00000000..7161eb55 --- /dev/null +++ b/test/etap/test_cfg_register.c @@ -0,0 +1,30 @@ +// 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 <stdio.h> + +int +main(int argc, const char * argv[]) +{ + char c = '\0'; + size_t num = 1; + + fprintf(stdout, "[\"register\", \"s1\"]\n"); + fprintf(stdout, "[\"register\", \"s2\", \"k\"]\n"); + fflush(stdout); + + while(c != '\n' && num > 0) { + num = fread(&c, 1, 1, stdin); + } + + exit(0); +} |