diff options
author | Jan Lehnardt <jan@apache.org> | 2017-06-03 13:00:46 +0200 |
---|---|---|
committer | Jan Lehnardt <jan@apache.org> | 2017-06-03 19:27:56 +0200 |
commit | 3390bbba0fba0c69f1876b8f0d5a69ea5805cb7c (patch) | |
tree | 09868f65378ce5f00bde0bf01ddc3e7cc736f1b3 | |
parent | e9cc63fc9c524c6f1f0b736a45cb8b060f59929d (diff) | |
download | couchdb-3390bbba0fba0c69f1876b8f0d5a69ea5805cb7c.tar.gz |
feat(test): wait for db and index shutdown
-rw-r--r-- | src/couch/test/couchdb_views_tests.erl | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/couch/test/couchdb_views_tests.erl b/src/couch/test/couchdb_views_tests.erl index 7b04e8527..05a4d98ab 100644 --- a/src/couch/test/couchdb_views_tests.erl +++ b/src/couch/test/couchdb_views_tests.erl @@ -342,6 +342,11 @@ couchdb_1283() -> ok = populate_db(MDb1, 100, 100), query_view(MDb1#db.name, "foo", "foo"), ok = couch_db:close(MDb1), + % monitor db and index pids + {ok, DDPid} = couch_index_server:get_index( + couch_mrview_index, MDb1#db.name, <<"_design/foo">>), + DesignDocMonRef = erlang:monitor(process, DDPid), + DatabaseMonRef = erlang:monitor(process, MDb1#db.main_pid), {ok, Db1} = couch_db:create(?tempdb(), [?ADMIN_CTX]), ok = couch_db:close(Db1), @@ -350,6 +355,11 @@ couchdb_1283() -> {ok, Db3} = couch_db:create(?tempdb(), [?ADMIN_CTX]), ok = couch_db:close(Db3), + wait_for_process_shutdown(DatabaseMonRef, killed, + {reason, "Failure waiting for db shutdown"}), + wait_for_process_shutdown(DesignDocMonRef, normal, + {reason, "Failure waiting for view index shutdown"}), + Writer1 = spawn_writer(Db1#db.name), Writer2 = spawn_writer(Db2#db.name), @@ -380,16 +390,8 @@ couchdb_1283() -> %% Resume compaction erlang:resume_process(CPid), - - receive - {'DOWN', MonRef, process, _, Reason} -> - ?assertEqual(normal, Reason) - after ?TIMEOUT -> - erlang:error( - {assertion_failed, - [{module, ?MODULE}, {line, ?LINE}, - {reason, "Failure compacting view group"}]}) - end, + wait_for_process_shutdown(MonRef, normal, + {reason, "Failure compacting view group"}), ?assertEqual(ok, writer_try_again(Writer3)), ?assertEqual(ok, get_writer_status(Writer3)), @@ -403,6 +405,17 @@ couchdb_1283() -> ?assertEqual(ok, stop_writer(Writer3)) end). +wait_for_process_shutdown(Pid, ExpectedReason, Error) -> + receive + {'DOWN', Pid, process, _, Reason} -> + ?assertEqual(ExpectedReason, Reason) + after ?TIMEOUT -> + erlang:error( + {assertion_failed, + [{module, ?MODULE}, {line, ?LINE}, Error]}) + end. + + create_doc(DbName, DocId) when is_list(DocId) -> create_doc(DbName, ?l2b(DocId)); create_doc(DbName, DocId) when is_binary(DocId) -> |