int main(int argc, char *argv[]) { u_int readers, writers; int ch, cnt, runs; char *config_open, *working_dir; if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL) progname = argv[0]; else ++progname; config_open = NULL; working_dir = NULL; ftype = ROW; log_print = 0; multiple_files = 0; nkeys = 1000; max_nops = 10000; readers = 10; runs = 1; session_per_op = 0; vary_nops = 0; writers = 10; while ((ch = __wt_getopt( progname, argc, argv, "C:Fk:h:Ll:n:R:r:St:vW:")) != EOF) switch (ch) { case 'C': /* wiredtiger_open config */ config_open = __wt_optarg; break; case 'F': /* multiple files */ multiple_files = 1; break; case 'h': working_dir = __wt_optarg; break; case 'k': /* rows */ nkeys = (u_int)atoi(__wt_optarg); break; case 'L': /* log print per operation */ log_print = 1; break; case 'l': /* log */ if ((logfp = fopen(__wt_optarg, "w")) == NULL) { fprintf(stderr, "%s: %s\n", __wt_optarg, strerror(errno)); return (EXIT_FAILURE); } break; case 'n': /* operations */ max_nops = (u_int)atoi(__wt_optarg); break; case 'R': readers = (u_int)atoi(__wt_optarg); break; case 'r': /* runs */ runs = atoi(__wt_optarg); break; case 'S': /* new session per operation */ session_per_op = 1; break; case 't': switch (__wt_optarg[0]) { case 'f': ftype = FIX; break; case 'r': ftype = ROW; break; case 'v': ftype = VAR; break; default: return (usage()); } break; case 'v': /* vary operation count */ vary_nops = 1; break; case 'W': writers = (u_int)atoi(__wt_optarg); break; default: return (usage()); } argc -= __wt_optind; argv += __wt_optind; if (argc != 0) return (usage()); testutil_work_dir_from_path(home, 512, working_dir); if (vary_nops && !multiple_files) { fprintf(stderr, "Variable op counts only supported with multiple tables\n"); return (usage()); } /* Clean up on signal. */ (void)signal(SIGINT, onint); printf("%s: process %" PRIu64 "\n", progname, (uint64_t)getpid()); for (cnt = 1; runs == 0 || cnt <= runs; ++cnt) { printf( " %d: %u readers, %u writers\n", cnt, readers, writers); shutdown(); /* Clean up previous runs */ wt_connect(config_open); /* WiredTiger connection */ if (rw_start(readers, writers)) /* Loop operations */ return (EXIT_FAILURE); stats(); /* Statistics */ wt_shutdown(); /* WiredTiger shut down */ } return (0); }
int main(int argc, char *argv[]) { u_int readers, writers; int ch, cnt, runs; char *config_open; if ((progname = strrchr(argv[0], '/')) == NULL) progname = argv[0]; else ++progname; config_open = NULL; ftype = ROW; nkeys = 1000; nops = 10000; readers = 10; runs = 1; session_per_op = 0; writers = 10; while ((ch = getopt(argc, argv, "C:k:l:n:R:r:St:W:")) != EOF) switch (ch) { case 'C': /* wiredtiger_open config */ config_open = optarg; break; case 'k': /* rows */ nkeys = (u_int)atoi(optarg); break; case 'l': /* log */ if ((logfp = fopen(optarg, "w")) == NULL) { fprintf(stderr, "%s: %s\n", optarg, strerror(errno)); return (EXIT_FAILURE); } break; case 'n': /* operations */ nops = (u_int)atoi(optarg); break; case 'R': readers = (u_int)atoi(optarg); break; case 'r': /* runs */ runs = atoi(optarg); break; case 'S': /* new session per operation */ session_per_op = 1; break; case 't': switch (optarg[0]) { case 'f': ftype = FIX; break; case 'r': ftype = ROW; break; case 'v': ftype = VAR; break; default: return (usage()); } break; case 'W': writers = (u_int)atoi(optarg); break; default: return (usage()); } argc -= optind; argv += optind; if (argc != 0) return (usage()); /* Clean up on signal. */ (void)signal(SIGINT, onint); printf("%s: process %" PRIu64 "\n", progname, (uint64_t)getpid()); for (cnt = 1; runs == 0 || cnt <= runs; ++cnt) { printf( " %d: %u readers, %u writers\n", cnt, readers, writers); shutdown(); /* Clean up previous runs */ wt_connect(config_open); /* WiredTiger connection */ load(); /* Load initial records */ /* Loop operations */ if (rw_start(readers, writers)) return (EXIT_FAILURE); stats(); /* Statistics */ wt_shutdown(); /* WiredTiger shut down */ } return (0); }