[mempool] more tests

This commit is contained in:
Joe Thornber 2016-06-01 14:46:27 +01:00
parent 73a69abfd2
commit 34c039d7dc
4 changed files with 11 additions and 12 deletions

View File

@ -33,16 +33,16 @@ copier::issue(copy_op const &op)
throw runtime_error("couldn't allocate buffer");
}
copy_job job(op, *data);
copy_job job(op, data);
job.op.read_complete = job.op.write_complete = false;
unsigned key = genkey(); // used as context for the io_engine
cerr << "data = " << &(*data) << "\n";
cerr << "data = " << data << "\n";
engine_.issue_io(src_handle_,
io_engine::READ,
to_sector(op.src_b),
to_sector(op.src_e),
*data,
data,
key);
jobs_.insert(make_pair(key, job));
}

View File

@ -26,15 +26,15 @@ mempool::~mempool()
::free(mem_);
}
boost::optional<void *>
void *
mempool::alloc()
{
if (free_.empty())
return optional<void *>();
return nullptr;
mempool_detail::alloc_block &b = free_.front();
free_.pop_front();
return optional<void *>(reinterpret_cast<void *>(&b));
return reinterpret_cast<void *>(&b);
}
void

View File

@ -23,7 +23,7 @@ namespace bcache {
mempool(size_t block_size, size_t total_mem, size_t alignment = 8);
~mempool();
boost::optional<void *> alloc();
void *alloc();
void free(void *data);
private:

View File

@ -65,7 +65,7 @@ TEST_F(MempoolTests, alignments_observed)
if (!md)
throw runtime_error("couldn't alloc");
ASSERT_THAT(aligned(*md, bs), Eq(true));
ASSERT_TRUE(aligned(md, bs));
}
}
}
@ -76,7 +76,7 @@ TEST_F(MempoolTests, alloc_free_cycle)
for (unsigned i = 0; i < 10000; i++) {
auto md = mp.alloc();
mp.free(*md);
mp.free(md);
}
}
@ -86,12 +86,11 @@ TEST_F(MempoolTests, exhaust_pool)
for (unsigned i = 0; i < 100; i++) {
auto md = mp.alloc();
ASSERT_THAT(*md, NEq(0));
ASSERT_NE(md, nullptr);
}
auto md = mp.alloc();
ASSERT(*md, Eq(0));
ASSERT_EQ(md, nullptr);
}
//----------------------------------------------------------------