mirror of https://gitee.com/bigwinds/arangodb
Added further OOM tests for ShortestPath computation
This commit is contained in:
parent
df75ae48f9
commit
933e4c353a
|
@ -1737,6 +1737,7 @@ function ahuacatlQueryNeighborsErrorsSuite () {
|
||||||
// Positive Check
|
// Positive Check
|
||||||
assertEqual(actual, [ v2, v3 ]);
|
assertEqual(actual, [ v2, v3 ]);
|
||||||
|
|
||||||
|
internal.debugClearFailAt();
|
||||||
internal.debugSetFailAt("VertexCollectionDitchOOM");
|
internal.debugSetFailAt("VertexCollectionDitchOOM");
|
||||||
|
|
||||||
// Negative Check
|
// Negative Check
|
||||||
|
@ -1762,6 +1763,100 @@ function ahuacatlQueryNeighborsErrorsSuite () {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief test suite for ShortestPath with intentional failures
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
function ahuacatlQueryShortestpathErrorsSuite () {
|
||||||
|
var vn = "UnitTestsTraversalVertices";
|
||||||
|
var en = "UnitTestsTraversalEdges";
|
||||||
|
var vertexCollection;
|
||||||
|
var edgeCollection;
|
||||||
|
|
||||||
|
return {
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief set up
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
setUp : function () {
|
||||||
|
db._drop(vn);
|
||||||
|
db._drop(en);
|
||||||
|
internal.debugClearFailAt();
|
||||||
|
|
||||||
|
vertexCollection = db._create(vn);
|
||||||
|
edgeCollection = db._createEdgeCollection(en);
|
||||||
|
|
||||||
|
[ "A", "B", "C", "D" ].forEach(function (item) {
|
||||||
|
vertexCollection.save({ _key: item, name: item });
|
||||||
|
});
|
||||||
|
|
||||||
|
[ [ "A", "B" ], [ "B", "C" ], [ "A", "D" ], [ "D", "C" ], [ "C", "A" ] ].forEach(function (item) {
|
||||||
|
var l = item[0];
|
||||||
|
var r = item[1];
|
||||||
|
edgeCollection.save(vn + "/" + l, vn + "/" + r, { _key: l + r, what : l + "->" + r });
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief tear down
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
tearDown : function () {
|
||||||
|
db._drop(vn);
|
||||||
|
db._drop(en);
|
||||||
|
internal.debugClearFailAt();
|
||||||
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief checks error handling in SHORTEST_PATH()
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
testShortestPathOOM : function () {
|
||||||
|
var s = vn + "/A";
|
||||||
|
var m = vn + "/B";
|
||||||
|
var t = vn + "/C";
|
||||||
|
|
||||||
|
var query = "RETURN SHORTEST_PATH(" + vn + " , " + en + ", '"
|
||||||
|
+ s + "', '" + t + "', 'outbound')";
|
||||||
|
|
||||||
|
var actual = getQueryResults(query)[0];
|
||||||
|
// Positive Check
|
||||||
|
assertEqual(actual.vertices, [s, m, t]);
|
||||||
|
assertEqual(actual.distance, 2);
|
||||||
|
|
||||||
|
internal.debugSetFailAt("TraversalOOMInitialize");
|
||||||
|
|
||||||
|
// Negative Check
|
||||||
|
try {
|
||||||
|
actual = getQueryResults(query);
|
||||||
|
fail();
|
||||||
|
} catch (e) {
|
||||||
|
assertEqual(e.errorNum, errors.ERROR_DEBUG.code);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal.debugClearFailAt();
|
||||||
|
|
||||||
|
// Redo the positive check. Make sure the former fail is gone
|
||||||
|
actual = getQueryResults(query)[0];
|
||||||
|
assertEqual(actual.vertices, [s, m, t]);
|
||||||
|
assertEqual(actual.distance, 2);
|
||||||
|
|
||||||
|
internal.debugSetFailAt("TraversalOOMPath");
|
||||||
|
// Negative Check
|
||||||
|
try {
|
||||||
|
actual = getQueryResults(query);
|
||||||
|
fail();
|
||||||
|
} catch (e) {
|
||||||
|
assertEqual(e.errorNum, errors.ERROR_DEBUG.code);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief executes the test suite
|
/// @brief executes the test suite
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -1774,6 +1869,7 @@ jsunity.run(ahuacatlQueryTraversalTestSuite);
|
||||||
jsunity.run(ahuacatlQueryTraversalTreeTestSuite);
|
jsunity.run(ahuacatlQueryTraversalTreeTestSuite);
|
||||||
if (internal.debugCanUseFailAt()) {
|
if (internal.debugCanUseFailAt()) {
|
||||||
jsunity.run(ahuacatlQueryNeighborsErrorsSuite);
|
jsunity.run(ahuacatlQueryNeighborsErrorsSuite);
|
||||||
|
jsunity.run(ahuacatlQueryShortestpathErrorsSuite);
|
||||||
}
|
}
|
||||||
|
|
||||||
return jsunity.done();
|
return jsunity.done();
|
||||||
|
|
|
@ -944,6 +944,11 @@ namespace triagens {
|
||||||
backwardSearcher.reset(new Searcher(this, backward, forward, target,
|
backwardSearcher.reset(new Searcher(this, backward, forward, target,
|
||||||
_backwardExpander, "Backward"));
|
_backwardExpander, "Backward"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRI_IF_FAILURE("TraversalOOMInitialize") {
|
||||||
|
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
while (! _bingo) {
|
while (! _bingo) {
|
||||||
if (! forwardSearcher.oneStep()) {
|
if (! forwardSearcher.oneStep()) {
|
||||||
break;
|
break;
|
||||||
|
@ -980,6 +985,11 @@ namespace triagens {
|
||||||
r_vertices.push_back(s->_predecessor);
|
r_vertices.push_back(s->_predecessor);
|
||||||
s = backward._pq.find(s->_predecessor);
|
s = backward._pq.find(s->_predecessor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRI_IF_FAILURE("TraversalOOMPath") {
|
||||||
|
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
return new Path(r_vertices, r_edges, _highscore);
|
return new Path(r_vertices, r_edges, _highscore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1022,6 +1032,11 @@ namespace triagens {
|
||||||
target, _backwardExpander,
|
target, _backwardExpander,
|
||||||
"Backward"));
|
"Backward"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRI_IF_FAILURE("TraversalOOMInitialize") {
|
||||||
|
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
forwardSearcher.start();
|
forwardSearcher.start();
|
||||||
if (_bidirectional) {
|
if (_bidirectional) {
|
||||||
backwardSearcher->start();
|
backwardSearcher->start();
|
||||||
|
@ -1066,6 +1081,11 @@ namespace triagens {
|
||||||
r_vertices.push_back(s->_predecessor);
|
r_vertices.push_back(s->_predecessor);
|
||||||
s = backward._pq.find(s->_predecessor);
|
s = backward._pq.find(s->_predecessor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRI_IF_FAILURE("TraversalOOMPath") {
|
||||||
|
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
return new Path(r_vertices, r_edges, _highscore);
|
return new Path(r_vertices, r_edges, _highscore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue