Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add tests for block-redirects to lsmtest. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | block-redirects |
Files: | files | file ages | folders |
SHA1: |
eec16b0f2fb6312f0538c6d15c9533fe |
User & Date: | dan 2013-01-21 19:50:21.156 |
Context
2013-01-22
| ||
20:07 | Several block-redirect related bugfixes. check-in: a56a334333 user: dan tags: block-redirects | |
2013-01-21
| ||
19:50 | Add tests for block-redirects to lsmtest. check-in: eec16b0f2f user: dan tags: block-redirects | |
16:53 | If a free-list-only segment is generated while a merge of the top-level segment is underway, add the new segment to the merge inputs immediately. Also, if auto-checkpoints are enabled, schedule a checkpoint after each block is moved within an lsm_work(nmerge=1) call. check-in: 89b4286682 user: dan tags: block-redirects | |
Changes
Changes to lsm-test/README.
︙ | |||
24 25 26 27 28 29 30 31 32 33 34 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | + + + + + | the system recovers and other clients proceed unaffected if a process fails in the middle of a write transaction. The difference from lsmtest2.c is that this file tests live-recovery (recovery from a failure that occurs while other clients are still running) whereas lsmtest2.c tests recovery from a system or power failure. lsmtest9.c: More data tests. These focus on testing that calling lsm_work(nMerge=1) to compact the database does not corrupt it. In other words, that databases containing block-redirects can be read and written. |
Changes to lsm-test/lsmtest.h.
︙ | |||
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | + + + + + + | void test_data_1(const char *, const char *, int *pRc); void test_data_2(const char *, const char *, int *pRc); void test_data_3(const char *, const char *, int *pRc); void testDbContents(TestDb *, Datasource *, int, int, int, int, int, int *); void testCaseProgress(int, int, int, int *); int testCaseNDot(void); void testCompareDb(Datasource *, int, int, TestDb *, TestDb *, int *); int testControlDb(TestDb **ppDb); typedef struct CksumDb CksumDb; CksumDb *testCksumArrayNew(Datasource *, int, int, int); char *testCksumArrayGet(CksumDb *, int); void testCksumArrayFree(CksumDb *); void testCaseStart(int *pRc, char *zFmt, ...); void testCaseFinish(int rc); void testCaseSkip(void); int testCaseBegin(int *, const char *, const char *, ...); #define TEST_CKSUM_BYTES 29 int testCksumDatabase(TestDb *pDb, char *zOut); int testCountDatabase(TestDb *pDb); void testCompareInt(int, int, int *); void testCompareStr(const char *z1, const char *z2, int *pRc); /* lsmtest9.c */ void test_data_4(const char *, const char *, int *pRc); /* ** Similar to the Tcl_GetIndexFromObjStruct() Tcl library function. */ #define testArgSelect(w,x,y,z) testArgSelectX(w,x,sizeof(w[0]),y,z) int testArgSelectX(void *, const char *, int, const char *, int *); #ifdef __cplusplus } /* End of the 'extern "C"' block */ #endif #endif |
Changes to lsm-test/lsmtest1.c.
︙ | |||
88 89 90 91 92 93 94 | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | - + | zRet = testMallocPrintf("data.%s.%s.%d.%d", zSystem, zData, pTest->nRow, pTest->nVerify ); testFree(zData); return zRet; } |
︙ | |||
344 345 346 347 348 349 350 | 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 | - + | if( testCaseBegin(pRc, zPattern, "%s", zName) ){ doDataTest1(zSystem, &aTest[i], pRc); } testFree(zName); } } |
︙ |
Added lsm-test/lsmtest9.c.