void testBackend (beast::String type, std::int64_t const seedValue, int numObjectsToTest = 2000) { std::unique_ptr <Manager> manager (make_Manager ()); DummyScheduler scheduler; testcase ((beast::String ("Backend type=") + type).toStdString()); beast::StringPairArray params; beast::File const path (beast::File::createTempFile ("node_db")); params.set ("type", type); params.set ("path", path.getFullPathName ()); // Create a batch Batch batch; createPredictableBatch (batch, 0, numObjectsToTest, seedValue); beast::Journal j; { // Open the backend std::unique_ptr <Backend> backend (manager->make_Backend ( params, scheduler, j)); // Write the batch storeBatch (*backend, batch); { // Read it back in Batch copy; fetchCopyOfBatch (*backend, ©, batch); expect (areBatchesEqual (batch, copy), "Should be equal"); } { // Reorder and read the copy again Batch copy; beast::UnitTestUtilities::repeatableShuffle (batch.size (), batch, seedValue); fetchCopyOfBatch (*backend, ©, batch); expect (areBatchesEqual (batch, copy), "Should be equal"); } } { // Re-open the backend std::unique_ptr <Backend> backend (manager->make_Backend ( params, scheduler, j)); // Read it back in Batch copy; fetchCopyOfBatch (*backend, ©, batch); // Canonicalize the source and destination batches std::sort (batch.begin (), batch.end (), NodeObject::LessThan ()); std::sort (copy.begin (), copy.end (), NodeObject::LessThan ()); expect (areBatchesEqual (batch, copy), "Should be equal"); } }
void onPrepare () { beast::Error error (m_store.open (m_databaseFile)); if (error) m_journal.fatal << "Failed to open '" << m_databaseFile.getFullPathName() << "'"; if (! error) m_logic.load (); }