diff --git a/src/tests/checkpoint_1.cc b/src/tests/checkpoint_1.cc index 80696c1895e..b48eb0689a8 100644 --- a/src/tests/checkpoint_1.cc +++ b/src/tests/checkpoint_1.cc @@ -122,11 +122,13 @@ checkpoint_test_1(uint32_t flags, uint32_t n, int snap_all) { const int num_runs = 4; for (run = 0; run < num_runs; run++) { uint32_t i; - for (i=0; i < n/2/num_runs; i++) + for (i=0; i < n/2/num_runs; i++) { insert_random(db_test.db, db_control.db, NULL); + } snapshot(&db_test, snap_all); - for (i=0; i < n/2/num_runs; i++) + for (i=0; i < n/2/num_runs; i++) { insert_random(db_test.db, NULL, NULL); + } db_replace(TOKU_TEST_FILENAME, &db_test, NULL); r = compare_dbs(db_test.db, db_control.db); assert(r==0); diff --git a/src/tests/checkpoint_callback.cc b/src/tests/checkpoint_callback.cc deleted file mode 100644 index 2991b95dfdb..00000000000 --- a/src/tests/checkpoint_callback.cc +++ /dev/null @@ -1,163 +0,0 @@ -/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ -// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: -/* -COPYING CONDITIONS NOTICE: - - This program is free software; you can redistribute it and/or modify - it under the terms of version 2 of the GNU General Public License as - published by the Free Software Foundation, and provided that the - following conditions are met: - - * Redistributions of source code must retain this COPYING - CONDITIONS NOTICE, the COPYRIGHT NOTICE (below), the - DISCLAIMER (below), the UNIVERSITY PATENT NOTICE (below), the - PATENT MARKING NOTICE (below), and the PATENT RIGHTS - GRANT (below). - - * Redistributions in binary form must reproduce this COPYING - CONDITIONS NOTICE, the COPYRIGHT NOTICE (below), the - DISCLAIMER (below), the UNIVERSITY PATENT NOTICE (below), the - PATENT MARKING NOTICE (below), and the PATENT RIGHTS - GRANT (below) in the documentation and/or other materials - provided with the distribution. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - -COPYRIGHT NOTICE: - - TokuDB, Tokutek Fractal Tree Indexing Library. - Copyright (C) 2007-2013 Tokutek, Inc. - -DISCLAIMER: - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - -UNIVERSITY PATENT NOTICE: - - The technology is licensed by the Massachusetts Institute of - Technology, Rutgers State University of New Jersey, and the Research - Foundation of State University of New York at Stony Brook under - United States of America Serial No. 11/760379 and to the patents - and/or patent applications resulting from it. - -PATENT MARKING NOTICE: - - This software is covered by US Patent No. 8,185,551. - -PATENT RIGHTS GRANT: - - "THIS IMPLEMENTATION" means the copyrightable works distributed by - Tokutek as part of the Fractal Tree project. - - "PATENT CLAIMS" means the claims of patents that are owned or - licensable by Tokutek, both currently or in the future; and that in - the absence of this license would be infringed by THIS - IMPLEMENTATION or by using or running THIS IMPLEMENTATION. - - "PATENT CHALLENGE" shall mean a challenge to the validity, - patentability, enforceability and/or non-infringement of any of the - PATENT CLAIMS or otherwise opposing any of the PATENT CLAIMS. - - Tokutek hereby grants to you, for the term and geographical scope of - the PATENT CLAIMS, a non-exclusive, no-charge, royalty-free, - irrevocable (except as stated in this section) patent license to - make, have made, use, offer to sell, sell, import, transfer, and - otherwise run, modify, and propagate the contents of THIS - IMPLEMENTATION, where such license applies only to the PATENT - CLAIMS. This grant does not include claims that would be infringed - only as a consequence of further modifications of THIS - IMPLEMENTATION. If you or your agent or licensee institute or order - or agree to the institution of patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that - THIS IMPLEMENTATION constitutes direct or contributory patent - infringement, or inducement of patent infringement, then any rights - granted to you under this License shall terminate as of the date - such litigation is filed. If you or your agent or exclusive - licensee institute or order or agree to the institution of a PATENT - CHALLENGE, then Tokutek may terminate any rights granted to you - under this License. -*/ - -#ident "Copyright (c) 2007-2013 Tokutek Inc. All rights reserved." -#ident "$Id$" -#include "test.h" -#include <db.h> -#include <sys/stat.h> - -#include "checkpoint_test.h" - - -// Purpose of test is to verify that callbacks are called correctly -// without breaking a simple checkpoint (copied from tests/checkpoint_1.c). - -static const char * string_1 = "extra1"; -static const char * string_2 = "extra2"; -static int callback_1_count = 0; -static int callback_2_count = 0; - -static void checkpoint_callback_1(void * extra) { - if (verbose) printf("checkpoint callback 1 called with extra = %s\n", *((char**) extra)); - assert(extra == &string_1); - callback_1_count++; -} - -static void checkpoint_callback_2(void * extra) { - if (verbose) printf("checkpoint callback 2 called with extra = %s\n", *((char**) extra)); - assert(extra == &string_2); - callback_2_count++; -} - -static void -checkpoint_test_1(uint32_t flags, uint32_t n, int snap_all) { - if (verbose>1) { - printf("%s(%s):%d, n=0x%03x, checkpoint=%01x, flags=0x%05x\n", - __FILE__, __FUNCTION__, __LINE__, - n, snap_all, flags); - fflush(stdout); - } - dir_create(TOKU_TEST_FILENAME); - env_startup(TOKU_TEST_FILENAME, 0, false); - int run; - int r; - DICTIONARY_S db_control; - init_dictionary(&db_control, flags, "control"); - DICTIONARY_S db_test; - init_dictionary(&db_test, flags, "test"); - - db_startup(&db_test, NULL); - db_startup(&db_control, NULL); - const int num_runs = 4; - for (run = 0; run < num_runs; run++) { - uint32_t i; - for (i=0; i < n/2/num_runs; i++) - insert_random(db_test.db, db_control.db, NULL); - snapshot(&db_test, snap_all); - assert(callback_1_count == run+1); - assert(callback_2_count == run+1); - for (i=0; i < n/2/num_runs; i++) - insert_random(db_test.db, NULL, NULL); - db_replace(TOKU_TEST_FILENAME, &db_test, NULL); - r = compare_dbs(db_test.db, db_control.db); - assert(r==0); - } - db_shutdown(&db_test); - db_shutdown(&db_control); - env_shutdown(); -} - -int -test_main (int argc, char * const argv[]) { - parse_args(argc, argv); - - db_env_set_checkpoint_callback(checkpoint_callback_1, &string_1); - db_env_set_checkpoint_callback2(checkpoint_callback_2, &string_2); - - checkpoint_test_1(0,4096,1); - return 0; -} diff --git a/src/tests/keyrange.cc b/src/tests/keyrange.cc index 405ef661b1a..67a19df989e 100644 --- a/src/tests/keyrange.cc +++ b/src/tests/keyrange.cc @@ -143,6 +143,15 @@ max64(uint64_t a, uint64_t b) { return a < b ? b : a; } +static void open_env(void) { + int r = db_env_create(&env, 0); CKERR(r); + env->set_errfile(env, stderr); + r = env->set_redzone(env, 0); CKERR(r); + r = env->set_generate_row_callback_for_put(env, my_generate_row); CKERR(r); + r = env->set_default_bt_compare(env, my_compare); CKERR(r); + r = env->open(env, envdir, DB_INIT_LOCK|DB_INIT_LOG|DB_INIT_MPOOL|DB_INIT_TXN|DB_CREATE|DB_PRIVATE, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(r); +} + static void run_test(void) { if (verbose) printf("%s %" PRIu64 "\n", __FUNCTION__, nrows); @@ -152,14 +161,8 @@ run_test(void) { size_t est_row_size_with_overhead = 8 + key_size + 4 + val_size + 4 + 5; // xid + key + key_len + val + val_len + mvcc overhead size_t rows_per_basement = db_basement_size / est_row_size_with_overhead; + open_env(); int r; - r = db_env_create(&env, 0); CKERR(r); - env->set_errfile(env, stderr); - r = env->set_redzone(env, 0); CKERR(r); - r = env->set_generate_row_callback_for_put(env, my_generate_row); CKERR(r); - r = env->set_default_bt_compare(env, my_compare); CKERR(r); - r = env->open(env, envdir, DB_INIT_LOCK|DB_INIT_LOG|DB_INIT_MPOOL|DB_INIT_TXN|DB_CREATE|DB_PRIVATE, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(r); - r = db_create(&db, env, 0); CKERR(r); r = db->set_pagesize(db, db_page_size); CKERR(r); r = db->set_readpagesize(db, db_basement_size); CKERR(r); @@ -203,6 +206,10 @@ run_test(void) { // close and reopen to get rid of basements r = db->close(db, 0); CKERR(r); // close MUST flush the nodes of this db out of the cache table for this test to be valid + r = env->close(env, 0); CKERR(r); + env = NULL; + open_env(); + r = db_create(&db, env, 0); CKERR(r); r = env->txn_begin(env, 0, &txn, 0); CKERR(r); r = db->open(db, txn, "foo.db", 0, DB_BTREE, 0, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(r); diff --git a/src/tests/test_cmp_descriptor.cc b/src/tests/test_cmp_descriptor.cc index 20a05462299..9e5015d0d5c 100644 --- a/src/tests/test_cmp_descriptor.cc +++ b/src/tests/test_cmp_descriptor.cc @@ -161,20 +161,26 @@ desc_int64_dbt_cmp (DB *db, const DBT *a, const DBT *b) { return 0; } -static void setup (void) { - int r; - toku_os_recursive_delete(TOKU_TEST_FILENAME); - { int chk_r = toku_os_mkdir(TOKU_TEST_FILENAME, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(chk_r); } + +static void open_env(void) { { int chk_r = db_env_create(&env, 0); CKERR(chk_r); } env->set_errfile(env, stderr); - r = env->set_default_bt_compare(env, desc_int64_dbt_cmp); CKERR(r); + int r = env->set_default_bt_compare(env, desc_int64_dbt_cmp); CKERR(r); //r = env->set_cachesize(env, 0, 500000, 1); CKERR(r); r = env->set_generate_row_callback_for_put(env, generate_row_for_put); CKERR(r); { int chk_r = env->open(env, TOKU_TEST_FILENAME, envflags, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(chk_r); } } +static void setup (void) { + toku_os_recursive_delete(TOKU_TEST_FILENAME); + { int chk_r = toku_os_mkdir(TOKU_TEST_FILENAME, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(chk_r); } + open_env(); +} + static void cleanup (void) { - { int chk_r = env->close(env, 0); CKERR(chk_r); } + int chk_r = env->close(env, 0); + CKERR(chk_r); + env = NULL; } static void do_inserts_and_queries(DB* db) { @@ -257,8 +263,8 @@ static void run_test(void) { assert_cmp_desc_valid(db); r = env->create_loader(env, txn_create, &loader, db, 1, &db, NULL, NULL, 0); CKERR(r); - dbt_init(&key, &k, sizeof k); - dbt_init(&val, &v, sizeof v); + dbt_init(&key, &k, sizeof k); + dbt_init(&val, &v, sizeof v); r = loader->put(loader, &key, &val); CKERR(r); r = loader->close(loader); @@ -286,7 +292,11 @@ static void run_test(void) { assert_cmp_desc_valid(db); do_inserts_and_queries(db); - { int chk_r = db->close(db, 0); CKERR(chk_r); } + { + int chk_r = db->close(db, 0); CKERR(chk_r); + cleanup(); + open_env(); + } // verify that after close and reopen, cmp_descriptor is now // latest descriptor