diff options
Diffstat (limited to 'share/www/script/test/stats.js')
-rw-r--r-- | share/www/script/test/stats.js | 330 |
1 files changed, 0 insertions, 330 deletions
diff --git a/share/www/script/test/stats.js b/share/www/script/test/stats.js deleted file mode 100644 index d2fd6eac..00000000 --- a/share/www/script/test/stats.js +++ /dev/null @@ -1,330 +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. - -couchTests.stats = function(debug) { - - function newDb(name, doSetup) { - var db = new CouchDB(name, {"X-Couch-Full-Commit": "false"}); - if(doSetup) { - db.deleteDb(); - db.createDb(); - } - return db; - }; - - function getStat(mod, key) { - return CouchDB.requestStats(mod, key, true); - }; - - function doView(db) { - var designDoc = { - _id:"_design/test", // turn off couch.js id escaping? - language: "javascript", - views: { - all_docs: {map: "function(doc) {emit(doc.integer, null);}"}, - } - }; - db.save(designDoc); - db.view("test/all_docs"); - }; - - function runTest(mod, key, funcs) { - var db = newDb("test_suite_db", true); - if(funcs.setup) funcs.setup(db); - var before = getStat(mod, key).current; - if(funcs.run) funcs.run(db); - var after = getStat(mod, key).current; - if(funcs.test) funcs.test(before, after); - } - - if (debug) debugger; - - (function() { - var db = newDb("test_suite_db"); - db.deleteDb(); - - var before = getStat("couchdb", "open_databases").current; - db.createDb(); - var after = getStat("couchdb", "open_databases").current; - TEquals(before+1, after, "Creating a db increments open db count."); - })(); - - runTest("couchdb", "open_databases", { - setup: function() {restartServer();}, - run: function(db) {db.open("123");}, - test: function(before, after) { - TEquals(before+1, after, "Opening a db increments open db count."); - } - }); - - runTest("couchdb", "open_databases", { - run: function(db) {db.deleteDb();}, - test: function(before, after) { - TEquals(before-1, after, "Deleting a db decrements open db count."); - } - }); - - (function() { - restartServer(); - var max = 5; - - var testFun = function() { - var pre_dbs = getStat("couchdb", "open_databases").current || 0; - var pre_files = getStat("couchdb", "open_os_files").current || 0; - - var triggered = false; - var db = null; - for(var i = 0; i < max*2; i++) { - while (true) { - try { - db = newDb("test_suite_db_" + i, true); - break; - } catch(e) { - // all_dbs_active error! - triggered = true; - } - } - - // Trigger a delayed commit - db.save({_id: "" + i, "lang": "Awesome!"}); - } - T(triggered, "We managed to force a all_dbs_active error."); - - var open_dbs = getStat("couchdb", "open_databases").current; - TEquals(open_dbs > 0, true, "We actually opened some dbs."); - TEquals(open_dbs, max, "We only have max db's open."); - - for(var i = 0; i < max * 2; i++) { - newDb("test_suite_db_" + i).deleteDb(); - } - - var post_dbs = getStat("couchdb", "open_databases").current; - var post_files = getStat("couchdb", "open_os_files").current; - TEquals(pre_dbs, post_dbs, "We have the same number of open dbs."); - TEquals(pre_files, post_files, "We have the same number of open files."); - }; - - run_on_modified_server( - [{section: "couchdb", key: "max_dbs_open", value: "5"}], - testFun - ); - })(); - - // Just fetching the before value is the extra +1 in test - runTest("httpd", "requests", { - run: function() {CouchDB.request("GET", "/");}, - test: function(before, after) { - TEquals(before+2, after, "Request counts are incremented properly."); - } - }); - - runTest("couchdb", "database_reads", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) {db.open("test");}, - test: function(before, after) { - TEquals(before+1, after, "Reading a doc increments docs reads."); - } - }); - - runTest("couchdb", "database_reads", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) {db.request("GET", "/");}, - test: function(before, after) { - TEquals(before, after, "Only doc reads increment doc reads."); - } - }); - - runTest("couchdb", "database_reads", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) {db.open("test", {"open_revs": "all"});}, - test: function(before, after) { - TEquals(before+1, after, "Reading doc revs increments docs reads."); - } - }); - - runTest("couchdb", "database_writes", { - run: function(db) {db.save({"a": "1"});}, - test: function(before, after) { - TEquals(before+1, after, "Saving docs incrememnts doc writes."); - } - }); - - runTest("couchdb", "database_writes", { - run: function(db) { - CouchDB.request("POST", "/test_suite_db", { - headers: {"Content-Type": "application/json"}, - body: '{"a": "1"}' - }) - }, - test: function(before, after) { - TEquals(before+1, after, "POST'ing new docs increments doc writes."); - } - }) - - runTest("couchdb", "database_writes", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) {var doc = db.open("test"); db.save(doc);}, - test: function(before, after) { - TEquals(before+1, after, "Updating docs incrememnts doc writes."); - } - }); - - runTest("couchdb", "database_writes", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) {var doc = db.open("test"); db.deleteDoc(doc);}, - test: function(before, after) { - TEquals(before+1, after, "Deleting docs increments doc writes."); - } - }); - - runTest("couchdb", "database_writes", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) { - CouchDB.request("COPY", "/test_suite_db/test", { - headers: {"Destination": "copy_of_test"} - }); - }, - test: function(before, after) { - TEquals(before+1, after, "Copying docs increments doc writes."); - } - }); - - runTest("couchdb", "database_writes", { - run: function() { - CouchDB.request("PUT", "/test_suite_db/bin_doc2/foo2.txt", { - body: "This is no base64 encoded test", - headers: {"Content-Type": "text/plain;charset=utf-8"} - }); - }, - test: function(before, after) { - TEquals(before+1, after, "Create with attachment increments doc writes."); - } - }); - - runTest("couchdb", "database_writes", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) { - var doc = db.open("test"); - CouchDB.request("PUT", "/test_suite_db/test/foo2.txt?rev=" + doc._rev, { - body: "This is no base64 encoded text", - headers: {"Content-Type": "text/plainn;charset=utf-8"} - }); - }, - test: function(before, after) { - TEquals(before+1, after, "Adding attachment increments doc writes."); - } - }); - - runTest("httpd", "bulk_requests", { - run: function(db) {db.bulkSave(makeDocs(5));}, - test: function(before, after) { - TEquals(before+1, after, "The bulk_requests counter is incremented."); - } - }); - - runTest("httpd", "view_reads", { - run: function(db) {doView(db);}, - test: function(before, after) { - TEquals(before+1, after, "Reading a view increments view reads."); - } - }); - - runTest("httpd", "view_reads", { - setup: function(db) {db.save({"_id": "test"});}, - run: function(db) {db.open("test");}, - test: function(before, after) { - TEquals(before, after, "Reading a doc doesn't increment view reads."); - } - }); - - runTest("httpd", "temporary_view_reads", { - run: function(db) {db.query(function(doc) {emit(doc._id)})}, - test: function(before, after) { - TEquals(before+1, after, "Temporary views have their own counter."); - } - }); - - runTest("httpd", "temporary_view_reads", { - run: function(db) {doView(db);}, - test: function(before, after) { - TEquals(before, after, "Permanent views don't affect temporary views."); - } - }); - - runTest("httpd", "view_reads", { - run: function(db) {db.query(function(doc) {emit(doc._id)});}, - test: function(before, after) { - TEquals(before, after, "Temporary views don't affect permanent views."); - } - }); - - // Relies on getting the stats values being GET requests. - runTest("httpd_request_methods", "GET", { - test: function(before, after) { - TEquals(before+1, after, "Get requests are incremented properly."); - } - }); - - runTest("httpd_request_methods", "GET", { - run: function() {CouchDB.request("POST", "/");}, - test: function(before, after) { - TEquals(before+1, after, "POST requests don't affect GET counter."); - } - }); - - runTest("httpd_request_methods", "POST", { - run: function() {CouchDB.request("POST", "/");}, - test: function(before, after) { - TEquals(before+1, after, "POST requests are incremented properly."); - } - }); - - runTest("httpd_status_codes", "404", { - run: function() {CouchDB.request("GET", "/nonexistant_db");}, - test: function(before, after) { - TEquals(before+1, after, "Increments 404 counter on db not found."); - } - }); - - runTest("httpd_status_codes", "404", { - run: function() {CouchDB.request("GET", "/");}, - test: function(before, after) { - TEquals(before, after, "Getting DB info doesn't increment 404's"); - } - }); - - (function() { - var aggregates = [ - "current", - "description", - "mean", - "min", - "max", - "stddev", - "sum" - ]; - var summary = JSON.parse(CouchDB.request("GET", "/_stats", { - headers: {"Accept": "application/json"} - }).responseText); - for(var i in summary) { - for(var j in summary[i]) { - for(var k in summary[i][j]) { - T(aggregates.indexOf(k) >= 0, "Unknown property name: " + j); - } - for(var k in aggregates) { - var mesg = "Missing required property: " + aggregates[k]; - T(summary[i][j][aggregates[k]] !== undefined, mesg); - } - } - } - })(); -}; |