1
0
Fork 0
This commit is contained in:
Willi Goesgens 2015-02-05 13:36:17 +01:00
parent 2456958bf5
commit ed80dd575d
5 changed files with 89 additions and 48 deletions

View File

@ -1,4 +1,4 @@
/*global require, assertEqual, assertTrue, arango */ /*global require, fail, assertEqual, assertTrue, assertFalse, assertNull, arango */
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief test the replication /// @brief test the replication
@ -47,6 +47,7 @@ var slaveEndpoint = masterEndpoint.replace(/:3(\d+)$/, ':4$1');
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
function ReplicationSuite () { function ReplicationSuite () {
"use strict";
var cn = "UnitTestsReplication"; var cn = "UnitTestsReplication";
var cn2 = "UnitTestsReplication2"; var cn2 = "UnitTestsReplication2";
@ -72,19 +73,20 @@ function ReplicationSuite () {
}; };
var compareTicks = function (l, r) { var compareTicks = function (l, r) {
var i;
if (l === null) { if (l === null) {
l = "0"; l = "0";
} }
if (r === null) { if (r === null) {
r = "0"; r = "0";
} }
if (l.length != r.length) { if (l.length !== r.length) {
return l.length - r.length < 0 ? -1 : 1; return l.length - r.length < 0 ? -1 : 1;
} }
// length is equal // length is equal
for (i = 0; i < l.length; ++i) { for (i = 0; i < l.length; ++i) {
if (l[i] != r[i]) { if (l[i] !== r[i]) {
return l[i] < r[i] ? -1 : 1; return l[i] < r[i] ? -1 : 1;
} }
} }
@ -474,7 +476,11 @@ function ReplicationSuite () {
var c = db._create(cn), i; var c = db._create(cn), i;
for (i = 0; i < 1000; ++i) { for (i = 0; i < 1000; ++i) {
c.save({ "value" : i, "foo" : true, "bar" : [ i , false ], "value2" : null, "mydata" : { "test" : [ "abc", "def" ] } }); c.save({ "value" : i,
"foo" : true,
"bar" : [ i , false ],
"value2" : null,
"mydata" : { "test" : [ "abc", "def" ] } });
} }
state.checksum = collectionChecksum(cn); state.checksum = collectionChecksum(cn);
@ -500,10 +506,10 @@ function ReplicationSuite () {
for (i = 0; i < 1000; ++i) { for (i = 0; i < 1000; ++i) {
c.save({ "abc" : true, "_key" : "test" + i }); c.save({ "abc" : true, "_key" : "test" + i });
if (i % 3 == 0) { if (i % 3 === 0) {
c.remove(c.last()); c.remove(c.last());
} }
else if (i % 5 == 0) { else if (i % 5 === 0) {
c.update("test" + i, { "def" : "hifh" }); c.update("test" + i, { "def" : "hifh" });
} }
} }
@ -581,10 +587,10 @@ function ReplicationSuite () {
for (i = 0; i < 100; ++i) { for (i = 0; i < 100; ++i) {
c.save({ "abc" : true, "_key" : "test" + i }); c.save({ "abc" : true, "_key" : "test" + i });
if (i % 3 == 0) { if (i % 3 === 0) {
c.remove(c.last()); c.remove(c.last());
} }
else if (i % 5 == 0) { else if (i % 5 === 0) {
c.update("test" + i, { "def" : "hifh" }); c.update("test" + i, { "def" : "hifh" });
} }
} }
@ -815,7 +821,7 @@ function ReplicationSuite () {
c.save({ "_key" : "test" + i, value : i }); c.save({ "_key" : "test" + i, value : i });
c.update("test" + i, { value : i + 1 }); c.update("test" + i, { value : i + 1 });
if (i % 5 == 0) { if (i % 5 === 0) {
c.remove("test" + i); c.remove("test" + i);
} }
} }
@ -1264,7 +1270,7 @@ function ReplicationSuite () {
/// @brief test unique constraint /// @brief test unique constraint
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
testUniqueConstraint : function () { testUniqueConstraint2 : function () {
compare( compare(
function (state) { function (state) {
var c = db._create(cn), i; var c = db._create(cn), i;

View File

@ -1,3 +1,6 @@
/*jshint strict: true */
/*global require, fail, assertFalse, assertTrue, assertEqual, assertNotEqual, assertMatch, ArangoAgency */
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief test the agency communication layer /// @brief test the agency communication layer
/// ///
@ -36,6 +39,7 @@ var jsunity = require("jsunity");
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
function AgencySuite () { function AgencySuite () {
"use strict";
var agency = ArangoAgency; var agency = ArangoAgency;
var oldPrefix = agency.prefix(true); var oldPrefix = agency.prefix(true);
@ -334,7 +338,7 @@ function AgencySuite () {
// overwrite // overwrite
agency.set("UnitTestsAgency/foo", "test2", 2); agency.set("UnitTestsAgency/foo", "test2", 2);
var values = agency.get("UnitTestsAgency/foo"); values = agency.get("UnitTestsAgency/foo");
assertTrue(values.hasOwnProperty("UnitTestsAgency/foo")); assertTrue(values.hasOwnProperty("UnitTestsAgency/foo"));
assertEqual(values["UnitTestsAgency/foo"], "test2"); assertEqual(values["UnitTestsAgency/foo"], "test2");
@ -342,13 +346,13 @@ function AgencySuite () {
// re-insert // re-insert
agency.set("UnitTestsAgency/foo", "test3"); agency.set("UnitTestsAgency/foo", "test3");
var values = agency.get("UnitTestsAgency/foo"); values = agency.get("UnitTestsAgency/foo");
assertTrue(values.hasOwnProperty("UnitTestsAgency/foo")); assertTrue(values.hasOwnProperty("UnitTestsAgency/foo"));
assertEqual(values["UnitTestsAgency/foo"], "test3"); assertEqual(values["UnitTestsAgency/foo"], "test3");
// update with ttl // update with ttl
agency.set("UnitTestsAgency/foo", "test4", 2); agency.set("UnitTestsAgency/foo", "test4", 2);
var values = agency.get("UnitTestsAgency/foo"); values = agency.get("UnitTestsAgency/foo");
assertTrue(values.hasOwnProperty("UnitTestsAgency/foo")); assertTrue(values.hasOwnProperty("UnitTestsAgency/foo"));
assertEqual(values["UnitTestsAgency/foo"], "test4"); assertEqual(values["UnitTestsAgency/foo"], "test4");

View File

@ -1,5 +1,33 @@
/*global require, describe, beforeEach, it, expect, spyOn, createSpy, createSpyObj */ /*global require, describe, beforeEach, it, expect, spyOn, createSpy, createSpyObj */
////////////////////////////////////////////////////////////////////////////////
/// @brief simple queries
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2014 ArangoDB GmbH, Cologne, Germany
///
/// 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.
///
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
///
/// @author Lucas Dohmen
/// @author Copyright 2014, ArangoDB GmbH, Cologne, Germany
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
var FoxxRepository = require("org/arangodb/foxx/repository").Repository, var FoxxRepository = require("org/arangodb/foxx/repository").Repository,
Model = require("org/arangodb/foxx/model").Model; Model = require("org/arangodb/foxx/model").Model;

View File

@ -1,3 +1,5 @@
/*jshint strict: true */
/*global require, assertEqual */
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief tests for production mode /// @brief tests for production mode
/// ///
@ -33,7 +35,7 @@ var jsunity = require("jsunity");
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
function productionTestSuite () { function productionTestSuite () {
"use strict";
return { return {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////

View File

@ -1,4 +1,4 @@
/*global require, db, assertEqual, assertTrue, ArangoCollection */ /*global require, assertFalse */
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief test the performance of removal with a skip-list index /// @brief test the performance of removal with a skip-list index
@ -39,6 +39,7 @@ var internal = require("internal");
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
function SkipListPerfSuite() { function SkipListPerfSuite() {
"use strict";
var cn = "UnitTestsCollectionSkiplistPerf"; var cn = "UnitTestsCollectionSkiplistPerf";
var collection = null; var collection = null;
@ -75,39 +76,39 @@ function SkipListPerfSuite() {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
testDeletionPerformance : function () { testDeletionPerformance : function () {
var time = require("internal").time; var time = require("internal").time;
collection.ensureSkiplist("value"); collection.ensureSkiplist("value");
var N=100000; var N=100000;
var p=14777; // must be coprime to N var p=14777; // must be coprime to N
for (i = 0;i < N;i++) { for (i = 0;i < N;i++) {
collection.save({value:i}); collection.save({value:i});
}; }
var l = collection.toArray(); var l = collection.toArray();
var t = time(); var t = time();
var j = 0; var j = 0;
var x; var x;
for (var i = 0;i < l.length;i++) { for (var i = 0;i < l.length;i++) {
x = l[j]; x = l[j];
j = (j+p) % l.length; j = (j+p) % l.length;
collection.remove(x._key) collection.remove(x._key);
}; }
var t1 = time()-t; var t1 = time()-t;
internal.db._drop(cn); internal.db._drop(cn);
collection = internal.db._create(cn); collection = internal.db._create(cn);
collection.ensureSkiplist("value"); collection.ensureSkiplist("value");
for (i = 0;i < N;i++) { for (i = 0;i < N;i++) {
collection.save({value: i % 10}); collection.save({value: i % 10});
}; }
l = collection.toArray(); l = collection.toArray();
t = time(); t = time();
j = 0; j = 0;
for (i = 0;i < l.length;i++) { for (i = 0;i < l.length;i++) {
x = l[j]; x = l[j];
j = (j+p) % l.length; j = (j+p) % l.length;
collection.remove(x._key) collection.remove(x._key);
}; }
t2 = time()-t; var t2 = time()-t;
assertFalse(t2 > 5*t1,"Removal with skip-list index is slow"); assertFalse(t2 > 5*t1,"Removal with skip-list index is slow");
} }
}; };