/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ // vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: #ident "$Id$" #ident "Copyright (c) 2007, 2008 Tokutek Inc. All rights reserved." #include "test.h" /* Insert a bunch of stuff */ #include "includes.h" #include static const char *fname ="sinsert.ft_handle"; 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 }; enum { BASEMENT_NODE_SIZE = 128 * 1024 }; static int nodesize = NODE_SIZE; static int basementnodesize = BASEMENT_NODE_SIZE; static enum toku_compression_method compression_method = TOKU_DEFAULT_COMPRESSION_METHOD; 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 FT_HANDLE t; static void setup (void) { int r; unlink(fname); r = toku_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_open_ft_handle(fname, 1, &t, nodesize, basementnodesize, compression_method, ct, NULL_TXN, toku_builtin_compare_fun); assert(r==0); } static void toku_shutdown (void) { int r; r = toku_close_ft_handle_nolsn(t, 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); int r = toku_ft_insert(t, toku_fill_dbt(&kt, kc, keysize), toku_fill_dbt(&vt, vc, valsize), 0); CKERR(r); if (do_verify) toku_cachetable_verify(ct); } static void serial_insert_from (long long from) { long long i; for (i=0; i