You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2018/07/09 17:46:42 UTC

[couchdb] branch master updated: Added tests for checking http status code depending on cluster quorum

This is an automated email from the ASF dual-hosted git repository.

jan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 7dfed0c  Added tests for checking http status code depending on cluster quorum
7dfed0c is described below

commit 7dfed0cbbd2695835698efca438e6b8d9fa17f88
Author: jjrodrig <jj...@gmail.com>
AuthorDate: Fri Feb 9 10:22:10 2018 +0100

    Added tests for checking http status code depending on cluster quorum
---
 .../with-quorum/{db-creation.js => attachments.js} | 29 +++++++++------
 .../{db-creation.js => attachments_delete.js}      | 25 +++++++------
 .../attachments_delete_overridden_quorum.js        | 36 +++++++++++++++++++
 .../with-quorum/attachments_overridden_quorum.js   | 40 +++++++++++++++++++++
 .../with-quorum/{db-creation.js => db_creation.js} |  0
 ...reation.js => db_creation_overridden_quorum.js} | 11 +++---
 .../with-quorum/{db-creation.js => db_deletion.js} | 11 +++---
 ...reation.js => db_deletion_overridden_quorum.js} | 14 +++-----
 .../with-quorum/{db-creation.js => doc_bulk.js}    | 20 +++++------
 ...b-creation.js => doc_bulk_overridden_quorum.js} | 20 +++++------
 .../with-quorum/{db-creation.js => doc_copy.js}    | 20 +++++------
 ...b-creation.js => doc_copy_overridden_quorum.js} | 23 ++++++------
 .../with-quorum/{db-creation.js => doc_crud.js}    | 24 +++++++------
 ...b-creation.js => doc_crud_overridden_quorum.js} | 24 +++++++------
 .../tests-cluster/without-quorum/attachments.js    | 39 ++++++++++++++++++++
 .../without-quorum/attachments_delete.js           | 37 +++++++++++++++++++
 .../attachments_delete_overridden_quorum.js        | 36 +++++++++++++++++++
 .../attachments_overridden_quorum.js               | 42 ++++++++++++++++++++++
 .../{db-creation.js => db_creation.js}             |  0
 ...reation.js => db_creation_overridden_quorum.js} | 12 ++++---
 .../{db-creation.js => db_deletion.js}             | 14 ++++----
 ...reation.js => db_deletion_overridden_quorum.js} | 15 ++++----
 .../without-quorum/{db-creation.js => doc_bulk.js} | 20 +++++------
 ...b-creation.js => doc_bulk_overridden_quorum.js} | 20 +++++------
 .../without-quorum/{db-creation.js => doc_copy.js} | 20 ++++++-----
 ...b-creation.js => doc_copy_overridden_quorum.js} | 23 +++++++-----
 .../without-quorum/{db-creation.js => doc_crud.js} | 25 ++++++++-----
 ...b-creation.js => doc_crud_overridden_quorum.js} | 24 ++++++++-----
 28 files changed, 446 insertions(+), 178 deletions(-)

diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/attachments.js
similarity index 50%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/attachments.js
index f8efd6e..f578f87 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/attachments.js
@@ -10,18 +10,27 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.attachments= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  T(xhr.status == 201,"Should return 201");
+  var rev = JSON.parse(xhr.responseText).rev;
 
-  // cleanup
+  xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + rev, {
+    body:"This is no base64 encoded text-2",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  T(xhr.status == 201,"Should return 201");
+  
   db.deleteDb();
-};
+}
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/attachments_delete.js
similarity index 52%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/attachments_delete.js
index f8efd6e..ed7d2db 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/attachments_delete.js
@@ -10,18 +10,23 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.attachments_delete= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  T(xhr.status == 201,"Should return 201 Accepted");
+  var rev = JSON.parse(xhr.responseText).rev;
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  xhr = CouchDB.request("DELETE", "/" + db_name + "/dummy/foo.txt?rev=" + rev);
+  T(xhr.status == 200,"Should return 200 Ok but returns "+xhr.status);
 
-  // cleanup
   db.deleteDb();
-};
+}
diff --git a/test/javascript/tests-cluster/with-quorum/attachments_delete_overridden_quorum.js b/test/javascript/tests-cluster/with-quorum/attachments_delete_overridden_quorum.js
new file mode 100644
index 0000000..1994a0a
--- /dev/null
+++ b/test/javascript/tests-cluster/with-quorum/attachments_delete_overridden_quorum.js
@@ -0,0 +1,36 @@
+// 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.
+
+couchTests.attachments_delete_overridden_quorum= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":3});
+  db.createDb();
+  if (debug) debugger;
+
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  var rev = JSON.parse(xhr.responseText).rev;
+
+  xhr = CouchDB.request("DELETE", "/" + db_name + "/dummy/foo.txt?rev=" + rev);
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering overridden quorum. 202->"+xhr.status);
+  // TODO: Define correct behaviour
+  //T(xhr.status == 202,"Should return 202 but returns "+xhr.status);
+
+ //db.deleteDb();
+ // cleanup
+ // TODO DB deletions fails if the quorum is not met.
+ xhr = CouchDB.request("DELETE", "/" + db_name + "/");
+}
diff --git a/test/javascript/tests-cluster/with-quorum/attachments_overridden_quorum.js b/test/javascript/tests-cluster/with-quorum/attachments_overridden_quorum.js
new file mode 100644
index 0000000..22c8a4c
--- /dev/null
+++ b/test/javascript/tests-cluster/with-quorum/attachments_overridden_quorum.js
@@ -0,0 +1,40 @@
+// 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.
+
+//Test attachments operations with an overridden quorum parameter
+couchTests.attachments_overriden_quorum= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":3});
+  db.createDb();
+  if (debug) debugger;
+
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
+
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  //TODO: Define correct behaviour
+  //T(xhr.status == 202,"Should return 202");
+  var rev = JSON.parse(xhr.responseText).rev;
+
+  xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + rev, {
+    body:"This is no base64 encoded text-2",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering overridden quorum. 202->"+xhr.status);
+  //TODO: Define correct behaviour
+  //T(xhr.status == 202,"Should return 202");
+
+  db.deleteDb();
+}
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/db_creation.js
similarity index 100%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/db_creation.js
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/db_creation_overridden_quorum.js
similarity index 62%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/db_creation_overridden_quorum.js
index f8efd6e..14d319c 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/db_creation_overridden_quorum.js
@@ -10,17 +10,18 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
+// Do DB creation under cluster with quorum conditions but overriding write quorum.
+couchTests.db_creation_overridden_quorum = function(debug) {
 
   if (debug) debugger;
 
   var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":3});
 
-  // DB Creation should return 201 - Created
+  // DB Creation should return 202 - Accepted
   xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering overridden quorum. 202->"+xhr.status)
+  //T(xhr.status == 202,"Should return 202");
 
   // cleanup
   db.deleteDb();
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/db_deletion.js
similarity index 74%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/db_deletion.js
index f8efd6e..bef4cae 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/db_deletion.js
@@ -10,18 +10,15 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
+// Do DB deletion in a cluster with quorum conditions.
+couchTests.db_deletion = function(debug) {
 
   if (debug) debugger;
 
   var db_name = get_random_db_name()
   var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
-
-  // cleanup
   db.deleteDb();
+  T(db.last_req.status="200","Should return 200");
 };
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/db_deletion_overridden_quorum.js
similarity index 67%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/db_deletion_overridden_quorum.js
index f8efd6e..01417eb 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/db_deletion_overridden_quorum.js
@@ -10,18 +10,14 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
+// Do DB deletion in a cluster with quorum conditions.
+couchTests.db_deletion_overridden_quorum = function(debug) {
 
   if (debug) debugger;
 
   var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
-
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
-
-  // cleanup
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":3});
+  db.createDb();
   db.deleteDb();
+  T(db.last_req.status="202","Should return 202");
 };
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/doc_bulk.js
similarity index 70%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/doc_bulk.js
index f8efd6e..4bdd3c8 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/doc_bulk.js
@@ -10,18 +10,16 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
-  if (debug) debugger;
-
-  var db_name = get_random_db_name()
+couchTests.doc_bulk = function(debug) {
+  var db_name = get_random_db_name();
   var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
+  if (debug) debugger;
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  var docs = makeDocs(5);
+  // Create the docs
+  var results = db.bulkSave(docs);
+  T(db.last_req.status="201","Should return 201")
 
-  // cleanup
   db.deleteDb();
-};
+}
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/doc_bulk_overridden_quorum.js
similarity index 63%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/doc_bulk_overridden_quorum.js
index f8efd6e..0cf9a7e 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/doc_bulk_overridden_quorum.js
@@ -10,18 +10,16 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_bulk_overridden_quorum = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":3});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
-
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  var docs = makeDocs(5);
+  // Create the docs
+  var results = db.bulkSave(docs);
+  T(db.last_req.status="202","Should return 202")
 
-  // cleanup
   db.deleteDb();
-};
+}
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/doc_copy.js
similarity index 70%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/doc_copy.js
index f8efd6e..386ca56 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/doc_copy.js
@@ -10,18 +10,18 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_copy = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"dummy"});
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  var xhr = CouchDB.request("COPY", "/" + db_name + "/dummy", {
+    headers: {"Destination":"dummy2"}
+  });
+  T(xhr.status=="201","Should return 201 ");
 
-  // cleanup
   db.deleteDb();
-};
+}
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/doc_copy_overridden_quorum.js
similarity index 53%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/doc_copy_overridden_quorum.js
index f8efd6e..23fbc97 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/doc_copy_overridden_quorum.js
@@ -10,18 +10,21 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_copy_overriden_quorum = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":3});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"dummy"});
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  var xhr = CouchDB.request("COPY", "/" + db_name + "/dummy", {
+    headers: {"Destination":"dummy2"}
+  });
+  //TODO: Define correct behaviour
+  //T(xhr.status=="202","Should return 202");
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering overridden quorum. 202->"+xhr.status);
 
-  // cleanup
   db.deleteDb();
-};
+
+}
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/doc_crud.js
similarity index 68%
copy from test/javascript/tests-cluster/with-quorum/db-creation.js
copy to test/javascript/tests-cluster/with-quorum/doc_crud.js
index f8efd6e..f016cef 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/doc_crud.js
@@ -10,18 +10,22 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_crud = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"0",a:1});
+  T(db.last_req.status=="201");
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  var doc = db.open("0");
+  db.save(doc);
+  T(db.last_req.status=="201");
 
-  // cleanup
+  doc = db.open("0");
+  db.deleteDoc(doc);
+  T(db.last_req.status="200");
   db.deleteDb();
-};
+
+}
diff --git a/test/javascript/tests-cluster/with-quorum/db-creation.js b/test/javascript/tests-cluster/with-quorum/doc_crud_overridden_quorum.js
similarity index 55%
rename from test/javascript/tests-cluster/with-quorum/db-creation.js
rename to test/javascript/tests-cluster/with-quorum/doc_crud_overridden_quorum.js
index f8efd6e..41502ca 100644
--- a/test/javascript/tests-cluster/with-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/with-quorum/doc_crud_overridden_quorum.js
@@ -10,18 +10,22 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster with quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_crud_overridden_quorum = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":3});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"0",a:1});
+  T(db.last_req.status=="202","Should return 202 status");
+
+  var doc = db.open("0");
+  db.save(doc);
+  T(db.last_req.status=="202","Should return 202 status");
 
-  // DB Creation should return 201 - Created
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 201);
+  doc = db.open("0");
+  db.deleteDoc(doc);
+  T(db.last_req.status="202","Should return 202 status");
 
-  // cleanup
   db.deleteDb();
-};
+}
diff --git a/test/javascript/tests-cluster/without-quorum/attachments.js b/test/javascript/tests-cluster/without-quorum/attachments.js
new file mode 100644
index 0000000..5756343
--- /dev/null
+++ b/test/javascript/tests-cluster/without-quorum/attachments.js
@@ -0,0 +1,39 @@
+// 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.
+
+couchTests.attachments= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
+  if (debug) debugger;
+
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  T(xhr.status == 202,"Should return 202 Accepted");
+  var rev = JSON.parse(xhr.responseText).rev;
+
+  xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + rev, {
+    body:"This is no base64 encoded text-2",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  T(xhr.status == 202,"Should return 202 Accepted");
+  rev = JSON.parse(xhr.responseText).rev;
+
+ //db.deleteDb();
+ // cleanup
+ // TODO DB deletions fails if the quorum is not met.
+ xhr = CouchDB.request("DELETE", "/" + db_name + "/");
+}
diff --git a/test/javascript/tests-cluster/without-quorum/attachments_delete.js b/test/javascript/tests-cluster/without-quorum/attachments_delete.js
new file mode 100644
index 0000000..d05fcaf
--- /dev/null
+++ b/test/javascript/tests-cluster/without-quorum/attachments_delete.js
@@ -0,0 +1,37 @@
+// 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.
+
+couchTests.attachments_delete= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
+  if (debug) debugger;
+
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  T(xhr.status == 202,"Should return 202 Accepted");
+  var rev = JSON.parse(xhr.responseText).rev;
+
+  xhr = CouchDB.request("DELETE", "/" + db_name + "/dummy/foo.txt?rev=" + rev);
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering quorum. 202->"+xhr.status);
+  //TODO: Define correct behaviour
+  //T(xhr.status == 202,"Should return 202 Accepted but returns "+xhr.status);
+
+ //db.deleteDb();
+ // cleanup
+ // TODO DB deletions fails if the quorum is not met.
+ xhr = CouchDB.request("DELETE", "/" + db_name + "/");
+}
diff --git a/test/javascript/tests-cluster/without-quorum/attachments_delete_overridden_quorum.js b/test/javascript/tests-cluster/without-quorum/attachments_delete_overridden_quorum.js
new file mode 100644
index 0000000..906391a
--- /dev/null
+++ b/test/javascript/tests-cluster/without-quorum/attachments_delete_overridden_quorum.js
@@ -0,0 +1,36 @@
+// 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.
+
+couchTests.attachments_delete_overridden_quorum= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":1});
+  db.createDb();
+  if (debug) debugger;
+
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  var rev = JSON.parse(xhr.responseText).rev;
+
+  xhr = CouchDB.request("DELETE", "/" + db_name + "/dummy/foo.txt?rev=" + rev);
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering quorum. 202->"+xhr.status);
+  //TODO: Define correct behaviour
+  //T(xhr.status == 200,"Should return 200 but returns "+xhr.status);
+
+ //db.deleteDb();
+ // cleanup
+ // TODO DB deletions fails if the quorum is not met.
+ xhr = CouchDB.request("DELETE", "/" + db_name + "/");
+}
diff --git a/test/javascript/tests-cluster/without-quorum/attachments_overridden_quorum.js b/test/javascript/tests-cluster/without-quorum/attachments_overridden_quorum.js
new file mode 100644
index 0000000..434578f
--- /dev/null
+++ b/test/javascript/tests-cluster/without-quorum/attachments_overridden_quorum.js
@@ -0,0 +1,42 @@
+// 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.
+
+//Test attachments operations with an overridden quorum parameter
+couchTests.attachments_overriden_quorum= function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":1});
+  db.createDb();
+  if (debug) debugger;
+
+  var doc = db.save({_id:"dummy"});
+  T(doc.ok);
+
+  var xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + doc.rev, {
+    body:"This is no base64 encoded text",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  //TODO: Define correct behaviour
+  //T(xhr.status == 201,"Should return 201");
+  var rev = JSON.parse(xhr.responseText).rev;
+
+  xhr = CouchDB.request("PUT", "/" + db_name + "/dummy/foo.txt?rev=" + rev, {
+    body:"This is no base64 encoded text-2",
+    headers:{"Content-Type": "text/plain;charset=utf-8"}
+  });
+  //TODO: Define correct behaviour
+  //T(xhr.status == 201,"Should return 201");
+
+  //db.deleteDb();
+  // cleanup
+  // TODO DB deletions fails if the quorum is not met.
+  xhr = CouchDB.request("DELETE", "/" + db_name + "/");
+}
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/db_creation.js
similarity index 100%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/db_creation.js
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/db_creation_overridden_quorum.js
similarity index 64%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/db_creation_overridden_quorum.js
index 0d8ff83..6d5d798 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/db_creation_overridden_quorum.js
@@ -10,18 +10,20 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
+// Do DB creation under cluster with quorum conditions but overriding write quorum.
+couchTests.db_creation_overridden_quorum = function(debug) {
 
   if (debug) debugger;
 
   var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":1});
 
-  // DB Creation should return 202- Accepted
+  // DB Creation should return 201 - Created
   xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering overridden quorum. 201->"+xhr.status)
+  //T(xhr.status == 201,"Should return 201");
 
+  //db.deleteDb();
   // cleanup
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/db_deletion.js
similarity index 75%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/db_deletion.js
index 0d8ff83..04b15c0 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/db_deletion.js
@@ -10,19 +10,19 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
+// Do DB deletion in a cluster with quorum conditions.
+couchTests.db_deletion = function(debug) {
 
   if (debug) debugger;
 
   var db_name = get_random_db_name()
   var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
 
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
-
-  // cleanup
+  //db.deleteDb();
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
+  //T(db.last_req.status="202","Should return 202");
+  console.log("Skipped-TODO: Fix issue 500 Error on delete. 202->"+xhr.status)
+
 };
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/db_deletion_overridden_quorum.js
similarity index 64%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/db_deletion_overridden_quorum.js
index 0d8ff83..4a1efce 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/db_deletion_overridden_quorum.js
@@ -10,19 +10,20 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
+// Do DB deletion in a cluster with quorum conditions.
+couchTests.db_deletion_overridden_quorum = function(debug) {
 
   if (debug) debugger;
 
   var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":1});
+  db.createDb();
 
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
 
-  // cleanup
+  //db.deleteDb();
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
+  //T(db.last_req.status="200","Should return 200");
+  console.log("Skipped-TODO: Fix issue 500 Error on delete - Not considering overriden quorum. 200->"+xhr.status);
+
 };
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/doc_bulk.js
similarity index 74%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/doc_bulk.js
index 0d8ff83..91578d8 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/doc_bulk.js
@@ -10,19 +10,19 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
-
-  if (debug) debugger;
-
-  var db_name = get_random_db_name()
+couchTests.doc_bulk = function(debug) {
+  var db_name = get_random_db_name();
   var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
+  if (debug) debugger;
 
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
+  var docs = makeDocs(5);
+  // Create the docs
+  var results = db.bulkSave(docs);
+  T(db.last_req.status="202","Should return 202")
 
+  //db.deleteDb();
   // cleanup
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
-};
+}
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/doc_bulk_overridden_quorum.js
similarity index 67%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/doc_bulk_overridden_quorum.js
index 0d8ff83..56fb11e 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/doc_bulk_overridden_quorum.js
@@ -10,19 +10,19 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_bulk_overridden_quorum = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":1});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
-
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
+  var docs = makeDocs(5);
+  // Create the docs
+  var results = db.bulkSave(docs);
+  T(db.last_req.status="201","Should return 201")
 
+  //db.deleteDb();
   // cleanup
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
-};
+}
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/doc_copy.js
similarity index 72%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/doc_copy.js
index 0d8ff83..7d7c35f 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/doc_copy.js
@@ -10,19 +10,21 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_copy = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"dummy"});
 
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
+  var xhr = CouchDB.request("COPY", "/" + db_name + "/dummy", {
+    headers: {"Destination":"dummy2"}
+  });
+  T(xhr.status=="202","Should return 202 ");
 
+  //db.deleteDb();
   // cleanup
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
-};
+}
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/doc_copy_overridden_quorum.js
similarity index 56%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/doc_copy_overridden_quorum.js
index 0d8ff83..e72425d 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/doc_copy_overridden_quorum.js
@@ -10,19 +10,24 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_copy_overriden_quorum = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":1});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"dummy"});
 
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
+  var xhr = CouchDB.request("COPY", "/" + db_name + "/dummy", {
+    headers: {"Destination":"dummy2"}
+  });
+  console.log("Skipped-TODO: Clarify correct behaviour. Is not considering overridden quorum. 201->"+xhr.status);
+  //TODO Defie correct behaviour
+  //T(xhr.status=="201","Should return 201");
 
+  //db.deleteDb();
   // cleanup
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
-};
+
+}
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/doc_crud.js
similarity index 65%
copy from test/javascript/tests-cluster/without-quorum/db-creation.js
copy to test/javascript/tests-cluster/without-quorum/doc_crud.js
index 0d8ff83..aa70697 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/doc_crud.js
@@ -10,19 +10,26 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_crud = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"0",a:1});
+  T(db.last_req.status=="202","Should return 202 status");
 
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
+  var doc = db.open("0");
+  db.save(doc);
+  T(db.last_req.status=="202","Should return 202 status");
 
+  doc = db.open("0");
+  db.deleteDoc(doc);
+  T(db.last_req.status="202","Should return 202 status");
+
+  //db.deleteDb();
   // cleanup
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
-};
+
+}
diff --git a/test/javascript/tests-cluster/without-quorum/db-creation.js b/test/javascript/tests-cluster/without-quorum/doc_crud_overridden_quorum.js
similarity index 58%
rename from test/javascript/tests-cluster/without-quorum/db-creation.js
rename to test/javascript/tests-cluster/without-quorum/doc_crud_overridden_quorum.js
index 0d8ff83..44ab86e 100644
--- a/test/javascript/tests-cluster/without-quorum/db-creation.js
+++ b/test/javascript/tests-cluster/without-quorum/doc_crud_overridden_quorum.js
@@ -10,19 +10,25 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-// Do DB creation under cluster without quorum conditions.
-couchTests.db_creation = function(debug) {
-
+couchTests.doc_crud_overridden_quorum = function(debug) {
+  var db_name = get_random_db_name();
+  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"},{"w":1});
+  db.createDb();
   if (debug) debugger;
 
-  var db_name = get_random_db_name()
-  var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"false"});
+  db.save({_id:"0",a:1});
+  T(db.last_req.status=="201","Should return 201 status");
+
+  var doc = db.open("0");
+  db.save(doc);
+  T(db.last_req.status=="201","Should return 201 status");
 
-  // DB Creation should return 202- Accepted
-  xhr = CouchDB.request("PUT", "/" + db_name + "/");
-  T(xhr.status == 202);
+  doc = db.open("0");
+  db.deleteDoc(doc);
+  T(db.last_req.status="200","Should return 200 status");
 
+  //db.deleteDb();
   // cleanup
   // TODO DB deletions fails if the quorum is not met.
   xhr = CouchDB.request("DELETE", "/" + db_name + "/");
-};
+}