/* -*- mode: C; c-basic-offset: 4 -*- */ #ident "Copyright (c) 2007, 2008 Tokutek Inc. All rights reserved." #include "test.h" /* Insert a bunch of stuff */ #include "includes.h" static const char fname[]="sinsert.brt"; enum { SERIAL_SPACING = 1<<6 }; enum { ITEMS_TO_INSERT_PER_ITERATION = 1<<20 }; //enum { ITEMS_TO_INSERT_PER_ITERATION = 1<<14 }; enum { BOUND_INCREASE_PER_ITERATION = SERIAL_SPACING*ITEMS_TO_INSERT_PER_ITERATION }; enum { NODE_SIZE = 1<<20 }; static int nodesize = NODE_SIZE; static int keysize = sizeof (long long); static int valsize = sizeof (long long); static int do_verify =0; /* Do a slow verify after every insert. */ static int do_serial = 1; static int do_random = 1; static CACHETABLE ct; static BRT t; static void setup (void) { int r; unlink_file_and_bit(fname); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_open_brt(fname, 0, 1, &t, nodesize, ct, NULL_TXN, toku_default_compare_fun, (DB*)0); assert(r==0); } static void toku_shutdown (void) { int r; r = toku_close_brt(t, 0, 0); assert(r==0); r = toku_cachetable_close(&ct); assert(r==0); } static void long_long_to_array (unsigned char *a, unsigned long long l) { int i; for (i=0; i<8; i++) a[i] = (l>>(56-8*i))&0xff; } static void insert (long long v) { unsigned char kc[keysize], vc[valsize]; DBT kt, vt; memset(kc, 0, sizeof kc); long_long_to_array(kc, v); memset(vc, 0, sizeof vc); long_long_to_array(vc, v); toku_brt_insert(t, toku_fill_dbt(&kt, kc, keysize), toku_fill_dbt(&vt, vc, valsize), 0); if (do_verify) toku_cachetable_verify(ct); } static void serial_insert_from (long long from) { long long i; for (i=0; itv_sec-b->tv_sec)+1e-6*(a->tv_usec-b->tv_usec); } static void biginsert (long long n_elements, struct timeval *starttime) { long long i; struct timeval t1,t2; int iteration; for (i=0, iteration=0; i1) { toku_malloc_report(); } toku_malloc_cleanup(); return 0; }