/** Let the intermediate write request fail. The write should be retried and * finally succeed. */ TEST_F(AsyncWriteHandlerTest, IntermediateWriteFail) { size_t blocks = 5; size_t buffer_size = kBlockSize * blocks; size_t middle = blocks / 2; boost::scoped_array<char> write_buf(new char[buffer_size]()); vector<WriteEntry> expected_front(middle); vector<WriteEntry> expected_tail(blocks - middle); for (size_t i = 0; i < middle; ++i) { expected_front[i] = WriteEntry(i, 0, kBlockSize); } for (size_t i = middle; i < blocks; ++i) { expected_tail[i - middle] = WriteEntry(i, 0, kBlockSize); } test_env.osds[0]->AddDropRule( new ProcIDFilterRule(xtreemfs::pbrpc::PROC_ID_WRITE, new SkipMDropNRule(middle, 1))); ASSERT_NO_THROW(file->Write(write_buf.get(), buffer_size, 0)); ASSERT_NO_THROW(file->Flush()); EXPECT_TRUE(equal(expected_front.begin(), expected_front.end(), test_env.osds[0]->GetReceivedWrites().begin())); EXPECT_TRUE(equal(expected_tail.begin(), expected_tail.end(), test_env.osds[0]->GetReceivedWrites().end() - expected_tail.size())); ASSERT_NO_THROW(file->Close()); }
void QueueTest::check_queue_dequeue() { test_header( "dequeue should be " + std::to_string( expected_front() ) ); print_test( queue->dequeue() == expected_front() ); test_index++; }
void QueueTest::check_queue_front() { test_header( "queue front is " + std::to_string( expected_front() ) ); print_test( queue->front() == expected_front() ); }
void TemplateTest::check_queue_dequeue() { test_header( "dequeue should be " + to_string( expected_front() ) ); print_test( queue->dequeue().gb() == expected_front() ); test_index++; }
void TemplateTest::check_queue_front() { test_header( "queue front is " + to_string( expected_front() ) ); print_test( queue->front().gb() == expected_front() ); }