void testFragmentStore::testFull() { CPPUNIT_ASSERT(outstanding_bytes() == 0); { stor::I2OChain frag = getFragment(1,0,1); CPPUNIT_ASSERT(fragmentStore_->addFragment(frag) == true); const size_t fragSize = frag.memoryUsed(); const unsigned int maxFragCount = 1024*1024 / fragSize; for (unsigned int i = 0; i < maxFragCount-1; ++i) { frag = getFragment(2,i,maxFragCount); CPPUNIT_ASSERT(fragmentStore_->addFragment(frag) == false); CPPUNIT_ASSERT(!fragmentStore_->full()); } frag = getFragment(3,0,2); CPPUNIT_ASSERT(fragmentStore_->addFragment(frag) == false); CPPUNIT_ASSERT(fragmentStore_->full()); frag = getFragment(3,1,2); CPPUNIT_ASSERT(fragmentStore_->addFragment(frag) == true); CPPUNIT_ASSERT(!fragmentStore_->full()); frag = getFragment(2,maxFragCount-1,maxFragCount); CPPUNIT_ASSERT(fragmentStore_->addFragment(frag) == true); CPPUNIT_ASSERT(fragmentStore_->empty()); } CPPUNIT_ASSERT(outstanding_bytes() == 0); }
void testFragmentStore::testClear() { CPPUNIT_ASSERT(outstanding_bytes() == 0); { const unsigned int totalFragments = 5; const unsigned int totalEvents = 15; stor::I2OChain frag; bool complete; for (unsigned int eventNum = 0; eventNum < totalEvents; ++eventNum) { for (unsigned int fragNum = 0; fragNum < totalFragments-1; ++fragNum) { frag = getFragment(eventNum,fragNum,totalFragments); CPPUNIT_ASSERT(!frag.complete()); complete = fragmentStore_->addFragment(frag); } CPPUNIT_ASSERT(!complete); CPPUNIT_ASSERT(frag.empty()); } CPPUNIT_ASSERT(outstanding_bytes() != 0); fragmentStore_->clear(); CPPUNIT_ASSERT(outstanding_bytes() == 0); } CPPUNIT_ASSERT(outstanding_bytes() == 0); }
void testFragmentStore::testSingleIncompleteEvent() { CPPUNIT_ASSERT(outstanding_bytes() == 0); { const unsigned int totalFragments = 5; stor::I2OChain frag; bool complete; for (unsigned int i = 0; i < totalFragments-1; ++i) { frag = getFragment(1,i,totalFragments); CPPUNIT_ASSERT(!frag.complete()); complete = fragmentStore_->addFragment(frag); } CPPUNIT_ASSERT(frag.empty()); CPPUNIT_ASSERT(fragmentStore_->getStaleEvent(frag, boost::posix_time::seconds(0)) == true); CPPUNIT_ASSERT(!frag.complete()); CPPUNIT_ASSERT(frag.faulty()); CPPUNIT_ASSERT(frag.fragmentCount() == totalFragments-1); stor::FragKey fragmentKey = frag.fragmentKey(); CPPUNIT_ASSERT(fragmentKey.event_ == getEventNumber(1)); } CPPUNIT_ASSERT(outstanding_bytes() == 0); }
void testFragmentStore::testConcurrentFragments() { CPPUNIT_ASSERT(outstanding_bytes() == 0); const unsigned int totalFragments = 5; const unsigned int totalEvents = 15; for (unsigned int fragNum = 0; fragNum < totalFragments; ++fragNum) { for (unsigned int eventNum = 0; eventNum < totalEvents; ++eventNum) { stor::I2OChain frag = getFragment(eventNum,fragNum,totalFragments); CPPUNIT_ASSERT(!frag.complete()); bool complete = fragmentStore_->addFragment(frag); if ( fragNum < totalFragments-1 ) { CPPUNIT_ASSERT(!complete); CPPUNIT_ASSERT(frag.empty()); } else { CPPUNIT_ASSERT(complete); CPPUNIT_ASSERT(frag.complete()); CPPUNIT_ASSERT(!frag.faulty()); CPPUNIT_ASSERT(frag.fragmentCount() == totalFragments); stor::FragKey fragmentKey = frag.fragmentKey(); CPPUNIT_ASSERT(fragmentKey.event_ == getEventNumber(eventNum)); } } } CPPUNIT_ASSERT(outstanding_bytes() == 0); }
void testFragmentStore::testMultipleFragments() { CPPUNIT_ASSERT(outstanding_bytes() == 0); const unsigned int totalFragments = 3; for (unsigned int i = 0; i < totalFragments; ++i) { stor::I2OChain frag = getFragment(1,i,totalFragments); CPPUNIT_ASSERT(!frag.complete()); bool complete = fragmentStore_->addFragment(frag); if ( i < totalFragments-1 ) { CPPUNIT_ASSERT(!complete); CPPUNIT_ASSERT(frag.empty()); } else { CPPUNIT_ASSERT(complete); CPPUNIT_ASSERT(!frag.empty()); CPPUNIT_ASSERT(frag.complete()); CPPUNIT_ASSERT(!frag.faulty()); CPPUNIT_ASSERT(frag.fragmentCount() == totalFragments); } } CPPUNIT_ASSERT(outstanding_bytes() == 0); }
void testFragmentStore::testSingleFragment() { CPPUNIT_ASSERT(outstanding_bytes() == 0); { stor::I2OChain frag = getFragment(1,0,1); CPPUNIT_ASSERT(frag.complete()); bool complete = fragmentStore_->addFragment(frag); CPPUNIT_ASSERT(complete); CPPUNIT_ASSERT(frag.complete()); CPPUNIT_ASSERT(frag.fragmentCount() == 1); } CPPUNIT_ASSERT(outstanding_bytes() == 0); }
void testFragmentStore::testOneOfManyIncompleteEvent() { CPPUNIT_ASSERT(outstanding_bytes() == 0); { const unsigned int totalFragments = 5; const unsigned int totalEvents = 15; stor::I2OChain frag; bool complete; // Fill one event with a missing fragment for (unsigned int fragNum = 0; fragNum < totalFragments-1; ++fragNum) { frag = getFragment(0,fragNum,totalFragments); CPPUNIT_ASSERT(!frag.complete()); complete = fragmentStore_->addFragment(frag); } CPPUNIT_ASSERT(!complete); CPPUNIT_ASSERT(frag.empty()); // Sleep for a second sleep(1); // Fill more events with missing fragmentes for (unsigned int eventNum = 1; eventNum < totalEvents; ++eventNum) { for (unsigned int fragNum = 1; fragNum < totalFragments; ++fragNum) { frag = getFragment(eventNum,fragNum,totalFragments); CPPUNIT_ASSERT(!frag.complete()); complete = fragmentStore_->addFragment(frag); } CPPUNIT_ASSERT(!complete); CPPUNIT_ASSERT(frag.empty()); } // Get the first event which should be stale by now CPPUNIT_ASSERT(fragmentStore_->getStaleEvent(frag, boost::posix_time::seconds(1)) == true); CPPUNIT_ASSERT(!frag.complete()); CPPUNIT_ASSERT(frag.faulty()); CPPUNIT_ASSERT(frag.fragmentCount() == totalFragments-1); stor::FragKey fragmentKey = frag.fragmentKey(); CPPUNIT_ASSERT(fragmentKey.event_ == getEventNumber(0)); // Finish the other events for (unsigned int eventNum = 1; eventNum < totalEvents; ++eventNum) { frag = getFragment(eventNum,0,totalFragments); CPPUNIT_ASSERT(!frag.complete()); complete = fragmentStore_->addFragment(frag); CPPUNIT_ASSERT(complete); CPPUNIT_ASSERT(frag.complete()); CPPUNIT_ASSERT(!frag.faulty()); CPPUNIT_ASSERT(frag.fragmentCount() == totalFragments); stor::FragKey fragmentKey = frag.fragmentKey(); CPPUNIT_ASSERT(fragmentKey.event_ == getEventNumber(eventNum)); } CPPUNIT_ASSERT(fragmentStore_->getStaleEvent(frag, boost::posix_time::seconds(0)) == false); CPPUNIT_ASSERT(frag.empty()); } CPPUNIT_ASSERT(outstanding_bytes() == 0); }