You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by kx...@apache.org on 2015/10/13 21:00:41 UTC
couch commit: updated refs/heads/master to c0bf9d6
Repository: couchdb-couch
Updated Branches:
refs/heads/master eb60e41ad -> c0bf9d67d
Increase EUnit test stability
* couchdb_1283 : suspend compaction process to reduce chance of
race condition between it finishing and Writer3 process opening
a database handle. Writer3 should fail because compactor should
be keeping its handle. (@Kxepal, thanks for the idea!)
* In couchdb_1309, when waiting for view cleanup, test once,
if fails due to race condition, wait a second and try again.
* Increase wait time to wait for compactor to stabilize runs on
slower machines.
COUCHDB-2848
Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/c0bf9d67
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/c0bf9d67
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/c0bf9d67
Branch: refs/heads/master
Commit: c0bf9d67d70092e02226079053c55ff20fb972de
Parents: eb60e41
Author: Nick Vatamaniuc <va...@gmail.com>
Authored: Mon Oct 12 09:59:56 2015 -0400
Committer: Nick Vatamaniuc <va...@gmail.com>
Committed: Tue Oct 13 14:24:11 2015 -0400
----------------------------------------------------------------------
test/couchdb_views_tests.erl | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/c0bf9d67/test/couchdb_views_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb_views_tests.erl b/test/couchdb_views_tests.erl
index f4764bf..ab0f6f2 100644
--- a/test/couchdb_views_tests.erl
+++ b/test/couchdb_views_tests.erl
@@ -286,7 +286,13 @@ couchdb_1309(DbName) ->
?assert(is_pid(NewIndexerPid)),
?assert(is_process_alive(NewIndexerPid)),
?assertNotEqual(IndexerPid, NewIndexerPid),
- ?assertEqual(2, count_users(DbName)),
+ UserCnt = case count_users(DbName) of
+ N when N > 2 ->
+ time:sleep(1000),
+ count_users(DbName);
+ N -> N
+ end,
+ ?assertEqual(2, UserCnt),
Rows1 = query_view(DbName, "foo", "bar", ok),
?assertEqual(0, length(Rows1)),
@@ -353,9 +359,17 @@ couchdb_1283() ->
?assertEqual(ok, get_writer_status(Writer1)),
?assertEqual(ok, get_writer_status(Writer2)),
- {ok, MonRef} = couch_mrview:compact(MDb1#db.name, <<"_design/foo">>,
- [monitor]),
-
+ %% Below we do exactly the same as couch_mrview:compact holds inside
+ %% because we need have access to compaction Pid, not a Ref.
+ %% {ok, MonRef} = couch_mrview:compact(MDb1#db.name, <<"_design/foo">>,
+ %% [monitor]),
+ {ok, Pid} = couch_index_server:get_index(
+ couch_mrview_index, MDb1#db.name, <<"_design/foo">>),
+ {ok, CPid} = gen_server:call(Pid, compact),
+ %% By suspending compaction process we ensure that compaction won't get
+ %% finished too early to make get_writer_status assertion fail.
+ erlang:suspend_process(CPid),
+ MonRef = erlang:monitor(process, CPid),
Writer3 = spawn_writer(Db3#db.name),
?assert(is_process_alive(Writer3)),
?assertEqual({error, all_dbs_active}, get_writer_status(Writer3)),
@@ -364,6 +378,9 @@ couchdb_1283() ->
?assert(is_process_alive(Writer2)),
?assert(is_process_alive(Writer3)),
+ %% Resume compaction
+ erlang:resume_process(CPid),
+
receive
{'DOWN', MonRef, process, _, Reason} ->
?assertEqual(normal, Reason)
@@ -547,7 +564,7 @@ compact_db(DbName) ->
{ok, Db} = couch_db:open_int(DbName, []),
{ok, _} = couch_db:start_compact(Db),
ok = couch_db:close(Db),
- wait_db_compact_done(DbName, 10).
+ wait_db_compact_done(DbName, 20).
wait_db_compact_done(_DbName, 0) ->
erlang:error({assertion_failed,