rc_t ShoreYCSBEnv::run_one_xct(Request* prequest) { assert (prequest); if(_start_imbalance > 0 && !_bAlarmSet) { CRITICAL_SECTION(alarm_cs, _alarm_lock); if(!_bAlarmSet) { alarm(_start_imbalance); _bAlarmSet = true; } } // Only one xct type for now prequest->set_type(XCT_YCSB_SIMPLE); switch (prequest->type()) { case XCT_YCSB_SIMPLE: if (URand(1,100) <= _update_freq) { return (run_update(prequest)); } else { return (run_read(prequest)); } default: assert (0); // UNKNOWN TRX-ID } return (RCOK); }
int main(int argc, const char** argv) { ndb_init(); int verbose = 1; int optind = 0; struct getargs args[1+P_MAX] = { { "verbose", 'v', arg_flag, &verbose, "Print verbose status", "verbose" } }; const int num_args = 1 + P_MAX; int i; for(i = 0; i<P_MAX; i++) { args[i+1].long_name = g_paramters[i].name; args[i+1].short_name = * g_paramters[i].name; args[i+1].type = arg_integer; args[i+1].value = &g_paramters[i].value; BaseString tmp; tmp.assfmt("min: %d max: %d", g_paramters[i].min, g_paramters[i].max); args[i+1].help = strdup(tmp.c_str()); args[i+1].arg_help = 0; } if(getarg(args, num_args, argc, argv, &optind)) { arg_printusage(args, num_args, argv[0], "tabname1 tabname2 ..."); return NDBT_WRONGARGS; } myRandom48Init(NdbTick_CurrentMillisecond()); memset(g_times, 0, sizeof(g_times)); Ndb_cluster_connection con; if(con.connect(12, 5, 1)) { return NDBT_ProgramExit(NDBT_FAILED); } g_ndb = new Ndb(&con, "TEST_DB"); if(g_ndb->init() != 0) { g_err << "init() failed" << endl; goto error; } if(g_ndb->waitUntilReady() != 0) { g_err << "Wait until ready failed" << endl; goto error; } for(i = optind; i<argc; i++) { const char * T = argv[i]; g_info << "Testing " << T << endl; BaseString::snprintf(g_table, sizeof(g_table), T); BaseString::snprintf(g_ordered, sizeof(g_ordered), "IDX_O_%s", T); BaseString::snprintf(g_unique, sizeof(g_unique), "IDX_U_%s", T); if(create_table()) goto error; if(load_table()) goto error; for(int l = 0; l<g_paramters[P_LOOPS].value; l++) { for(int j = 0; j<P_OP_TYPES; j++) { g_paramters[P_OPER].value = j; if(run_read()) goto error; } } print_result(); } if(g_ndb) delete g_ndb; return NDBT_OK; error: if(g_ndb) delete g_ndb; return NDBT_FAILED; }