You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by fd...@apache.org on 2010/10/30 13:19:37 UTC

svn commit: r1029025 - /couchdb/trunk/share/www/script/test/design_docs.js

Author: fdmanana
Date: Sat Oct 30 11:19:37 2010
New Revision: 1029025

URL: http://svn.apache.org/viewvc?rev=1029025&view=rev
Log:
Closes COUCHDB-821.

Improved the coverage and quality of the design_docs.js test.
The actual issue (triggering a view indexation when invoking the view cleanup URI) was fixed in COUCHDB-858.

Patch by Klaus Trainer. Thanks.


Modified:
    couchdb/trunk/share/www/script/test/design_docs.js

Modified: couchdb/trunk/share/www/script/test/design_docs.js
URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/design_docs.js?rev=1029025&r1=1029024&r2=1029025&view=diff
==============================================================================
--- couchdb/trunk/share/www/script/test/design_docs.js (original)
+++ couchdb/trunk/share/www/script/test/design_docs.js Sat Oct 30 11:19:37 2010
@@ -107,33 +107,58 @@ function() {
   var prev_view_sig = db.designInfo("_design/test").view_index.signature;
 
   db.bulkSave(makeDocs(1, numDocs + 1));
+  T(db.ensureFullCommit().ok);
 
-  // test that we get design doc info back
-  var dinfo = db.designInfo("_design/test");
-  TEquals("test", dinfo.name);
-  var vinfo = dinfo.view_index;
-  TEquals(51, vinfo.disk_size);
-  TEquals(false, vinfo.compact_running);
-  // test that GET /db/_design/test/_info
+  // test that we get correct design doc info back,
+  // and also that GET /db/_design/test/_info
   // hasn't triggered an update of the views
-  TEquals(prev_view_sig, vinfo.signature, 'ddoc sig');
+  db.view("test/summate", {stale: "ok"}); // make sure view group's open
   for (var loop = 0; loop < 2; loop++) {
-    T(db.view("test/all_docs_twice", {stale: "ok"}).total_rows === 0);
-    T(db.view("test/single_doc", {stale: "ok"}).total_rows === 0);
-    T(db.view("test/summate", {stale: "ok"}).rows.length === 0);
+    var dinfo = db.designInfo("_design/test");
+    TEquals("test", dinfo.name);
+    var vinfo = dinfo.view_index;
+    TEquals(51, vinfo.disk_size);
+    TEquals(false, vinfo.compact_running);
+    TEquals(prev_view_sig, vinfo.signature, 'ddoc sig');
+    // wait some time (there were issues where an update
+    // of the views had been triggered in the background)
+    var start = new Date().getTime();
+    while (new Date().getTime() < start + 2000);
+    TEquals(0, db.view("test/all_docs_twice", {stale: "ok"}).total_rows, 'view info');
+    TEquals(0, db.view("test/single_doc", {stale: "ok"}).total_rows, 'view info');
+    TEquals(0, db.view("test/summate", {stale: "ok"}).rows.length, 'view info');
     T(db.ensureFullCommit().ok);
     restartServer();
   };
 
+  db.bulkSave(makeDocs(numDocs + 1, numDocs * 2 + 1));
+  T(db.ensureFullCommit().ok);
+
+  // open view group
+  db.view("test/summate", {stale: "ok"});
+  // wait so the views can get initialized
+  var start = new Date().getTime();
+  while (new Date().getTime() < start + 2000);
+
   // test that POST /db/_view_cleanup
   // doesn't trigger an update of the views
-  T(db.viewCleanup().ok);
+  var len1 = db.view("test/all_docs_twice", {stale: "ok"}).total_rows;
+  var len2 = db.view("test/single_doc", {stale: "ok"}).total_rows;
+  var len3 = db.view("test/summate", {stale: "ok"}).rows.length;
   for (var loop = 0; loop < 2; loop++) {
-    T(db.view("test/all_docs_twice", {stale: "ok"}).total_rows == 0);
-    T(db.view("test/single_doc", {stale: "ok"}).total_rows == 0);
-    T(db.view("test/summate", {stale: "ok"}).rows.length == 0);
+    T(db.viewCleanup().ok);
+    // wait some time (there were issues where an update
+    // of the views had been triggered in the background)
+    var start = new Date().getTime();
+    while (new Date().getTime() < start + 2000);
+    TEquals(len1, db.view("test/all_docs_twice", {stale: "ok"}).total_rows, 'view cleanup');
+    TEquals(len2, db.view("test/single_doc", {stale: "ok"}).total_rows, 'view cleanup');
+    TEquals(len3, db.view("test/summate", {stale: "ok"}).rows.length, 'view cleanup');
     T(db.ensureFullCommit().ok);
     restartServer();
+    // we'll test whether the view group stays closed
+    // and the views stay uninitialized (they should!)
+    len1 = len2 = len3 = 0;
   };
 
   // test commonjs in map functions
@@ -170,7 +195,7 @@ function() {
 
   var summate = function(N) {return (N+1)*N/2;};
   var result = db.view("test/summate");
-  T(result.rows[0].value == summate(numDocs));
+  T(result.rows[0].value == summate(numDocs*2));
 
   result = db.view("test/summate", {startkey:4,endkey:4});
   T(result.rows[0].value == 4);