Commit a09c9dee authored by Zardosht Kasheff's avatar Zardosht Kasheff Committed by Yoni Fogel

closes #5942, remove cachetable-scan.cc, an old test that was meant to test if...

closes #5942, remove cachetable-scan.cc, an old test that was meant to test if cachetable was fast enough. Outdated now

git-svn-id: file:///svn/toku/tokudb@52624 c7de825b-a66e-492c-adef-691d508d4ae1
parent a47f4bc5
/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4:
#ident "$Id$"
/* How fast can we read a file usng the cachetable interface. */
#ident "Copyright (c) 2007, 2008 Tokutek Inc. All rights reserved."
#include "test.h"
#include <toku_time.h>
enum { KEYLIMIT = 4, BLOCKSIZE=1<<20, N=2048};
static void f_flush (CACHEFILE f,
int UU(fd),
CACHEKEY key,
void *value,
void** UU(dd),
void *extra __attribute__((__unused__)),
PAIR_ATTR size,
PAIR_ATTR* new_size __attribute__((__unused__)),
bool write_me,
bool keep_me,
bool for_checkpoint __attribute__((__unused__)),
bool UU(is_clone)
) {
assert(size.size==BLOCKSIZE);
if (write_me) {
toku_os_full_pwrite(toku_cachefile_get_fd(f), value, BLOCKSIZE, key.b);
}
if (!keep_me) {
toku_free(value);
}
}
static int f_fetch (CACHEFILE f,
PAIR UU(p),
int UU(fd),
CACHEKEY key,
uint32_t fullhash __attribute__((__unused__)),
void**value,
void** UU(dd),
PAIR_ATTR *sizep,
int *dirtyp,
void*extraargs __attribute__((__unused__))) {
void *buf = toku_malloc(BLOCKSIZE);
int r = pread(toku_cachefile_get_fd(f), buf, BLOCKSIZE, key.b);
assert(r==BLOCKSIZE);
*value = buf;
*sizep = make_pair_attr(BLOCKSIZE);
*dirtyp = 0;
return 0;
}
const char fname[] = __SRCFILE__ ".dat";
CACHETABLE t;
CACHEFILE f;
static void open_file (void ) {
int r;
toku_cachetable_create(&t, KEYLIMIT, ZERO_LSN, NULL_LOGGER);
r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r==0);
}
static void writeit (void) {
struct timeval start, end;
gettimeofday(&start, 0);
int i, r;
for (i=0; i<N; i++) {
void *buf = toku_malloc(BLOCKSIZE);
CACHEKEY key = make_blocknum(i*BLOCKSIZE);
uint32_t fullhash = toku_cachetable_hash(f, key);
int j;
for (j=0; j<BLOCKSIZE; j++) ((char*)buf)[j]=(char)((i+j)%256);
CACHETABLE_WRITE_CALLBACK wc = def_write_callback(NULL);
wc.flush_callback = f_flush;
toku_cachetable_put(f, key, fullhash, buf, make_pair_attr(BLOCKSIZE), wc, put_callback_nop);
r = toku_test_cachetable_unpin(f, key, fullhash, CACHETABLE_CLEAN, make_pair_attr(BLOCKSIZE)); assert(r==0);
}
gettimeofday(&end, 0);
double diff = toku_tdiff(&end, &start);
if (verbose)
printf("writeit %d blocks of size %d in %6.2fs at %6.2fMB/s\n", N, BLOCKSIZE, diff, (N/diff)*(BLOCKSIZE*1e-6));
}
static void readit (void) {
struct timeval start, end;
struct timeval start_usertime, start_systime;
struct timeval end_usertime, end_systime;
toku_os_get_process_times(&start_usertime, &start_systime);
gettimeofday(&start, 0);
int i, r;
void *block;
long current_size;
for (i=0; i<N; i++) {
CACHEKEY key = make_blocknum(i*BLOCKSIZE);
uint32_t fullhash = toku_cachetable_hash(f, key);
CACHETABLE_WRITE_CALLBACK wc = def_write_callback(NULL);
wc.flush_callback = f_flush;
r=toku_cachetable_get_and_pin(f, key, fullhash, &block, &current_size, wc, f_fetch, def_pf_req_callback, def_pf_callback, true, 0); assert(r==0);
r=toku_test_cachetable_unpin(f, key, fullhash, CACHETABLE_CLEAN, make_pair_attr(BLOCKSIZE)); assert(r==0);
}
toku_cachefile_close(&f, false, ZERO_LSN);
toku_cachetable_close(&t);
gettimeofday(&end, 0);
toku_os_get_process_times(&end_usertime, &end_systime);
double diff = toku_tdiff(&end, &start);
double udiff = toku_tdiff(&end_usertime, &start_usertime);
double sdiff = toku_tdiff(&end_systime, &start_systime);
if (verbose)
printf("readit %d blocks of size %d in %6.2fs at %6.2fMB/s user=%6.2fs sys=%6.2fs\n",
N, BLOCKSIZE, diff, (N/diff)*(BLOCKSIZE*1e-6), udiff, sdiff);
}
int
test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute__((__unused__))) {
open_file();
writeit();
readit();
unlink(fname);
return 0;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment