Remove view changes interface functions, tests and end-point
diff --git a/src/couch/src/couch.app.src b/src/couch/src/couch.app.src
index 2b642c0..12ec29e 100644
--- a/src/couch/src/couch.app.src
+++ b/src/couch/src/couch.app.src
@@ -79,8 +79,7 @@
             {"_rewrite", "{couch_httpd_rewrite, handle_rewrite_req}"},
             {"_show", "{couch_mrview_show, handle_doc_show_req}"},
             {"_update", "{couch_mrview_show, handle_doc_update_req}"},
-            {"_view", "{couch_mrview_http, handle_view_req}"},
-            {"_view_changes", "{couch_mrview_http, handle_view_changes_req}"}
+            {"_view", "{couch_mrview_http, handle_view_req}"}
         ]}
     ]}
 ]}.
diff --git a/src/couch_mrview/src/couch_mrview.erl b/src/couch_mrview/src/couch_mrview.erl
index d549568..1cdc918 100644
--- a/src/couch_mrview/src/couch_mrview.erl
+++ b/src/couch_mrview/src/couch_mrview.erl
@@ -15,9 +15,6 @@
 -export([validate/2]).
 -export([query_all_docs/2, query_all_docs/4]).
 -export([query_view/3, query_view/4, query_view/6, get_view_index_pid/4]).
--export([view_changes_since/5]).
--export([view_changes_since/6, view_changes_since/7]).
--export([count_view_changes_since/4, count_view_changes_since/5]).
 -export([get_info/2]).
 -export([trigger_update/2, trigger_update/3]).
 -export([get_view_info/3]).
@@ -288,68 +285,6 @@
         erlang:demonitor(Ref, [flush])
     end.
 
-view_changes_since(View, StartSeq, Fun, Opts0, Acc) ->
-    Wrapper = fun(KV, _, Acc1) ->
-        Fun(KV, Acc1)
-    end,
-    Opts = [{start_key, {StartSeq + 1, <<>>}}] ++ Opts0,
-    {ok, _LastRed, AccOut} = couch_btree:fold(View#mrview.seq_btree, Wrapper, Acc, Opts),
-    {ok, AccOut}.
-
-view_changes_since(Db, DDoc, VName, StartSeq, Fun, Acc) ->
-    view_changes_since(Db, DDoc, VName, StartSeq, Fun, [], Acc).
-
-view_changes_since(Db, DDoc, VName, StartSeq, Fun, Options, Acc) ->
-    Args0 = make_view_changes_args(Options),
-    {ok, {_, View, _}, _, Args} = couch_mrview_util:get_view(Db, DDoc, VName,
-                                                             Args0),
-    #mrview{seq_indexed=SIndexed, keyseq_indexed=KSIndexed} = View,
-    IsKSQuery = is_key_byseq(Options),
-    if (SIndexed andalso not IsKSQuery) orelse (KSIndexed andalso IsKSQuery) ->
-        OptList = make_view_changes_opts(StartSeq, Options, Args),
-        Btree = case IsKSQuery of
-            true -> View#mrview.key_byseq_btree;
-            _ -> View#mrview.seq_btree
-        end,
-        AccOut = lists:foldl(fun(Opts, Acc0) ->
-            {ok, _R, A} = couch_mrview_util:fold_changes(
-                Btree, Fun, Acc0, Opts),
-            A
-        end, Acc, OptList),
-        {ok, AccOut};
-    true ->
-        {error, seqs_not_indexed}
-    end.
-
-count_view_changes_since(Db, DDoc, VName, SinceSeq) ->
-    count_view_changes_since(Db, DDoc, VName, SinceSeq, []).
-
-count_view_changes_since(Db, DDoc, VName, SinceSeq, Options) ->
-    Args0 = make_view_changes_args(Options),
-    {ok, {_Type, View, _Ref}, _, Args} = couch_mrview_util:get_view(
-        Db, DDoc, VName, Args0),
-    case View#mrview.seq_indexed of
-        true ->
-            OptList = make_view_changes_opts(SinceSeq, Options, Args),
-            Btree = case is_key_byseq(Options) of
-                true -> View#mrview.key_byseq_btree;
-                _ -> View#mrview.seq_btree
-            end,
-            RedFun = fun(_SeqStart, PartialReds, 0) ->
-                {ok, couch_btree:final_reduce(Btree, PartialReds)}
-            end,
-            lists:foldl(fun(Opts, Acc0) ->
-                case couch_btree:fold_reduce(Btree, RedFun, 0, Opts) of
-                    {ok, N} when is_integer(N) ->
-                        Acc0 + N;
-                    {ok, N} when is_tuple(N) ->
-                        Acc0 + element(1, N)
-                end
-            end, 0, OptList);
-        _ ->
-            {error, seqs_not_indexed}
-    end.
-
 
 get_info(Db, DDoc) ->
     {ok, Pid} = couch_index_server:get_index(couch_mrview_index, Db, DDoc),
@@ -371,19 +306,9 @@
     %% get the total number of rows
     {ok, TotalRows} =  couch_mrview_util:get_row_count(View),
 
-    %% get the total number of sequence logged in this view
-    SeqBtree = View#mrview.seq_btree,
-    {ok, TotalSeqs} = case SeqBtree of
-        nil -> {ok, 0};
-        _ ->
-            couch_btree:full_reduce(SeqBtree)
-    end,
-
-    {ok, [{seq_indexed, View#mrview.seq_indexed},
-          {update_seq, View#mrview.update_seq},
+    {ok, [{update_seq, View#mrview.update_seq},
           {purge_seq, View#mrview.purge_seq},
-          {total_rows, TotalRows},
-          {total_seqs, TotalSeqs}]}.
+          {total_rows, TotalRows}]}.
 
 
 %% @doc refresh a view index
@@ -774,26 +699,3 @@
         record_info(fields, mrargs), lists:seq(2, record_info(size, mrargs))
     ),
     couch_util:get_value(Key, Index).
-
-
-is_key_byseq(Options) ->
-    lists:any(fun({K, _}) ->
-                lists:member(K, [start_key, end_key, start_key_docid,
-                                 end_key_docid, keys])
-        end, Options).
-
-make_view_changes_args(Options) ->
-    case is_key_byseq(Options) of
-        true ->
-            to_mrargs(Options);
-        false ->
-            #mrargs{}
-    end.
-
-make_view_changes_opts(StartSeq, Options, Args) ->
-    case is_key_byseq(Options) of
-        true ->
-            couch_mrview_util:changes_key_opts(StartSeq, Args);
-        false ->
-            [[{start_key, {StartSeq+1, <<>>}}] ++ Options]
-    end.
diff --git a/src/couch_mrview/src/couch_mrview_changes.erl b/src/couch_mrview/src/couch_mrview_changes.erl
deleted file mode 100644
index ae5aa6e..0000000
--- a/src/couch_mrview/src/couch_mrview_changes.erl
+++ /dev/null
@@ -1,18 +0,0 @@
-% 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.
-%
--module(couch_mrview_changes).
-
--export([handle_view_changes/5]).
-
-handle_view_changes(Args, Req, Db, DDocId, ViewName) ->
-    couch_changes:handle_changes(Args, Req, Db, {view, DDocId, ViewName}).
diff --git a/src/couch_mrview/src/couch_mrview_http.erl b/src/couch_mrview/src/couch_mrview_http.erl
index cdf498e..74d5ca2 100644
--- a/src/couch_mrview/src/couch_mrview_http.erl
+++ b/src/couch_mrview/src/couch_mrview_http.erl
@@ -16,7 +16,6 @@
     handle_all_docs_req/2,
     handle_local_docs_req/2,
     handle_design_docs_req/2,
-    handle_view_changes_req/3,
     handle_reindex_req/3,
     handle_view_req/3,
     handle_temp_view_req/2,
@@ -81,25 +80,6 @@
     chttpd:send_method_not_allowed(Req, "POST").
 
 
-handle_view_changes_req(#httpd{path_parts=[_,<<"_design">>,DDocName,<<"_view_changes">>,ViewName]}=Req, Db, DDoc) ->
-    {DDocBody} = DDoc#doc.body,
-    case lists:keyfind(<<"options">>, 1, DDocBody) of
-        {<<"options">>, {Options}} when is_list(Options) ->
-            case lists:keyfind(<<"seq_indexed">>, 1, Options) of
-                {<<"seq_indexed">>, true} ->
-                    ok;
-                _ ->
-                    throw({bad_request, "view changes not enabled"})
-            end;
-        _ ->
-            throw({bad_request, "view changes not enabled"})
-    end,
-
-    ChangesArgs = couch_httpd_db:parse_changes_query(Req, Db),
-    ChangesFun = couch_mrview_changes:handle_view_changes(ChangesArgs, Req, Db, <<"_design/", DDocName/binary>>, ViewName),
-    couch_httpd_db:handle_changes_req(Req, Db, ChangesArgs, ChangesFun).
-
-
 handle_view_req(#httpd{method='GET',
                       path_parts=[_, _, DDocName, _, VName, <<"_info">>]}=Req,
                 Db, _DDoc) ->
diff --git a/src/couch_mrview/src/couch_mrview_test_util.erl b/src/couch_mrview/src/couch_mrview_test_util.erl
index a6242cd..2dfa64e 100644
--- a/src/couch_mrview/src/couch_mrview_test_util.erl
+++ b/src/couch_mrview/src/couch_mrview_test_util.erl
@@ -59,30 +59,6 @@
     [doc(I) || I <- lists:seq(Since, Count)].
 
 
-ddoc({changes, Opts}) ->
-    ViewOpts = case Opts of
-        seq_indexed ->
-            [{<<"seq_indexed">>, true}];
-        keyseq_indexed ->
-            [{<<"keyseq_indexed">>, true}];
-        seq_indexed_keyseq_indexed ->
-            [
-                {<<"seq_indexed">>, true},
-                {<<"keyseq_indexed">>, true}
-            ]
-    end,
-    couch_doc:from_json_obj({[
-        {<<"_id">>, <<"_design/bar">>},
-        {<<"options">>, {ViewOpts}},
-        {<<"views">>, {[
-            {<<"baz">>, {[
-                {
-                    <<"map">>,
-                    <<"function(doc) {emit(doc.val.toString(), doc.val);}">>
-                }
-            ]}}
-        ]}}
-    ]});
 ddoc(map) ->
     couch_doc:from_json_obj({[
         {<<"_id">>, <<"_design/bar">>},
diff --git a/src/couch_mrview/test/eunit/couch_mrview_changes_since_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_changes_since_tests.erl
deleted file mode 100644
index 6710641..0000000
--- a/src/couch_mrview/test/eunit/couch_mrview_changes_since_tests.erl
+++ /dev/null
@@ -1,209 +0,0 @@
-% 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.
-
--module(couch_mrview_changes_since_tests).
-
--include_lib("couch/include/couch_eunit.hrl").
--include_lib("couch/include/couch_db.hrl").
-
--define(TIMEOUT, 1000).
-
-teardown(Db) ->
-    couch_db:close(Db),
-    couch_server:delete(couch_db:name(Db), [?ADMIN_CTX]),
-    ok.
-
-changes_since_basic_test_() ->
-    {
-        "changes_since tests",
-        {
-            setup,
-            fun test_util:start_couch/0, fun test_util:stop_couch/1,
-            {
-                foreach,
-                fun() ->
-                    Type = {changes, seq_indexed},
-                    {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), Type),
-                    Db
-                end,
-                fun teardown/1,
-                [
-                    fun test_basic/1,
-                    fun test_basic_since/1,
-                    fun test_basic_count/1,
-                    fun test_basic_count_since/1,
-                    fun test_compact/1
-                ]
-            }
-        }
-    }.
-
-changes_since_range_test_() ->
-    {
-        "changes_since_range tests",
-        {
-            setup,
-            fun test_util:start_couch/0, fun test_util:stop_couch/1,
-            {
-                foreach,
-                fun() ->
-                    Type = {changes, keyseq_indexed},
-                    {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), Type),
-                    Db
-                end,
-                fun teardown/1,
-                [
-                    fun test_range/1,
-                    fun test_range_since/1
-                ]
-            }
-        }
-    }.
-
-changes_since_range_count_test_() ->
-    {
-        "changes_since_range_count tests",
-        {
-            setup,
-            fun test_util:start_couch/0, fun test_util:stop_couch/1,
-            {
-                foreach,
-                fun() ->
-                    Type = {changes, seq_indexed_keyseq_indexed},
-                    {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), Type),
-                    Db
-                end,
-                fun teardown/1,
-                [
-                    fun test_range_count/1,
-                    fun test_range_count_since/1,
-                    fun test_remove_key/1
-                ]
-            }
-        }
-    }.
-
-test_basic(Db) ->
-    Result = run_query(Db, 0, []),
-    Expect = {ok, [
-                {{2, <<"1">>, <<"1">>}, 1},
-                {{3, <<"10">>, <<"10">>}, 10},
-                {{4, <<"2">>, <<"2">>}, 2},
-                {{5, <<"3">>, <<"3">>}, 3},
-                {{6, <<"4">>, <<"4">>}, 4},
-                {{7, <<"5">>, <<"5">>}, 5},
-                {{8, <<"6">>, <<"6">>}, 6},
-                {{9, <<"7">>, <<"7">>}, 7},
-                {{10, <<"8">>, <<"8">>}, 8},
-                {{11, <<"9">>, <<"9">>}, 9}
-    ]},
-    ?_assertEqual(Result, Expect).
-
-
-test_range(Db) ->
-    Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
-    Result = run_query(Db, 0, Range),
-    Expect = {ok, [
-                {{5, <<"3">>, <<"3">>}, 3},
-                {{6, <<"4">>, <<"4">>}, 4},
-                {{7, <<"5">>, <<"5">>}, 5}
-    ]},
-    ?_assertEqual(Result, Expect).
-
-test_basic_since(Db) ->
-    Result = run_query(Db, 5, []),
-    Expect = {ok, [
-                {{6, <<"4">>, <<"4">>}, 4},
-                {{7, <<"5">>, <<"5">>}, 5},
-                {{8, <<"6">>, <<"6">>}, 6},
-                {{9, <<"7">>, <<"7">>}, 7},
-                {{10, <<"8">>, <<"8">>}, 8},
-                {{11, <<"9">>, <<"9">>}, 9}
-    ]},
-    ?_assertEqual(Result, Expect).
-
-test_range_since(Db) ->
-    Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
-    Result = run_query(Db, 5, Range),
-    Expect = {ok, [
-                {{6, <<"4">>, <<"4">>}, 4},
-                {{7, <<"5">>, <<"5">>}, 5}
-    ]},
-    ?_assertEqual(Result, Expect).
-
-test_basic_count(Db) ->
-    Result = run_count_query(Db, 0, []),
-    ?_assertEqual(Result, 10).
-
-test_range_count(Db) ->
-    Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
-    Result = run_count_query(Db, 0, Range),
-    ?_assertEqual(Result, 3).
-
-test_basic_count_since(Db) ->
-    Result = run_count_query(Db, 5, []),
-    ?_assertEqual(Result, 6).
-
-test_range_count_since(Db) ->
-    Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
-    Result = run_count_query(Db, 5, Range),
-    ?_assertEqual(Result, 2).
-
-test_compact(Db) ->
-    Result = couch_mrview:compact(Db, <<"_design/bar">>),
-    Count = run_count_query(Db, 0, []),
-    [?_assertEqual(Result, ok), ?_assertEqual(Count, 10)].
-
-test_remove_key(Db) ->
-    %% add new doc
-    Doc = couch_mrview_test_util:doc(11),
-    {ok, Rev} = couch_db:update_doc(Db, Doc, []),
-    RevStr = couch_doc:rev_to_str(Rev),
-    {ok, Db1} = couch_db:reopen(Db),
-    Result = run_count_query(Db1, 0, []),
-    %% check new view key
-    Range = [{start_key, <<"11">>}, {end_key, <<"11">>}],
-    Result1 = run_query(Db1, 0, Range),
-    Expect = {ok, [
-                {{12, <<"11">>, <<"11">>}, 11}
-    ]},
-
-    %% delete doc
-    Doc2 = couch_doc:from_json_obj({[
-                {<<"_id">>, <<"11">>},
-                {<<"_rev">>, RevStr},
-                {<<"_deleted">>, true}
-    ]}),
-    {ok, _} = couch_db:update_doc(Db1, Doc2, []),
-    {ok, Db2} = couch_db:reopen(Db1),
-    Result2 = run_count_query(Db2, 0, []),
-    %% check new view key
-    Result3 = run_query(Db2, 0, Range),
-    Expect2 = {ok, [
-                {{13, <<"11">>, <<"11">>}, removed}
-    ]},
-    [
-        ?_assertEqual(Result, 11),
-        ?_assertEqual(Result1, Expect),
-        ?_assertEqual(Result2, 11),
-        ?_assertEqual(Result3, Expect2)
-    ].
-
-run_query(Db, Since, Opts) ->
-    Fun = fun(KV, Acc) -> {ok, [KV | Acc]} end,
-    {ok, R} = couch_mrview:view_changes_since(Db, <<"_design/bar">>, <<"baz">>,
-                                              Since, Fun, Opts, []),
-    {ok, lists:reverse(R)}.
-
-run_count_query(Db, Since, Opts) ->
-    couch_mrview:count_view_changes_since(Db, <<"_design/bar">>, <<"baz">>,
-                                          Since, Opts).
diff --git a/src/couch_mrview/test/eunit/couch_mrview_index_changes_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_index_changes_tests.erl
deleted file mode 100644
index d8dd287..0000000
--- a/src/couch_mrview/test/eunit/couch_mrview_index_changes_tests.erl
+++ /dev/null
@@ -1,223 +0,0 @@
-% 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.
-
--module(couch_mrview_index_changes_tests).
-
--include_lib("couch/include/couch_eunit.hrl").
--include_lib("couch/include/couch_db.hrl").
-
-
-setup() ->
-    {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), map),
-    Db.
-
-teardown(Db) ->
-    couch_db:close(Db),
-    couch_server:delete(couch_db:name(Db), [?ADMIN_CTX]),
-    ok.
-
-changes_index_test() ->
-    {
-        "changes index tests",
-        {
-            setup,
-            fun test_util:start_couch/0, fun test_util:stop_couch/1,
-            {
-                foreach,
-                fun setup/0, fun teardown/1,
-                [
-                    fun test_normal_changes/1,
-                    fun test_stream_once/1,
-                    fun test_stream_once_since/1,
-                    fun test_stream_once_timeout/1,
-                    fun test_stream_once_heartbeat/1,
-                    fun test_stream/1,
-                    fun test_indexer/1
-                ]
-            }
-        }
-    }.
-
-
-test_normal_changes(Db) ->
-    Result = run_query(Db, []),
-    Expect = {ok, 11, [
-                {{2, 1, <<"1">>}, 1},
-                {{3, 10, <<"10">>}, 10},
-                {{4, 2, <<"2">>}, 2},
-                {{5, 3, <<"3">>}, 3},
-                {{6, 4, <<"4">>}, 4},
-                {{7, 5, <<"5">>}, 5},
-                {{8, 6, <<"6">>}, 6},
-                {{9, 7, <<"7">>}, 7},
-                {{10, 8, <<"8">>}, 8},
-                {{11, 9, <<"9">>}, 9}
-    ]},
-    ?_assertEqual(Result, Expect).
-
-test_stream_once(Db) ->
-    Result = run_query(Db, [{stream, once}]),
-    Expect = {ok, 11, [
-                {{2, 1, <<"1">>}, 1},
-                {{3, 10, <<"10">>}, 10},
-                {{4, 2, <<"2">>}, 2},
-                {{5, 3, <<"3">>}, 3},
-                {{6, 4, <<"4">>}, 4},
-                {{7, 5, <<"5">>}, 5},
-                {{8, 6, <<"6">>}, 6},
-                {{9, 7, <<"7">>}, 7},
-                {{10, 8, <<"8">>}, 8},
-                {{11, 9, <<"9">>}, 9}
-    ]},
-    ?_assertEqual(Result, Expect).
-
-
-test_stream_once_since(Db) ->
-    Self = self(),
-    spawn(fun() ->
-                Result = run_query(Db, [{since, 11},
-                                        {stream, once}]),
-                Self ! {result, Result}
-        end),
-
-    spawn(fun() ->
-                timer:sleep(1000),
-                {ok, Db1} = save_doc(Db, 11),
-                couch_mrview:refresh(Db1, <<"_design/bar">>)
-        end),
-
-    Expect = {ok,12,[{{12,11,<<"11">>},11}]},
-
-    receive
-        {result, Result} ->
-            ?_assertEqual(Result, Expect)
-    after 5000 ->
-            io:format("never got the change", [])
-    end.
-
-
-test_stream_once_timeout(Db) ->
-    Self = self(),
-    spawn(fun() ->
-                Result = run_query(Db, [{since, 12},
-                                        {stream, once},
-                                        {timeout, 3000}]),
-                Self ! {result, Result}
-        end),
-
-
-
-    Expect = {ok, 12, []},
-
-    receive
-        {result, Result} ->
-            ?_assertEqual(Result, Expect)
-    after 5000 ->
-            io:format("never got the change", [])
-    end.
-
-test_stream_once_heartbeat(Db) ->
-    Self = self(),
-    spawn(fun() ->
-                Result = run_query(Db, [{since, 12},
-                                        {stream, once},
-                                        {heartbeat, 1000}]),
-                Self ! {result, Result}
-        end),
-
-    spawn(fun() ->
-                timer:sleep(3000),
-                {ok, Db1} = save_doc(Db, 12),
-                couch_mrview:refresh(Db1, <<"_design/bar">>)
-        end),
-
-    Expect = {ok,13,[heartbeat,
-                     heartbeat,
-                     heartbeat,
-                     {{13,12,<<"12">>},12}]},
-
-
-
-    receive
-        {result, Result} ->
-            ?_assertEqual(Result, Expect)
-    after 5000 ->
-            io:format("never got the change", [])
-    end.
-
-
-test_stream(Db) ->
-    Self = self(),
-    spawn(fun() ->
-                Result = run_query(Db, [{since, 13},
-                                        stream,
-                                        {timeout, 3000}]),
-                Self ! {result, Result}
-        end),
-
-    spawn(fun() ->
-                timer:sleep(1000),
-                {ok, Db1} = save_doc(Db, 13),
-                couch_mrview:refresh(Db1, <<"_design/bar">>),
-                {ok, Db2} = save_doc(Db1, 14),
-                couch_mrview:refresh(Db2, <<"_design/bar">>)
-        end),
-
-    Expect = {ok, 15,[{{14,13,<<"13">>},13},
-                     {{15,14,<<"14">>},14}]},
-
-    receive
-        {result, Result} ->
-            ?_assertEqual(Result, Expect)
-    after 5000 ->
-            io:format("never got the change", [])
-    end.
-
-
-test_indexer(Db) ->
-    Result = run_query(Db, [{since, 14}, refresh]),
-    Expect = {ok, 15, [{{15,14,<<"14">>},14}]},
-
-    {ok, Db1} = save_doc(Db, 15),
-    timer:sleep(1500),
-    Result1 = run_query(Db1, [{since, 14}], false),
-    Expect1 = {ok, 16, [{{15,14,<<"14">>},14},
-                       {{16,15,<<"15">>},15}]},
-    ?_assert(Result == Expect andalso Result1 == Expect1).
-
-
-save_doc(Db, Id) ->
-    Doc = couch_mrview_test_util:doc(Id),
-    {ok, _Rev} = couch_db:update_doc(Db, Doc, []),
-    couch_db:reopen(Db).
-
-run_query(Db, Opts) ->
-    run_query(Db, Opts, true).
-
-run_query(Db, Opts, Refresh) ->
-    Fun = fun
-        (stop, {LastSeq, Acc}) ->
-            {ok, LastSeq, Acc};
-        (heartbeat, Acc) ->
-            {ok, [heartbeat | Acc]};
-        (Event, Acc) ->
-            {ok, [Event | Acc]}
-    end,
-    case Refresh of
-        true ->
-            couch_mrview:refresh(Db, <<"_design/bar">>);
-        false ->
-            ok
-    end,
-    {ok, LastSeq, R} = couch_mrview_changes:handle_changes(Db, <<"_design/bar">>,
-                                                  <<"baz">>, Fun, [], Opts),
-    {ok, LastSeq, lists:reverse(R)}.