summaryrefslogtreecommitdiff
path: root/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc')
-rw-r--r--storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc34
1 files changed, 22 insertions, 12 deletions
diff --git a/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc b/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc
index 696aa77fe9c..d4c8c85cfba 100644
--- a/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc
+++ b/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc
@@ -50,6 +50,7 @@ UNIVERSITY PATENT NOTICE:
PATENT MARKING NOTICE:
This software is covered by US Patent No. 8,185,551.
+ This software is covered by US Patent No. 8,489,638.
PATENT RIGHTS GRANT:
@@ -91,6 +92,8 @@ PATENT RIGHTS GRANT:
CACHEFILE f1;
+bool should_close;
+
static int
cleaner_callback(
void* UU(ftnode_pv),
@@ -99,13 +102,18 @@ cleaner_callback(
void* UU(extraargs)
)
{
- int r = toku_test_cachetable_unpin(f1,blocknum, fullhash,CACHETABLE_CLEAN,make_pair_attr(8));
+ should_close = true;
+ sleep(2);
+ PAIR_ATTR attr = make_pair_attr(8);
+ attr.cache_pressure_size = 8;
+ int r = toku_test_cachetable_unpin(f1, blocknum, fullhash, CACHETABLE_CLEAN, attr);
assert(r==0);
return 0;
}
static void
cachetable_test (void) {
+ should_close = false;
const int test_limit = 400;
int r;
CACHETABLE ct;
@@ -117,20 +125,22 @@ cachetable_test (void) {
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
void* v1;
- //void* v2;
long s1;
- //long s2;
- for (int j = 0; j < 50000; j++) {
- for (int i = 0; i < 10; i++) {
- CACHETABLE_WRITE_CALLBACK wc = def_write_callback(NULL);
- wc.cleaner_callback = cleaner_callback;
- r = toku_cachetable_get_and_pin(f1, make_blocknum(i), i, &v1, &s1, wc, def_fetch, def_pf_req_callback, def_pf_callback, true, NULL);
- r = toku_test_cachetable_unpin(f1, make_blocknum(i), i, CACHETABLE_DIRTY, make_pair_attr(8));
- }
- toku_cachefile_flush(f1);
+ for (int i = 0; i < 10; i++) {
+ CACHETABLE_WRITE_CALLBACK wc = def_write_callback(NULL);
+ wc.cleaner_callback = cleaner_callback;
+ r = toku_cachetable_get_and_pin(f1, make_blocknum(i), i, &v1, &s1, wc, def_fetch, def_pf_req_callback, def_pf_callback, true, NULL);
+ PAIR_ATTR attr = make_pair_attr(8);
+ attr.cache_pressure_size = 8;
+ r = toku_test_cachetable_unpin(f1, make_blocknum(i), i, CACHETABLE_DIRTY, attr);
+ }
+ while (!should_close) {
+ usleep(1024);
}
- toku_cachetable_verify(ct);
toku_cachefile_close(&f1, false, ZERO_LSN);
+
+
+ toku_cachetable_verify(ct);
toku_cachetable_close(&ct);