From ce663765f3f774d07c58579dff8b5398fdfbb6ce Mon Sep 17 00:00:00 2001 From: "Damien F. Katz" Date: Mon, 1 Jun 2009 00:27:28 +0000 Subject: Added tests for heartbeat and timeout options in the _changes api. git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@780539 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/script/test/changes.js | 22 +++++++++++++++++++++- src/couchdb/couch_httpd_db.erl | 3 ++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/share/www/script/test/changes.js b/share/www/script/test/changes.js index fe8a1cd5..98f31d6f 100644 --- a/share/www/script/test/changes.js +++ b/share/www/script/test/changes.js @@ -30,6 +30,12 @@ couchTests.changes = function(debug) { T(resp.results.length == 1 && resp.last_seq==1) T(resp.results[0].changes[0].rev == docFoo._rev) + + + req = CouchDB.request("GET", "/test_suite_db/_changes?continuous=true&timeout=10"); + var resp = JSON.parse(req.responseText); + T(resp.results.length == 1 && resp.last_seq==1) + T(resp.results[0].changes[0].rev == docFoo._rev) var xhr; @@ -43,7 +49,7 @@ couchTests.changes = function(debug) { // with real async support. var sleep = function(msecs) { - // by making a slow sync request, weallows the waiting XHR request data + // by making a slow sync request, we allow the waiting XHR request data // to be received. var req = CouchDB.request("GET", "/_sleep?time=" + msecs); T(JSON.parse(req.responseText).ok == true); @@ -55,6 +61,7 @@ couchTests.changes = function(debug) { } return JSON.parse(line); } + xhr.open("GET", "/test_suite_db/_changes?continuous=true", true); xhr.send(""); @@ -89,6 +96,19 @@ couchTests.changes = function(debug) { T(change.seq == 3); T(change.id == "baz"); T(change.changes[0].rev == docBaz._rev); + + + xhr = CouchDB.newXhr(); + //verify the hearbeat newlines are sent + xhr.open("GET", "/test_suite_db/_changes?continuous=true&heartbeat=10", true); + xhr.send(""); + + sleep(100); + + var str = xhr.responseText; + + T(str.charAt(str.length - 1) == "\n") + T(str.charAt(str.length - 2) == "\n") } }; diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl index 404757af..65f40472 100644 --- a/src/couchdb/couch_httpd_db.erl +++ b/src/couchdb/couch_httpd_db.erl @@ -119,7 +119,8 @@ keep_sending_changes(#httpd{user_ctx=UserCtx,path_parts=[DbName|_]}=Req, Resp, D {ok, Db2} = couch_db:open(DbName, [{user_ctx, UserCtx}]), keep_sending_changes(Req, Resp, Db2, EndSeq, Prepend2, Timeout, TimeoutFun); stop -> - send_chunk(Resp, io_lib:format("\n],\n\"last_seq\":~w}\n", [EndSeq])) + send_chunk(Resp, io_lib:format("\n],\n\"last_seq\":~w}\n", [EndSeq])), + send_chunk(Resp, "") end. send_changes(Req, Resp, Db, StartSeq, Prepend0) -> -- cgit v1.2.3