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::testStaleEvent() { CPPUNIT_ASSERT(outstanding_bytes() == 0); { stor::I2OChain frag = getFragment(1,0,1); CPPUNIT_ASSERT(frag.complete()); bool hasStaleEvent = fragmentStore_->getStaleEvent(frag, boost::posix_time::seconds(0)); CPPUNIT_ASSERT(hasStaleEvent == false); CPPUNIT_ASSERT(frag.empty()); } 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); }