Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id BCF7A200CD3 for ; Thu, 13 Jul 2017 19:59:37 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id BA4A716C86E; Thu, 13 Jul 2017 17:59:37 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 1324816C869 for ; Thu, 13 Jul 2017 19:59:36 +0200 (CEST) Received: (qmail 19323 invoked by uid 500); 13 Jul 2017 17:59:36 -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 19310 invoked by uid 99); 13 Jul 2017 17:59:36 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Jul 2017 17:59:36 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 872FD87561; Thu, 13 Jul 2017 17:59:32 +0000 (UTC) Date: Thu, 13 Jul 2017 17:59:37 +0000 To: "commits@couchdb.apache.org" Subject: [couchdb] 06/24: FIXUP: Add tests for no VDU behavior MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit From: davisp@apache.org Reply-To: "commits@couchdb.apache.org" In-Reply-To: <149996877195.26296.3009052880166728632@gitbox.apache.org> References: <149996877195.26296.3009052880166728632@gitbox.apache.org> X-Git-Host: gitbox.apache.org X-Git-Repo: couchdb X-Git-Refname: refs/heads/optimize-ddoc-cache X-Git-Reftype: branch X-Git-Rev: 5bcba68e494b662d63f565bf503c6331a5903dc4 X-Git-NotificationType: diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated Message-Id: <20170713175933.872FD87561@gitbox.apache.org> archived-at: Thu, 13 Jul 2017 17:59:37 -0000 This is an automated email from the ASF dual-hosted git repository. davisp pushed a commit to branch optimize-ddoc-cache in repository https://gitbox.apache.org/repos/asf/couchdb.git commit 5bcba68e494b662d63f565bf503c6331a5903dc4 Author: Paul J. Davis AuthorDate: Thu Jul 6 10:18:36 2017 -0500 FIXUP: Add tests for no VDU behavior --- src/ddoc_cache/src/ddoc_cache_entry.erl | 11 ++++----- src/ddoc_cache/test/ddoc_cache_basic_test.erl | 32 +++++++++++++++++++++++++++ src/ddoc_cache/test/ddoc_cache_tutil.erl | 9 +++++++- 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/src/ddoc_cache/src/ddoc_cache_entry.erl b/src/ddoc_cache/src/ddoc_cache_entry.erl index 6213746..2a90077 100644 --- a/src/ddoc_cache/src/ddoc_cache_entry.erl +++ b/src/ddoc_cache/src/ddoc_cache_entry.erl @@ -182,17 +182,18 @@ handle_cast(Msg, St) -> handle_info({'DOWN', _, _, Pid, Resp}, #st{key = Key, opener = Pid} = St) -> case Resp of {open_ok, Key, {ok, Val}} -> - if not is_list(St#st.waiters) -> ok; true -> - respond(St#st.waiters, {open_ok, {ok, Val}}) - end, update_cache(St, Val), Msg = {'$gen_cast', refresh}, Timer = erlang:send_after(?REFRESH_TIMEOUT, self(), Msg), - NewSt = St#st{ + NewSt1 = St#st{ val = {open_ok, {ok, Val}}, opener = Timer }, - {noreply, update_lru(NewSt)}; + NewSt2 = update_lru(NewSt1), + if not is_list(St#st.waiters) -> ok; true -> + respond(St#st.waiters, {open_ok, {ok, Val}}) + end, + {noreply, NewSt2}; {Status, Key, Other} -> NewSt = St#st{ val = {Status, Other}, diff --git a/src/ddoc_cache/test/ddoc_cache_basic_test.erl b/src/ddoc_cache/test/ddoc_cache_basic_test.erl index 227ac54..f908c78 100644 --- a/src/ddoc_cache/test/ddoc_cache_basic_test.erl +++ b/src/ddoc_cache/test/ddoc_cache_basic_test.erl @@ -44,6 +44,18 @@ check_basic_test_() -> }. +check_no_vdu_test_() -> + { + setup, + fun() -> ddoc_cache_tutil:start_couch([{write_ddocs, false}]) end, + fun ddoc_cache_tutil:stop_couch/1, + {with, [ + fun cache_no_vdu_no_ddoc/1, + fun cache_no_vdu_empty_ddoc/1 + ]} + }. + + cache_ddoc({DbName, _}) -> ddoc_cache_tutil:clear(), ?assertEqual(0, ets:info(?CACHE, size)), @@ -120,3 +132,23 @@ deprecated_api_works({DbName, _}) -> {ok, _} = ddoc_cache:open(DbName, ?MODULE), {ok, _} = ddoc_cache:open(DbName, validation_funs). + +cache_no_vdu_no_ddoc({DbName, _}) -> + ddoc_cache_tutil:clear(), + Resp = ddoc_cache:open_validation_funs(DbName), + ?assertEqual({ok, []}, Resp), + ?assertEqual(1, ets:info(?CACHE, size)), + ?assertEqual(1, ets:info(?LRU, size)). + + +cache_no_vdu_empty_ddoc({DbName, _}) -> + ddoc_cache_tutil:clear(), + DDoc = #doc{ + id = <<"_design/no_vdu">>, + body = {[]} + }, + {ok, _} = fabric:update_docs(DbName, [DDoc], [?ADMIN_CTX]), + Resp = ddoc_cache:open_validation_funs(DbName), + ?assertEqual({ok, []}, Resp), + ?assertEqual(1, ets:info(?CACHE, size)), + ?assertEqual(1, ets:info(?LRU, size)). diff --git a/src/ddoc_cache/test/ddoc_cache_tutil.erl b/src/ddoc_cache/test/ddoc_cache_tutil.erl index 6782b9d..acf3db1 100644 --- a/src/ddoc_cache/test/ddoc_cache_tutil.erl +++ b/src/ddoc_cache/test/ddoc_cache_tutil.erl @@ -21,11 +21,18 @@ start_couch() -> + start_couch([{write_ddocs, true}]). + + +start_couch(Options) -> + WriteDDocs = couch_util:get_value(write_ddocs, Options, true), purge_modules(), Ctx = test_util:start_couch(?CONFIG_CHAIN, [chttpd, ddoc_cache]), TmpDb = ?tempdb(), ok = fabric:create_db(TmpDb, [{q, "1"}, {n, "1"}]), - {ok, _} = fabric:update_docs(TmpDb, ddocs(), [?ADMIN_CTX]), + if not WriteDDocs -> ok; true -> + {ok, _} = fabric:update_docs(TmpDb, ddocs(), [?ADMIN_CTX]) + end, {TmpDb, Ctx}. -- To stop receiving notification emails like this one, please contact "commits@couchdb.apache.org" .