1
0
Fork 0

Merge branch 'devel' of https://github.com/triAGENS/ArangoDB into devel

This commit is contained in:
Jan Steemann 2013-07-03 15:16:20 +02:00
commit 30d2fc3ad1
6 changed files with 589 additions and 52 deletions

View File

@ -45,6 +45,8 @@ For detailed instructions the following section.
All-In-One Version{#CompilingAIO}
=================================
Note: there are separate instructions for the **devel** version in the next section.
Basic System Requirements{#CompilingAIOPrerequisites}
-----------------------------------------------------

View File

@ -100,16 +100,17 @@
<script src='js/lib/highlight.7.3.pack.js' type='text/javascript'></script>
<!-- graphViewer -->
<script src="js/graphViewer/graph/colourMapper.js"></script>
<script src="js/graphViewer/graph/forceLayouter.js"></script>
<script src="js/graphViewer/graph/eventLibrary.js"></script>
<script src="js/graphViewer/graph/eventDispatcher.js"></script>
<script src="js/graphViewer/graph/nodeShaper.js"></script>
<script src="js/graphViewer/graph/edgeShaper.js"></script>
<script src="js/graphViewer/graph/abstractAdapter.js"></script>
<script src="js/graphViewer/graph/arangoAdapter.js"></script>
<script src="js/graphViewer/graph/zoomManager.js"></script>
<script src="js/graphViewer/graph/nodeReducer.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/colourMapper.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/forceLayouter.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/eventLibrary.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/eventDispatcher.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/nodeShaper.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/edgeShaper.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/abstractAdapter.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/arangoAdapter.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/zoomManager.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/modularityJoiner.js"></script>
<script type="text/javascript" src="js/graphViewer/graph/nodeReducer.js"></script>
<script type="text/javascript" src="js/graphViewer/ui/modalDialogHelper.js"></script>
<script type="text/javascript" src="js/graphViewer/ui/nodeShaperControls.js"></script>

View File

@ -263,10 +263,6 @@ function ModularityJoiner(nodes, edges) {
}
_.each(list, function(v, k) {
if (k < high) {
if (dQ[k][high] === undefined) {
console.log("K:", k, "High:", high, "dQ:", dQ[k]);
console.log(dQ);
}
list[k] += dQ[k][high];
delete dQ[k][high];
return;

View File

@ -67,18 +67,25 @@ var helper = helper || {};
return nodes;
};
helper.insertSimpleNode = function (nodes, id) {
var n = {
_id: String(id),
_inboundCounter: 0,
_outboundCounter: 0,
position: {
x: 1,
y: 1,
z: 1
}
},
index = nodes.length;
nodes.push(n);
return index;
};
helper.insertSimpleNodes = function (nodes, ids) {
_.each(ids, function(i) {
nodes.push({
_id: i,
_inboundCounter: 0,
_outboundCounter: 0,
position: {
x: 1,
y: 1,
z: 1
}
});
helper.insertSimpleNode(nodes, i);
});
};
@ -101,4 +108,15 @@ var helper = helper || {};
}
};
helper.insertSatelite = function(nodes, edges, source, size) {
var i, s, t;
s = helper.insertSimpleNode(nodes, source);
for (i = 0; i < size; i++) {
t = helper.insertSimpleNode(nodes, source + "_" + i);
edges.push(helper.createSimpleEdge(nodes, s, t));
}
return s;
};
}());

View File

@ -1,7 +1,7 @@
/*jslint indent: 2, nomen: true, maxlen: 100, white: true plusplus: true */
/*global beforeEach, afterEach, jasmine */
/*global describe, it, expect, spyOn */
/*global window, eb, loadFixtures, document */
/*global window, eb, loadFixtures, document, console*/
/*global $, _, d3*/
/*global helper*/
/*global ModularityJoiner*/
@ -230,7 +230,7 @@
expected["0"] = {
_in: initDeg["0"]._in + initDeg["3"]._in,
_out: initDeg["0"]._out + initDeg["3"]._out,
_out: initDeg["0"]._out + initDeg["3"]._out
};
expected["1"] = initDeg["1"];
expected["2"] = initDeg["2"];
@ -354,9 +354,7 @@
edges.push(helper.createSimpleEdge(nodes, firstID + 3, firstID));
joiner.setup();
var dQ = joiner.getDQ();
expect(dQ).toBeOrdered();
expect(joiner.getDQ()).toBeOrdered();
});
@ -710,10 +708,10 @@
beforeEach(function() {
this.addMatchers({
toBeOrdered: function(failedIn) {
toBeOrdered: function() {
var dQ = this.actual,
notFailed = true,
msg = "Step " + failedIn + ": In dQ the pointers: ";
msg = "In dQ the pointers: ";
_.each(dQ, function(list, pointer) {
_.each(list, function(val, target) {
if (target < pointer) {
@ -762,7 +760,7 @@
if (_.isUndefined(comms[low])) {
this.message = function() {
return "The lower ID " + low + " is no pointer to a community";
}
};
return false;
}
this.message = function() {
@ -774,7 +772,7 @@
toFulfillCommunityPointerConstraint: function() {
var comms = this.actual.getCommunities(),
notFailed = true,
msg = "In communities the pointers: "
msg = "In communities the pointers: ";
_.each(comms, function(list, pointer) {
var ns = list.nodes;
if (ns[0] !== pointer) {
@ -789,8 +787,8 @@
});
});
this.message = function () {
return msg += "are not correct";
}
return msg + "are not correct";
};
return notFailed;
},
@ -818,7 +816,7 @@
},
toBeConsistent: function(joined, failedIn) {
toBeConsistent: function(joined) {
var testee = this.actual;
expect(testee).toFulfillDQConstraint(joined);
expect(testee).toFulfillHeapConstraint(joined);
@ -853,7 +851,6 @@
}
joiner.setup();
best = joiner.getBest();
var step = 0;
while (best !== null) {
expect(best).toContainALowerAndAHigherID();
joiner.joinCommunity(best);
@ -869,21 +866,52 @@
describe('checking large networks', function() {
it('should be able to handle 1000 nodes', function() {
var start = (new Date).getTime();
var i, best, nodeCount = 1000;
var start = (new Date()).getTime(),
i,
best,
nodeCount = 1000,
diff;
helper.insertNSimpleNodes(nodes, nodeCount);
helper.insertClique(nodes, edges, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
for (i = 11; i < nodeCount; i++) {
edges.push(helper.createSimpleEdge(nodes, i - 1, i));
edges.push(helper.createSimpleEdge(nodes, i, i - 2));
}
var diff = (new Date).getTime() - start;
diff = (new Date()).getTime() - start;
console.log("Runtime Fill:", diff, "ms");
start = (new Date).getTime();
start = (new Date()).getTime();
joiner.setup();
diff = (new Date).getTime() - start;
diff = (new Date()).getTime() - start;
console.log("Runtime Setup:", diff, "ms");
start = (new Date).getTime();
start = (new Date()).getTime();
best = joiner.getBest();
while (best !== null) {
joiner.joinCommunity(best);
best = joiner.getBest();
}
diff = (new Date()).getTime() - start;
console.log("Runtime Compute:", diff, "ms");
});
// This is the max. number of nodes for the admin UI
// However the format is realy unlikely in the adminUI
/*
it('should be able to handle 3000 nodes', function() {
var start = (new Date()).getTime();
var i, best, nodeCount = 3000;
helper.insertNSimpleNodes(nodes, nodeCount);
helper.insertClique(nodes, edges, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
for (i = 11; i < nodeCount; i++) {
edges.push(helper.createSimpleEdge(nodes, i - 1, i));
edges.push(helper.createSimpleEdge(nodes, i, i - 2));
}
var diff = (new Date()).getTime() - start;
console.log("Runtime Fill:", diff, "ms");
start = (new Date()).getTime();
joiner.setup();
diff = (new Date()).getTime() - start;
console.log("Runtime Setup:", diff, "ms");
start = (new Date()).getTime();
best = joiner.getBest();
var step = 0;
while (best !== null) {
@ -891,12 +919,504 @@
best = joiner.getBest();
step++;
}
diff = (new Date).getTime() - start;
diff = (new Date()).getTime() - start;
console.log("Runtime Compute:", diff, "ms");
});
*/
// This is what we expect in the Admin UI
it('should be able to handle few large satelites', function() {
var start = (new Date()).getTime(),
i,
best,
diff,
s0 = helper.insertSatelite(nodes, edges, 0, 500),
s1 = helper.insertSatelite(nodes, edges, 1, 300),
s2 = helper.insertSatelite(nodes, edges, 2, 313),
s3 = helper.insertSatelite(nodes, edges, 3, 461),
s4 = helper.insertSatelite(nodes, edges, 4, 251),
s5 = helper.insertSatelite(nodes, edges, 5, 576),
s6 = helper.insertSatelite(nodes, edges, 6, 126),
s7 = helper.insertSatelite(nodes, edges, 7, 231),
s8 = helper.insertSatelite(nodes, edges, 8, 50),
s9 = helper.insertSatelite(nodes, edges, 9, 70),
s10 = helper.insertSatelite(nodes, edges, 10, 111);
edges.push(helper.createSimpleEdge(nodes, s0, s1));
edges.push(helper.createSimpleEdge(nodes, s0, s2));
edges.push(helper.createSimpleEdge(nodes, s0, s3));
edges.push(helper.createSimpleEdge(nodes, s0, s4));
edges.push(helper.createSimpleEdge(nodes, s1, s0));
edges.push(helper.createSimpleEdge(nodes, s1, s5));
edges.push(helper.createSimpleEdge(nodes, s1, s6));
edges.push(helper.createSimpleEdge(nodes, s2, s1));
edges.push(helper.createSimpleEdge(nodes, s3, s7));
edges.push(helper.createSimpleEdge(nodes, s3, s8));
edges.push(helper.createSimpleEdge(nodes, s4, s0));
edges.push(helper.createSimpleEdge(nodes, s4, s8));
edges.push(helper.createSimpleEdge(nodes, s4, s9));
edges.push(helper.createSimpleEdge(nodes, s5, s2));
edges.push(helper.createSimpleEdge(nodes, s5, s6));
edges.push(helper.createSimpleEdge(nodes, s5, s10));
edges.push(helper.createSimpleEdge(nodes, s6, s5));
edges.push(helper.createSimpleEdge(nodes, s7, s5));
edges.push(helper.createSimpleEdge(nodes, s7, s6));
edges.push(helper.createSimpleEdge(nodes, s8, s0));
edges.push(helper.createSimpleEdge(nodes, s8, s2));
edges.push(helper.createSimpleEdge(nodes, s8, s4));
edges.push(helper.createSimpleEdge(nodes, s8, s6));
edges.push(helper.createSimpleEdge(nodes, s9, s8));
edges.push(helper.createSimpleEdge(nodes, s9, s10));
edges.push(helper.createSimpleEdge(nodes, s10, s1));
edges.push(helper.createSimpleEdge(nodes, s10, s9));
console.log(nodes.length, edges.length);
diff = (new Date()).getTime() - start;
console.log("Runtime Fill:", diff, "ms");
start = (new Date()).getTime();
joiner.setup();
diff = (new Date()).getTime() - start;
console.log("Runtime Setup:", diff, "ms");
start = (new Date()).getTime();
best = joiner.getBest();
while (best !== null) {
joiner.joinCommunity(best);
best = joiner.getBest();
}
diff = (new Date()).getTime() - start;
console.log("Runtime Compute:", diff, "ms");
});
it('should be able to handle many small satelites', function() {
var start = (new Date()).getTime(),
i,
best,
diff,
// This test network has been randomly generated.
// Each Satelite center has 20-100 children
// And has an edge to 3 - 13 centers
s0 = helper.insertSatelite(nodes, edges, 0, 22),
s1 = helper.insertSatelite(nodes, edges, 1, 72),
s2 = helper.insertSatelite(nodes, edges, 2, 76),
s3 = helper.insertSatelite(nodes, edges, 3, 68),
s4 = helper.insertSatelite(nodes, edges, 4, 64),
s5 = helper.insertSatelite(nodes, edges, 5, 46),
s6 = helper.insertSatelite(nodes, edges, 6, 24),
s7 = helper.insertSatelite(nodes, edges, 7, 98),
s8 = helper.insertSatelite(nodes, edges, 8, 84),
s9 = helper.insertSatelite(nodes, edges, 9, 93),
s10 = helper.insertSatelite(nodes, edges, 10, 79),
s11 = helper.insertSatelite(nodes, edges, 11, 58),
s12 = helper.insertSatelite(nodes, edges, 12, 98),
s13 = helper.insertSatelite(nodes, edges, 13, 64),
s14 = helper.insertSatelite(nodes, edges, 14, 62),
s15 = helper.insertSatelite(nodes, edges, 15, 56),
s16 = helper.insertSatelite(nodes, edges, 16, 63),
s17 = helper.insertSatelite(nodes, edges, 17, 83),
s18 = helper.insertSatelite(nodes, edges, 18, 98),
s19 = helper.insertSatelite(nodes, edges, 19, 29),
s20 = helper.insertSatelite(nodes, edges, 20, 50),
s21 = helper.insertSatelite(nodes, edges, 21, 62),
s22 = helper.insertSatelite(nodes, edges, 22, 20),
s23 = helper.insertSatelite(nodes, edges, 23, 30),
s24 = helper.insertSatelite(nodes, edges, 24, 50),
s25 = helper.insertSatelite(nodes, edges, 25, 55),
s26 = helper.insertSatelite(nodes, edges, 26, 41),
s27 = helper.insertSatelite(nodes, edges, 27, 60),
s28 = helper.insertSatelite(nodes, edges, 28, 62),
s29 = helper.insertSatelite(nodes, edges, 29, 91),
s30 = helper.insertSatelite(nodes, edges, 30, 59),
s31 = helper.insertSatelite(nodes, edges, 31, 48),
s32 = helper.insertSatelite(nodes, edges, 32, 76),
s33 = helper.insertSatelite(nodes, edges, 33, 88),
s34 = helper.insertSatelite(nodes, edges, 34, 92),
s35 = helper.insertSatelite(nodes, edges, 35, 87),
s36 = helper.insertSatelite(nodes, edges, 36, 65),
s37 = helper.insertSatelite(nodes, edges, 37, 80),
s38 = helper.insertSatelite(nodes, edges, 38, 28),
s39 = helper.insertSatelite(nodes, edges, 39, 33),
s40 = helper.insertSatelite(nodes, edges, 40, 86),
s41 = helper.insertSatelite(nodes, edges, 41, 81),
s42 = helper.insertSatelite(nodes, edges, 42, 26),
s43 = helper.insertSatelite(nodes, edges, 43, 57),
s44 = helper.insertSatelite(nodes, edges, 44, 61),
s45 = helper.insertSatelite(nodes, edges, 45, 47),
s46 = helper.insertSatelite(nodes, edges, 46, 47),
s47 = helper.insertSatelite(nodes, edges, 47, 33);
edges.push(helper.createSimpleEdge(nodes, s0, s44));
edges.push(helper.createSimpleEdge(nodes, s0, s47));
edges.push(helper.createSimpleEdge(nodes, s0, s3));
edges.push(helper.createSimpleEdge(nodes, s0, s39));
edges.push(helper.createSimpleEdge(nodes, s0, s8));
edges.push(helper.createSimpleEdge(nodes, s0, s21));
edges.push(helper.createSimpleEdge(nodes, s1, s36));
edges.push(helper.createSimpleEdge(nodes, s1, s43));
edges.push(helper.createSimpleEdge(nodes, s1, s43));
edges.push(helper.createSimpleEdge(nodes, s1, s40));
edges.push(helper.createSimpleEdge(nodes, s1, s39));
edges.push(helper.createSimpleEdge(nodes, s1, s44));
edges.push(helper.createSimpleEdge(nodes, s2, s32));
edges.push(helper.createSimpleEdge(nodes, s2, s10));
edges.push(helper.createSimpleEdge(nodes, s2, s26));
edges.push(helper.createSimpleEdge(nodes, s2, s39));
edges.push(helper.createSimpleEdge(nodes, s2, s43));
edges.push(helper.createSimpleEdge(nodes, s2, s42));
edges.push(helper.createSimpleEdge(nodes, s2, s16));
edges.push(helper.createSimpleEdge(nodes, s2, s7));
edges.push(helper.createSimpleEdge(nodes, s2, s3));
edges.push(helper.createSimpleEdge(nodes, s3, s8));
edges.push(helper.createSimpleEdge(nodes, s3, s33));
edges.push(helper.createSimpleEdge(nodes, s3, s9));
edges.push(helper.createSimpleEdge(nodes, s3, s18));
edges.push(helper.createSimpleEdge(nodes, s3, s18));
edges.push(helper.createSimpleEdge(nodes, s3, s6));
edges.push(helper.createSimpleEdge(nodes, s3, s1));
edges.push(helper.createSimpleEdge(nodes, s4, s47));
edges.push(helper.createSimpleEdge(nodes, s4, s13));
edges.push(helper.createSimpleEdge(nodes, s4, s9));
edges.push(helper.createSimpleEdge(nodes, s4, s17));
edges.push(helper.createSimpleEdge(nodes, s4, s18));
edges.push(helper.createSimpleEdge(nodes, s4, s44));
edges.push(helper.createSimpleEdge(nodes, s4, s7));
edges.push(helper.createSimpleEdge(nodes, s5, s47));
edges.push(helper.createSimpleEdge(nodes, s5, s27));
edges.push(helper.createSimpleEdge(nodes, s5, s12));
edges.push(helper.createSimpleEdge(nodes, s5, s35));
edges.push(helper.createSimpleEdge(nodes, s5, s33));
edges.push(helper.createSimpleEdge(nodes, s5, s2));
edges.push(helper.createSimpleEdge(nodes, s5, s38));
edges.push(helper.createSimpleEdge(nodes, s5, s17));
edges.push(helper.createSimpleEdge(nodes, s5, s18));
edges.push(helper.createSimpleEdge(nodes, s5, s2));
edges.push(helper.createSimpleEdge(nodes, s5, s27));
edges.push(helper.createSimpleEdge(nodes, s5, s0));
edges.push(helper.createSimpleEdge(nodes, s6, s25));
edges.push(helper.createSimpleEdge(nodes, s6, s32));
edges.push(helper.createSimpleEdge(nodes, s6, s12));
edges.push(helper.createSimpleEdge(nodes, s6, s47));
edges.push(helper.createSimpleEdge(nodes, s6, s3));
edges.push(helper.createSimpleEdge(nodes, s7, s11));
edges.push(helper.createSimpleEdge(nodes, s7, s35));
edges.push(helper.createSimpleEdge(nodes, s7, s28));
edges.push(helper.createSimpleEdge(nodes, s7, s46));
edges.push(helper.createSimpleEdge(nodes, s7, s37));
edges.push(helper.createSimpleEdge(nodes, s7, s15));
edges.push(helper.createSimpleEdge(nodes, s7, s31));
edges.push(helper.createSimpleEdge(nodes, s7, s3));
edges.push(helper.createSimpleEdge(nodes, s8, s41));
edges.push(helper.createSimpleEdge(nodes, s8, s30));
edges.push(helper.createSimpleEdge(nodes, s8, s20));
edges.push(helper.createSimpleEdge(nodes, s8, s2));
edges.push(helper.createSimpleEdge(nodes, s8, s40));
edges.push(helper.createSimpleEdge(nodes, s9, s21));
edges.push(helper.createSimpleEdge(nodes, s9, s40));
edges.push(helper.createSimpleEdge(nodes, s9, s42));
edges.push(helper.createSimpleEdge(nodes, s9, s46));
edges.push(helper.createSimpleEdge(nodes, s9, s23));
edges.push(helper.createSimpleEdge(nodes, s9, s8));
edges.push(helper.createSimpleEdge(nodes, s9, s17));
edges.push(helper.createSimpleEdge(nodes, s10, s43));
edges.push(helper.createSimpleEdge(nodes, s10, s18));
edges.push(helper.createSimpleEdge(nodes, s10, s6));
edges.push(helper.createSimpleEdge(nodes, s11, s18));
edges.push(helper.createSimpleEdge(nodes, s11, s31));
edges.push(helper.createSimpleEdge(nodes, s11, s43));
edges.push(helper.createSimpleEdge(nodes, s11, s28));
edges.push(helper.createSimpleEdge(nodes, s11, s5));
edges.push(helper.createSimpleEdge(nodes, s11, s37));
edges.push(helper.createSimpleEdge(nodes, s12, s14));
edges.push(helper.createSimpleEdge(nodes, s12, s6));
edges.push(helper.createSimpleEdge(nodes, s12, s35));
edges.push(helper.createSimpleEdge(nodes, s12, s6));
edges.push(helper.createSimpleEdge(nodes, s12, s8));
edges.push(helper.createSimpleEdge(nodes, s12, s36));
edges.push(helper.createSimpleEdge(nodes, s13, s28));
edges.push(helper.createSimpleEdge(nodes, s13, s38));
edges.push(helper.createSimpleEdge(nodes, s13, s41));
edges.push(helper.createSimpleEdge(nodes, s14, s32));
edges.push(helper.createSimpleEdge(nodes, s14, s19));
edges.push(helper.createSimpleEdge(nodes, s14, s29));
edges.push(helper.createSimpleEdge(nodes, s14, s21));
edges.push(helper.createSimpleEdge(nodes, s14, s17));
edges.push(helper.createSimpleEdge(nodes, s14, s31));
edges.push(helper.createSimpleEdge(nodes, s15, s0));
edges.push(helper.createSimpleEdge(nodes, s15, s28));
edges.push(helper.createSimpleEdge(nodes, s15, s22));
edges.push(helper.createSimpleEdge(nodes, s15, s25));
edges.push(helper.createSimpleEdge(nodes, s15, s11));
edges.push(helper.createSimpleEdge(nodes, s15, s39));
edges.push(helper.createSimpleEdge(nodes, s16, s37));
edges.push(helper.createSimpleEdge(nodes, s16, s41));
edges.push(helper.createSimpleEdge(nodes, s16, s37));
edges.push(helper.createSimpleEdge(nodes, s16, s22));
edges.push(helper.createSimpleEdge(nodes, s16, s11));
edges.push(helper.createSimpleEdge(nodes, s16, s45));
edges.push(helper.createSimpleEdge(nodes, s16, s38));
edges.push(helper.createSimpleEdge(nodes, s17, s28));
edges.push(helper.createSimpleEdge(nodes, s17, s11));
edges.push(helper.createSimpleEdge(nodes, s17, s10));
edges.push(helper.createSimpleEdge(nodes, s17, s13));
edges.push(helper.createSimpleEdge(nodes, s17, s0));
edges.push(helper.createSimpleEdge(nodes, s17, s11));
edges.push(helper.createSimpleEdge(nodes, s17, s1));
edges.push(helper.createSimpleEdge(nodes, s17, s25));
edges.push(helper.createSimpleEdge(nodes, s18, s39));
edges.push(helper.createSimpleEdge(nodes, s18, s24));
edges.push(helper.createSimpleEdge(nodes, s18, s41));
edges.push(helper.createSimpleEdge(nodes, s18, s14));
edges.push(helper.createSimpleEdge(nodes, s18, s31));
edges.push(helper.createSimpleEdge(nodes, s19, s43));
edges.push(helper.createSimpleEdge(nodes, s19, s44));
edges.push(helper.createSimpleEdge(nodes, s19, s23));
edges.push(helper.createSimpleEdge(nodes, s19, s40));
edges.push(helper.createSimpleEdge(nodes, s19, s0));
edges.push(helper.createSimpleEdge(nodes, s19, s5));
edges.push(helper.createSimpleEdge(nodes, s20, s13));
edges.push(helper.createSimpleEdge(nodes, s20, s34));
edges.push(helper.createSimpleEdge(nodes, s20, s46));
edges.push(helper.createSimpleEdge(nodes, s20, s39));
edges.push(helper.createSimpleEdge(nodes, s20, s14));
edges.push(helper.createSimpleEdge(nodes, s20, s12));
edges.push(helper.createSimpleEdge(nodes, s20, s34));
edges.push(helper.createSimpleEdge(nodes, s20, s37));
edges.push(helper.createSimpleEdge(nodes, s20, s39));
edges.push(helper.createSimpleEdge(nodes, s21, s2));
edges.push(helper.createSimpleEdge(nodes, s21, s10));
edges.push(helper.createSimpleEdge(nodes, s21, s28));
edges.push(helper.createSimpleEdge(nodes, s21, s7));
edges.push(helper.createSimpleEdge(nodes, s21, s44));
edges.push(helper.createSimpleEdge(nodes, s21, s13));
edges.push(helper.createSimpleEdge(nodes, s21, s37));
edges.push(helper.createSimpleEdge(nodes, s22, s12));
edges.push(helper.createSimpleEdge(nodes, s22, s12));
edges.push(helper.createSimpleEdge(nodes, s22, s5));
edges.push(helper.createSimpleEdge(nodes, s22, s8));
edges.push(helper.createSimpleEdge(nodes, s22, s42));
edges.push(helper.createSimpleEdge(nodes, s22, s26));
edges.push(helper.createSimpleEdge(nodes, s22, s29));
edges.push(helper.createSimpleEdge(nodes, s22, s1));
edges.push(helper.createSimpleEdge(nodes, s22, s0));
edges.push(helper.createSimpleEdge(nodes, s22, s19));
edges.push(helper.createSimpleEdge(nodes, s23, s47));
edges.push(helper.createSimpleEdge(nodes, s23, s20));
edges.push(helper.createSimpleEdge(nodes, s23, s13));
edges.push(helper.createSimpleEdge(nodes, s23, s36));
edges.push(helper.createSimpleEdge(nodes, s24, s19));
edges.push(helper.createSimpleEdge(nodes, s24, s10));
edges.push(helper.createSimpleEdge(nodes, s24, s32));
edges.push(helper.createSimpleEdge(nodes, s24, s42));
edges.push(helper.createSimpleEdge(nodes, s24, s11));
edges.push(helper.createSimpleEdge(nodes, s24, s32));
edges.push(helper.createSimpleEdge(nodes, s24, s1));
edges.push(helper.createSimpleEdge(nodes, s24, s29));
edges.push(helper.createSimpleEdge(nodes, s24, s34));
edges.push(helper.createSimpleEdge(nodes, s25, s45));
edges.push(helper.createSimpleEdge(nodes, s25, s34));
edges.push(helper.createSimpleEdge(nodes, s25, s9));
edges.push(helper.createSimpleEdge(nodes, s25, s41));
edges.push(helper.createSimpleEdge(nodes, s26, s37));
edges.push(helper.createSimpleEdge(nodes, s26, s28));
edges.push(helper.createSimpleEdge(nodes, s26, s34));
edges.push(helper.createSimpleEdge(nodes, s26, s43));
edges.push(helper.createSimpleEdge(nodes, s26, s13));
edges.push(helper.createSimpleEdge(nodes, s26, s6));
edges.push(helper.createSimpleEdge(nodes, s27, s47));
edges.push(helper.createSimpleEdge(nodes, s27, s29));
edges.push(helper.createSimpleEdge(nodes, s27, s36));
edges.push(helper.createSimpleEdge(nodes, s27, s36));
edges.push(helper.createSimpleEdge(nodes, s27, s45));
edges.push(helper.createSimpleEdge(nodes, s27, s15));
edges.push(helper.createSimpleEdge(nodes, s28, s30));
edges.push(helper.createSimpleEdge(nodes, s28, s5));
edges.push(helper.createSimpleEdge(nodes, s28, s27));
edges.push(helper.createSimpleEdge(nodes, s28, s33));
edges.push(helper.createSimpleEdge(nodes, s28, s4));
edges.push(helper.createSimpleEdge(nodes, s28, s44));
edges.push(helper.createSimpleEdge(nodes, s28, s24));
edges.push(helper.createSimpleEdge(nodes, s28, s25));
edges.push(helper.createSimpleEdge(nodes, s29, s18));
edges.push(helper.createSimpleEdge(nodes, s29, s3));
edges.push(helper.createSimpleEdge(nodes, s29, s10));
edges.push(helper.createSimpleEdge(nodes, s29, s38));
edges.push(helper.createSimpleEdge(nodes, s29, s5));
edges.push(helper.createSimpleEdge(nodes, s29, s0));
edges.push(helper.createSimpleEdge(nodes, s29, s25));
edges.push(helper.createSimpleEdge(nodes, s29, s46));
edges.push(helper.createSimpleEdge(nodes, s30, s46));
edges.push(helper.createSimpleEdge(nodes, s30, s7));
edges.push(helper.createSimpleEdge(nodes, s30, s2));
edges.push(helper.createSimpleEdge(nodes, s30, s22));
edges.push(helper.createSimpleEdge(nodes, s30, s27));
edges.push(helper.createSimpleEdge(nodes, s30, s34));
edges.push(helper.createSimpleEdge(nodes, s30, s39));
edges.push(helper.createSimpleEdge(nodes, s30, s45));
edges.push(helper.createSimpleEdge(nodes, s31, s33));
edges.push(helper.createSimpleEdge(nodes, s31, s46));
edges.push(helper.createSimpleEdge(nodes, s31, s30));
edges.push(helper.createSimpleEdge(nodes, s31, s5));
edges.push(helper.createSimpleEdge(nodes, s31, s2));
edges.push(helper.createSimpleEdge(nodes, s31, s25));
edges.push(helper.createSimpleEdge(nodes, s31, s18));
edges.push(helper.createSimpleEdge(nodes, s31, s27));
edges.push(helper.createSimpleEdge(nodes, s31, s25));
edges.push(helper.createSimpleEdge(nodes, s32, s30));
edges.push(helper.createSimpleEdge(nodes, s32, s26));
edges.push(helper.createSimpleEdge(nodes, s32, s1));
edges.push(helper.createSimpleEdge(nodes, s32, s21));
edges.push(helper.createSimpleEdge(nodes, s32, s38));
edges.push(helper.createSimpleEdge(nodes, s32, s38));
edges.push(helper.createSimpleEdge(nodes, s32, s23));
edges.push(helper.createSimpleEdge(nodes, s33, s36));
edges.push(helper.createSimpleEdge(nodes, s33, s40));
edges.push(helper.createSimpleEdge(nodes, s33, s6));
edges.push(helper.createSimpleEdge(nodes, s34, s19));
edges.push(helper.createSimpleEdge(nodes, s34, s29));
edges.push(helper.createSimpleEdge(nodes, s34, s2));
edges.push(helper.createSimpleEdge(nodes, s34, s0));
edges.push(helper.createSimpleEdge(nodes, s34, s14));
edges.push(helper.createSimpleEdge(nodes, s34, s0));
edges.push(helper.createSimpleEdge(nodes, s34, s1));
edges.push(helper.createSimpleEdge(nodes, s34, s19));
edges.push(helper.createSimpleEdge(nodes, s34, s42));
edges.push(helper.createSimpleEdge(nodes, s34, s39));
edges.push(helper.createSimpleEdge(nodes, s34, s15));
edges.push(helper.createSimpleEdge(nodes, s34, s17));
edges.push(helper.createSimpleEdge(nodes, s35, s13));
edges.push(helper.createSimpleEdge(nodes, s35, s31));
edges.push(helper.createSimpleEdge(nodes, s35, s30));
edges.push(helper.createSimpleEdge(nodes, s35, s22));
edges.push(helper.createSimpleEdge(nodes, s35, s47));
edges.push(helper.createSimpleEdge(nodes, s35, s25));
edges.push(helper.createSimpleEdge(nodes, s36, s44));
edges.push(helper.createSimpleEdge(nodes, s36, s25));
edges.push(helper.createSimpleEdge(nodes, s36, s19));
edges.push(helper.createSimpleEdge(nodes, s36, s9));
edges.push(helper.createSimpleEdge(nodes, s36, s11));
edges.push(helper.createSimpleEdge(nodes, s36, s11));
edges.push(helper.createSimpleEdge(nodes, s36, s6));
edges.push(helper.createSimpleEdge(nodes, s36, s14));
edges.push(helper.createSimpleEdge(nodes, s36, s28));
edges.push(helper.createSimpleEdge(nodes, s36, s31));
edges.push(helper.createSimpleEdge(nodes, s37, s40));
edges.push(helper.createSimpleEdge(nodes, s37, s4));
edges.push(helper.createSimpleEdge(nodes, s37, s45));
edges.push(helper.createSimpleEdge(nodes, s37, s11));
edges.push(helper.createSimpleEdge(nodes, s37, s39));
edges.push(helper.createSimpleEdge(nodes, s37, s30));
edges.push(helper.createSimpleEdge(nodes, s37, s31));
edges.push(helper.createSimpleEdge(nodes, s37, s9));
edges.push(helper.createSimpleEdge(nodes, s37, s35));
edges.push(helper.createSimpleEdge(nodes, s37, s45));
edges.push(helper.createSimpleEdge(nodes, s37, s7));
edges.push(helper.createSimpleEdge(nodes, s37, s32));
edges.push(helper.createSimpleEdge(nodes, s38, s36));
edges.push(helper.createSimpleEdge(nodes, s38, s45));
edges.push(helper.createSimpleEdge(nodes, s38, s5));
edges.push(helper.createSimpleEdge(nodes, s38, s1));
edges.push(helper.createSimpleEdge(nodes, s39, s37));
edges.push(helper.createSimpleEdge(nodes, s39, s32));
edges.push(helper.createSimpleEdge(nodes, s39, s31));
edges.push(helper.createSimpleEdge(nodes, s39, s13));
edges.push(helper.createSimpleEdge(nodes, s39, s20));
edges.push(helper.createSimpleEdge(nodes, s39, s25));
edges.push(helper.createSimpleEdge(nodes, s39, s7));
edges.push(helper.createSimpleEdge(nodes, s39, s20));
edges.push(helper.createSimpleEdge(nodes, s39, s27));
edges.push(helper.createSimpleEdge(nodes, s39, s5));
edges.push(helper.createSimpleEdge(nodes, s39, s17));
edges.push(helper.createSimpleEdge(nodes, s39, s8));
edges.push(helper.createSimpleEdge(nodes, s40, s8));
edges.push(helper.createSimpleEdge(nodes, s40, s12));
edges.push(helper.createSimpleEdge(nodes, s40, s31));
edges.push(helper.createSimpleEdge(nodes, s40, s39));
edges.push(helper.createSimpleEdge(nodes, s40, s31));
edges.push(helper.createSimpleEdge(nodes, s40, s9));
edges.push(helper.createSimpleEdge(nodes, s41, s45));
edges.push(helper.createSimpleEdge(nodes, s41, s6));
edges.push(helper.createSimpleEdge(nodes, s41, s36));
edges.push(helper.createSimpleEdge(nodes, s41, s12));
edges.push(helper.createSimpleEdge(nodes, s41, s26));
edges.push(helper.createSimpleEdge(nodes, s41, s6));
edges.push(helper.createSimpleEdge(nodes, s41, s21));
edges.push(helper.createSimpleEdge(nodes, s41, s33));
edges.push(helper.createSimpleEdge(nodes, s42, s25));
edges.push(helper.createSimpleEdge(nodes, s42, s28));
edges.push(helper.createSimpleEdge(nodes, s42, s46));
edges.push(helper.createSimpleEdge(nodes, s42, s34));
edges.push(helper.createSimpleEdge(nodes, s42, s41));
edges.push(helper.createSimpleEdge(nodes, s42, s32));
edges.push(helper.createSimpleEdge(nodes, s42, s9));
edges.push(helper.createSimpleEdge(nodes, s43, s12));
edges.push(helper.createSimpleEdge(nodes, s43, s29));
edges.push(helper.createSimpleEdge(nodes, s43, s2));
edges.push(helper.createSimpleEdge(nodes, s43, s14));
edges.push(helper.createSimpleEdge(nodes, s43, s1));
edges.push(helper.createSimpleEdge(nodes, s43, s13));
edges.push(helper.createSimpleEdge(nodes, s43, s28));
edges.push(helper.createSimpleEdge(nodes, s43, s47));
edges.push(helper.createSimpleEdge(nodes, s43, s22));
edges.push(helper.createSimpleEdge(nodes, s43, s2));
edges.push(helper.createSimpleEdge(nodes, s43, s5));
edges.push(helper.createSimpleEdge(nodes, s44, s3));
edges.push(helper.createSimpleEdge(nodes, s44, s1));
edges.push(helper.createSimpleEdge(nodes, s44, s18));
edges.push(helper.createSimpleEdge(nodes, s44, s37));
edges.push(helper.createSimpleEdge(nodes, s44, s0));
edges.push(helper.createSimpleEdge(nodes, s44, s4));
edges.push(helper.createSimpleEdge(nodes, s44, s18));
edges.push(helper.createSimpleEdge(nodes, s44, s7));
edges.push(helper.createSimpleEdge(nodes, s44, s9));
edges.push(helper.createSimpleEdge(nodes, s44, s38));
edges.push(helper.createSimpleEdge(nodes, s44, s15));
edges.push(helper.createSimpleEdge(nodes, s45, s35));
edges.push(helper.createSimpleEdge(nodes, s45, s34));
edges.push(helper.createSimpleEdge(nodes, s45, s5));
edges.push(helper.createSimpleEdge(nodes, s46, s7));
edges.push(helper.createSimpleEdge(nodes, s46, s39));
edges.push(helper.createSimpleEdge(nodes, s46, s21));
edges.push(helper.createSimpleEdge(nodes, s46, s47));
edges.push(helper.createSimpleEdge(nodes, s46, s1));
edges.push(helper.createSimpleEdge(nodes, s46, s19));
edges.push(helper.createSimpleEdge(nodes, s46, s11));
edges.push(helper.createSimpleEdge(nodes, s47, s9));
edges.push(helper.createSimpleEdge(nodes, s47, s10));
edges.push(helper.createSimpleEdge(nodes, s47, s46));
edges.push(helper.createSimpleEdge(nodes, s47, s13));
edges.push(helper.createSimpleEdge(nodes, s47, s21));
edges.push(helper.createSimpleEdge(nodes, s47, s19));
edges.push(helper.createSimpleEdge(nodes, s47, s8));
edges.push(helper.createSimpleEdge(nodes, s47, s39));
edges.push(helper.createSimpleEdge(nodes, s47, s15));
edges.push(helper.createSimpleEdge(nodes, s47, s34));
edges.push(helper.createSimpleEdge(nodes, s47, s30));
edges.push(helper.createSimpleEdge(nodes, s47, s45));
console.log(nodes.length, edges.length);
diff = (new Date()).getTime() - start;
console.log("Runtime Fill:", diff, "ms");
start = (new Date()).getTime();
joiner.setup();
diff = (new Date()).getTime() - start;
console.log("Runtime Setup:", diff, "ms");
start = (new Date()).getTime();
best = joiner.getBest();
while (best !== null) {
joiner.joinCommunity(best);
best = joiner.getBest();
}
diff = (new Date()).getTime() - start;
console.log("Runtime Compute:", diff, "ms");
});
/*
it('should be able to handle 10000 nodes', function() {
var start = (new Date).getTime();
var start = (new Date()).getTime();
var i, best, nodeCount = 10000;
helper.insertNSimpleNodes(nodes, nodeCount);
helper.insertClique(nodes, edges, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
@ -904,13 +1424,13 @@
edges.push(helper.createSimpleEdge(nodes, i - 1, i));
edges.push(helper.createSimpleEdge(nodes, i, i - 2));
}
var diff = (new Date).getTime() - start;
var diff = (new Date()).getTime() - start;
console.log("Runtime Fill:", diff, "ms");
start = (new Date).getTime();
start = (new Date()).getTime();
joiner.setup();
diff = (new Date).getTime() - start;
diff = (new Date()).getTime() - start;
console.log("Runtime Setup:", diff, "ms");
start = (new Date).getTime();
start = (new Date()).getTime();
best = joiner.getBest();
var step = 0;
while (best !== null) {
@ -918,7 +1438,7 @@
best = joiner.getBest();
step++;
}
diff = (new Date).getTime() - start;
diff = (new Date()).getTime() - start;
console.log("Runtime Compute:", diff, "ms");
});
*/

View File

@ -30,8 +30,8 @@
var GraphAPI,
arangodb = require("org/arangodb"),
arangosh = require("org/arangodb/arangosh");
arangosh = require("org/arangodb/arangosh"),
ArangoQueryCursor = require("org/arangodb/arango-query-cursor").ArangoQueryCursor;
GraphAPI = {
send: function (method, graphKey, path, data) {