summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Joseph Davis <davisp@apache.org>2011-04-23 00:59:25 +0000
committerPaul Joseph Davis <davisp@apache.org>2011-04-23 00:59:25 +0000
commitd47d7e98819363e31f81a7954fed8bccc5d7d03b (patch)
treec1573265174bca93ecf17c1d616ad64272e1099a
parentd277f7173a10910cab990b5b18e7b01bfc5034f2 (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--.gitignore2
-rw-r--r--license.skip3
-rw-r--r--src/couchdb/couch_os_daemons.erl11
-rwxr-xr-xtest/etap/173-os-daemon-cfg-register.es35
-rwxr-xr-xtest/etap/173-os-daemon-cfg-register.t2
-rw-r--r--test/etap/Makefile.am8
-rw-r--r--test/etap/test_cfg_register.c30
7 files changed, 48 insertions, 43 deletions
diff --git a/.gitignore b/.gitignore
index 47ca91b7..33028e7e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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);
+}