Skip to content

Commit a9af6f7

Browse files
author
Masakazu Nagaya
committed
Add a test for store large objects
1 parent ec7d036 commit a9af6f7

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/test/smoke-test/test_cache.cc

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ class SmokeTestCacheSuite : public CppUnit::TestFixture, public TestBase {
4949
void smoke_test_cache_09(); // TC 09
5050
void smoke_test_cache_10(); // TC 10
5151
void smoke_test_cache_11(); // TC 11
52+
void smoke_test_cache_12(); // TC 12
5253

5354
int StoreCacheLargeObj(MDBM *cache_db, int xobjNum = 0);
5455
void FetchCacheLargeObj(MDBM *cache_db, int key);
5556
void DeleteCacheLargeObj(MDBM *cache_db, int key);
5657
void cache_common_tests(MDBM *cache_db, bool modify);
5758
MDBM* create_mdbm_cache(const string& cache_name, int openflags, int mode);
59+
MDBM* create_mdbm_cache_40m(const string& cache_name, int openflags, int mode);
5860
private:
5961
static string _basePath;
6062
static int _pageSize;
@@ -282,6 +284,28 @@ void SmokeTestCacheSuite::smoke_test_cache_11() {
282284
CPPUNIT_ASSERT((ret = mdbm_set_cachemode(cache_db, MDBM_CACHEMODE_LRU)) != 0);
283285
}
284286

287+
void SmokeTestCacheSuite::smoke_test_cache_12() {
288+
string trprefix = "TC 12 : Smoke Test DB Caching: ";
289+
TRACE_TEST_CASE(trprefix);
290+
const string mdbm_name = _basePath + "/smoke_test_cache_12.mdbm";
291+
int ret = -1, i;
292+
int openflags = MDBM_O_RDWR | MDBM_O_CREAT | MDBM_O_TRUNC | MDBM_CREATE_V3 | MDBM_CACHE_MODIFY | MDBM_LARGE_OBJECTS | MDBM_DBSIZE_MB;
293+
294+
//create mdbm as cache
295+
MdbmHolder cache_db = create_mdbm_cache_40m(mdbm_name, openflags, MDBM_CACHEMODE_LRU);
296+
297+
//store large objects
298+
for (i = 0; i < 1024; ++i) {
299+
ret = StoreCacheLargeObj(cache_db, i);
300+
if (ret == 0) {
301+
CPPUNIT_ASSERT_EQUAL(0, ret);
302+
FetchCacheLargeObj(cache_db, i);
303+
} else {
304+
CPPUNIT_ASSERT_EQUAL(-1, ret);
305+
}
306+
}
307+
}
308+
285309
void SmokeTestCacheSuite::cache_common_tests(MDBM* cache_db, bool modify) {
286310
kvpair kv;
287311

@@ -334,6 +358,27 @@ MDBM* SmokeTestCacheSuite::create_mdbm_cache(const string& cache_name, int openf
334358
return cache_db;
335359
}
336360

361+
MDBM* SmokeTestCacheSuite::create_mdbm_cache_40m(const string& cache_name, int openflags, int mode) {
362+
MDBM *cache_db = NULL;
363+
int ret = -1;
364+
365+
CPPUNIT_ASSERT((cache_db = mdbm_open(cache_name.c_str(), openflags, 0644, 4096, 40)) != NULL);
366+
367+
if (!cache_db) {
368+
stringstream msg;
369+
msg << cache_name << " Failed to mdbm_open DB(errno=" << errno;
370+
msg << endl;
371+
cerr << msg.str();
372+
assert(cache_db);
373+
return NULL;
374+
}
375+
376+
CPPUNIT_ASSERT((ret = mdbm_sethash(cache_db, MDBM_HASH_MD5)) == 1);
377+
CPPUNIT_ASSERT((ret = mdbm_limit_size_v3(cache_db, mdbm_get_size(cache_db) / mdbm_get_page_size(cache_db), NULL, NULL)) == 0);
378+
CPPUNIT_ASSERT((ret = mdbm_set_cachemode(cache_db, mode)) == 0);
379+
380+
return cache_db;
381+
}
337382

338383
int SmokeTestCacheSuite::StoreCacheLargeObj(MDBM *cache_db, int objNum) {
339384
char kbuf[32], buf[256];
@@ -396,6 +441,7 @@ class MdbmSmokeTest : public SmokeTestCacheSuite {
396441
CPPUNIT_TEST(smoke_test_cache_09); // TC 09
397442
CPPUNIT_TEST(smoke_test_cache_10); // TC 10
398443
CPPUNIT_TEST(smoke_test_cache_11); // TC 11
444+
CPPUNIT_TEST(smoke_test_cache_12); // TC 12
399445
CPPUNIT_TEST_SUITE_END();
400446

401447
public:

0 commit comments

Comments
 (0)