diff options
Diffstat (limited to 'test/scr015/TestLogc.cpp')
-rw-r--r-- | test/scr015/TestLogc.cpp | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/test/scr015/TestLogc.cpp b/test/scr015/TestLogc.cpp deleted file mode 100644 index c22fdfc..0000000 --- a/test/scr015/TestLogc.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 2000-2009 Oracle. All rights reserved. - * - * $Id$ - */ - -/* - * A basic regression test for the Logc class. - */ - -#include <db_cxx.h> -#include <iostream.h> - -static void show_dbt(ostream &os, Dbt *dbt) -{ - int i; - int size = dbt->get_size(); - unsigned char *data = (unsigned char *)dbt->get_data(); - - os << "size: " << size << " data: "; - for (i=0; i<size && i<10; i++) { - os << (int)data[i] << " "; - } - if (i<size) - os << "..."; -} - -int main(int argc, char *argv[]) -{ - try { - DbEnv *env = new DbEnv(0); - DbTxn *dbtxn; - env->open(".", DB_CREATE | DB_INIT_LOG | - DB_INIT_TXN | DB_INIT_MPOOL, 0); - - // Do some database activity to get something into the log. - Db *db1 = new Db(env, 0); - env->txn_begin(NULL, &dbtxn, DB_TXN_NOWAIT); - db1->open(dbtxn, "first.db", NULL, DB_BTREE, DB_CREATE, 0); - Dbt *key = new Dbt((char *)"a", 1); - Dbt *data = new Dbt((char *)"b", 1); - db1->put(dbtxn, key, data, 0); - key->set_data((char *)"c"); - data->set_data((char *)"d"); - db1->put(dbtxn, key, data, 0); - dbtxn->commit(0); - - env->txn_begin(NULL, &dbtxn, DB_TXN_NOWAIT); - key->set_data((char *)"e"); - data->set_data((char *)"f"); - db1->put(dbtxn, key, data, 0); - key->set_data((char *)"g"); - data->set_data((char *)"h"); - db1->put(dbtxn, key, data, 0); - dbtxn->commit(0); - db1->close(0); - - // flush the log - env->log_flush(NULL); - - // Now get a log cursor and walk through. - DbLogc *logc; - - env->log_cursor(&logc, 0); - int ret = 0; - DbLsn lsn; - Dbt *dbt = new Dbt(); - u_int32_t flags = DB_FIRST; - - int count = 0; - while ((ret = logc->get(&lsn, dbt, flags)) == 0) { - - // We ignore the contents of the log record, - // it's not portable. Even the exact count - // is may change when the underlying implementation - // changes, we'll just make sure at the end we saw - // 'enough'. - // - // cout << "logc.get: " << count; - // show_dbt(cout, dbt); - // cout << "\n"; - // - count++; - flags = DB_NEXT; - } - if (ret != DB_NOTFOUND) { - cerr << "*** FAIL: logc.get returned: " - << DbEnv::strerror(ret) << "\n"; - } - logc->close(0); - - // There has to be at *least* 12 log records, - // 2 for each put, plus for commits. - // - if (count < 12) - cerr << "*** FAIL: not enough log records\n"; - - cout << "TestLogc done.\n"; - } - catch (DbException &dbe) { - cerr << "*** FAIL: " << dbe.what() <<"\n"; - } - return 0; -} |