- return ret;
-}
-
-/* used to parse the options of command line */
-static void ms_options_parse(int argc, char *argv[])
-{
- int option_index= 0;
- int option_rv;
-
- while ((option_rv= getopt_long(argc, argv, "VhURbaBs:x:T:c:X:v:d:"
- "t:S:F:w:e:o:n:P:p:",
- long_options, &option_index)) != -1) {
-
- switch (option_rv) {
- case 0:
- break;
-
- case OPT_VERSION: /* --version or -V */
- ms_version_command(PROGRAM_NAME);
- break;
-
- case OPT_HELP: /* --help or -h */
- ms_help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION);
- break;
-
- case OPT_SERVERS: /* --servers or -s */
- ms_setting.srv_str= strdup(optarg);
- break;
-
- case OPT_CONCURRENCY: /* --concurrency or -c */
- ms_setting.nconns = atoi(optarg);
- if (ms_setting.nconns <= 0) {
- fprintf(stderr, "Concurrency must be greater than 0.:-)\n");
- exit(1);
- }
- break;
-
- case OPT_EXECUTE_NUMBER: /* --execute_number or -x */
- ms_setting.exec_num = atoll(optarg);
- if (ms_setting.exec_num <= 0) {
- fprintf(stderr, "Execute number must be greater than 0.:-)\n");
- exit(1);
- }
- break;
-
- case OPT_THREAD_NUMBER: /* --threads or -T */
- ms_setting.nthreads = atoi(optarg);
- if (ms_setting.nthreads <= 0) {
- fprintf(stderr, "Threads number must be greater than 0.:-)\n");
- exit(1);
- }
- break;
-
- case OPT_FIXED_LTH: /* --fixed_size or -X */
- ms_setting.fixed_value_size = (size_t)atoi(optarg);
- if (ms_setting.fixed_value_size <= 0
- || ms_setting.fixed_value_size > MAX_VALUE_SIZE) {
- fprintf(stderr, "Value size must be between 0 and 1M.:-)\n");
- exit(1);
- }
- break;
-
- case OPT_VERIFY: /* --verify or -v */
- ms_setting.verify_percent = atof(optarg);
- if (ms_setting.verify_percent <= 0 || ms_setting.verify_percent > 1.0) {
- fprintf(stderr, "Data verification rate must be "
- "greater than 0 and less than 1.0. :-)\n");
- exit(1);
- }
- break;
-
- case OPT_GETS_DIVISION: /* --division or -d */
- ms_setting.mult_key_num = atoi(optarg);
- if (ms_setting.mult_key_num <= 0) {
- fprintf(stderr, "Multi-get key number must be greater than 0.:-)\n");
- exit(1);
- }
- break;
-
- case OPT_TIME: /* --time or -t */
- ms_setting.run_time = (int)ms_parse_time();
- if (ms_setting.run_time == -1) {
- fprintf(stderr, "Please specify the run time. :-)\n"
- "'s' for second, 'm' for minute, 'h' for hour, "
- "'d' for day. e.g.: --time=24h (means 24 hours).\n");
- exit(1);
- }
-
- if (ms_setting.run_time == 0) {
- fprintf(stderr, "Running time can not be 0. :-)\n");
- exit(1);
- }
- break;
-
- case OPT_CONFIG_CMD: /* --cfg_cmd or -F */
- ms_setting.cfg_file = strdup(optarg);
- break;
-
- case OPT_WINDOW_SIZE: /* --win_size or -w */
- ms_setting.win_size = (size_t)ms_parse_size();
- if (ms_setting.win_size == (size_t)-1) {
- fprintf(stderr, "Please specify the item window size. :-)\n"
- "e.g.: --win_size=10k (means 10k task window size).\n");
- exit(1);
- }
- break;
-
- case OPT_UDP: /* --udp or -U*/
- ms_setting.udp = true;
- break;
-
- case OPT_EXPIRE: /* --exp_verify or -e */
- ms_setting.exp_ver_per = atof(optarg);
- if (ms_setting.exp_ver_per <= 0 || ms_setting.exp_ver_per > 1.0) {
- fprintf(stderr, "Expire time verification rate must be "
- "greater than 0 and less than 1.0. :-)\n");
- exit(1);
- }
- break;
-
- case OPT_OVERWRITE: /* --overwrite or -o */
- ms_setting.overwrite_percent = atof(optarg);
- if (ms_setting.overwrite_percent <= 0 || ms_setting.overwrite_percent > 1.0) {
- fprintf(stderr, "Objects overwrite rate must be "
- "greater than 0 and less than 1.0. :-)\n");
- exit(1);
- }
- break;
-
- case OPT_STAT_FREQ: /* --stat_freq or -S */
- ms_setting.stat_freq = (int)ms_parse_time();
- if (ms_setting.stat_freq == -1) {
- fprintf(stderr, "Please specify the frequency of dumping "
- "statistic information. :-)\n"
- "'s' for second, 'm' for minute, 'h' for hour, "
- "'d' for day. e.g.: --time=24h (means 24 hours).\n");
- exit(1);
- }
-
- if (ms_setting.stat_freq == 0) {
- fprintf(stderr, "The frequency of dumping statistic information "
- "can not be 0. :-)\n");
- exit(1);
- }
- break;
-
- case OPT_SOCK_PER_CONN: /* --conn_sock or -n */
- ms_setting.sock_per_conn = atoi(optarg);
- if (ms_setting.sock_per_conn <= 0) {
- fprintf(stderr, "Number of socks of each concurrency "
- "must be greater than 0.:-)\n");
- exit(1);
- }
- break;
-
- case OPT_RECONNECT: /* --reconnect or -R */
- ms_setting.reconnect = true;
- break;
-
- case OPT_VERBOSE: /* --verbose or -b */
- ms_setting.verbose = true;
- break;
-
- case OPT_FACEBOOK_TEST: /* --facebook or -a */
- ms_setting.facebook_test = true;
- break;
-
- case OPT_BINARY_PROTOCOL: /* --binary or -B */
- ms_setting.binary_prot = true;
- break;
-
- case OPT_TPS: /* --tps or -P */
- ms_setting.expected_tps = (int)ms_parse_size();
- if (ms_setting.expected_tps == -1) {
- fprintf(stderr, "Please specify the item expected throughput. :-)\n"
- "e.g.: --tps=10k (means 10k throughput).\n");
- exit(1);
- }
- break;
-
- case OPT_REP_WRITE_SRV: /* --rep_write or -p */
- ms_setting.rep_write_srv = atoi(optarg);
- if (ms_setting.rep_write_srv <= 0) {
- fprintf(stderr, "Number of replication writing server must be greater "
- "than 0.:-)\n");
- exit(1);
- }
- break;
-
- case '?':
- /* getopt_long already printed an error message. */
- exit(1);
-
- default:
- abort();
- }