1
0
Fork 0

added tests

This commit is contained in:
Jan Steemann 2014-06-24 09:19:26 +02:00
parent 8ec5ad2a1e
commit 9695b25673
3 changed files with 64 additions and 2 deletions

View File

@ -210,6 +210,7 @@ unittests-recovery:
@echo "================================================================================"
@echo
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collector-oom"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="transaction-no-abort"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="transaction-no-commit"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="multi-database-durability"

View File

@ -1064,6 +1064,10 @@ int CollectorThread::executeTransferMarkers (TRI_document_collection_t* document
int CollectorThread::queueOperations (triagens::wal::Logfile* logfile,
CollectorCache*& cache) {
TRI_voc_cid_t cid = cache->collectionId;
TRI_IF_FAILURE("CollectorThreadQueueOperations") {
throw std::bad_alloc();
}
MUTEX_LOCKER(_operationsQueueLock);

View File

@ -30,6 +30,60 @@ var arangodb = require("org/arangodb");
var testHelper = require("org/arangodb/test-helper").Helper;
var db = arangodb.db;
var internal = require("internal");
// -----------------------------------------------------------------------------
// --SECTION-- wal failures
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
/// @brief test suite
////////////////////////////////////////////////////////////////////////////////
function walFailureSuite () {
var cn = "UnitTestsWal";
var c;
return {
setUp: function () {
internal.debugClearFailAt();
db._drop(cn);
c = db._create(cn);
},
tearDown: function () {
db._drop(cn);
c = null;
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test bad alloc in collector
////////////////////////////////////////////////////////////////////////////////
testCollectorBadAlloc : function () {
internal.flushWal(true, true);
internal.debugSetFailAt("CollectorThreadQueueOperations");
var i = 0;
for (i = 0; i < 1000; ++i) {
c.save({ _key: "test" + i });
}
assertEqual(1000, c.count());
internal.flushWal(true, false);
assertEqual(1000, c.count());
internal.wait(6);
internal.debugClearFailAt();
internal.wait(6);
testHelper.waitUnload(c);
assertEqual(1000, c.count());
}
};
}
// -----------------------------------------------------------------------------
// --SECTION-- wal functions
@ -39,7 +93,7 @@ var internal = require("internal");
/// @brief test suite
////////////////////////////////////////////////////////////////////////////////
function WalSuite () {
function walSuite () {
var cn = "UnitTestsWal";
var c;
@ -123,7 +177,10 @@ function WalSuite () {
/// @brief executes the test suites
////////////////////////////////////////////////////////////////////////////////
jsunity.run(WalSuite);
if (internal.debugCanUseFailAt()) {
jsunity.run(walFailureSuite);
}
jsunity.run(walSuite);
return jsunity.done();