• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/timemachine/db-4.7.25.NC/build_vxworks/test_micro/
1/*
2 * $Id: b_txn.c,v 1.11 2007/12/21 13:58:30 bostic Exp $
3 */
4#include "bench.h"
5
6static int b_txn_usage(void);
7
8int
9b_txn(int argc, char *argv[])
10{
11	extern char *optarg;
12	extern int optind, __db_getopt_reset;
13	DB_ENV *dbenv;
14	DB_TXN *txn;
15	int tabort, ch, i, count;
16
17	count = 1000;
18	tabort = 0;
19	__db_getopt_reset = 1;
20	while ((ch = getopt(argc, argv, "ac:")) != EOF)
21		switch (ch) {
22		case 'a':
23			tabort = 1;
24			break;
25		case 'c':
26			count = atoi(optarg);
27			break;
28		case '?':
29		default:
30			return (b_txn_usage());
31		}
32	argc -= optind;
33	argv += optind;
34	if (argc != 0)
35		return (b_txn_usage());
36
37	/* Create the environment. */
38	DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
39	dbenv->set_errfile(dbenv, stderr);
40#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 1
41	DB_BENCH_ASSERT(dbenv->open(dbenv, TESTDIR,
42	    NULL, DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
43	    DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE, 0666) == 0);
44#else
45	DB_BENCH_ASSERT(dbenv->open(dbenv, TESTDIR,
46	    DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
47	    DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE, 0666) == 0);
48#endif
49
50	/* Start and commit/abort a transaction count times. */
51	TIMER_START;
52	if (tabort)
53		for (i = 0; i < count; ++i) {
54#if DB_VERSION_MAJOR < 4
55			DB_BENCH_ASSERT(txn_begin(dbenv, NULL, &txn, 0) == 0);
56			DB_BENCH_ASSERT(txn_abort(txn) == 0);
57#else
58			DB_BENCH_ASSERT(
59			    dbenv->txn_begin(dbenv, NULL, &txn, 0) == 0);
60			DB_BENCH_ASSERT(txn->abort(txn) == 0);
61#endif
62		}
63	else
64		for (i = 0; i < count; ++i) {
65#if DB_VERSION_MAJOR < 4
66			DB_BENCH_ASSERT(txn_begin(dbenv, NULL, &txn, 0) == 0);
67			DB_BENCH_ASSERT(txn_commit(txn, 0) == 0);
68#else
69			DB_BENCH_ASSERT(
70			    dbenv->txn_begin(dbenv, NULL, &txn, 0) == 0);
71			DB_BENCH_ASSERT(txn->commit(txn, 0) == 0);
72#endif
73		}
74	TIMER_STOP;
75
76	printf("# %d empty transaction start/%s pairs\n",
77	    count, tabort ? "abort" : "commit");
78	TIMER_DISPLAY(count);
79
80	DB_BENCH_ASSERT(dbenv->close(dbenv, 0) == 0);
81
82	return (0);
83}
84
85static int
86b_txn_usage()
87{
88	(void)fprintf(stderr, "usage: b_txn [-a] [-c count]\n");
89	return (EXIT_FAILURE);
90}
91