summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien F. Katz <damien@apache.org>2009-06-01 00:27:28 +0000
committerDamien F. Katz <damien@apache.org>2009-06-01 00:27:28 +0000
commitce663765f3f774d07c58579dff8b5398fdfbb6ce (patch)
tree5be1ca81998af7fb87402b5857a016cee84316f0
parent958c8a6c8c0aa03d854a1aef4ad06e0ae6583375 (diff)
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
-rw-r--r--share/www/script/test/changes.js22
-rw-r--r--src/couchdb/couch_httpd_db.erl3
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) ->