static SymbolInfo lookup(string var) { SymbolTable *s = symtable; while (s) { SymbolInfo res = lookup_single(var, s); if (res.s == SymbolInfo::OK) return res; s = s->next; } return SymbolInfo(); }
static void io_for_aggregation(test_arg_t *arg, daos_handle_t coh, daos_handle_t ths[], int gs_dkeys, daos_obj_id_t oid, bool update, int *snaps_in, daos_epoch_t *snaps, bool verify_empty) { struct ioreq req; int i, g_dkeys_strlen = 16; const char akey[] = "slip akey"; char dkey[] = "slip dkey"; char *rec, *val, *rec_verify; const char *val_fmt = "slip val%d"; daos_size_t val_size, rec_size; daos_epoch_t epoch; if (verify_empty) print_message("Check empty records (%d)\n", gs_dkeys); else print_message("Check valid records (%d)\n", gs_dkeys); ioreq_init(&req, coh, oid, DAOS_IOD_SINGLE, arg); if (update && !arg->myrank) print_message("Inserting %d keys...\n", gs_dkeys); D_ALLOC(rec, strlen(val_fmt) + g_dkeys_strlen + 1); assert_non_null(rec); D_ALLOC(val, 64); assert_non_null(val); val_size = 64; if (update) { daos_event_t ev; int k = 0; if (snaps_in && arg->async) MUST(daos_event_init(&ev, arg->eq, NULL)); for (i = 0; i < gs_dkeys; i++) { daos_tx_open(arg->coh, &ths[i], NULL); daos_tx_hdl2epoch(ths[i], &epoch); memset(rec, 0, (strlen(val_fmt) + g_dkeys_strlen + 1)); sprintf(rec, val_fmt, epoch); rec_size = strlen(rec); D_DEBUG(DF_MISC, " d-key[%d] '%s' val '%d %s'\n", i, dkey, (int)rec_size, rec); insert_single(dkey, akey, 1100, rec, rec_size, ths[i], &req); if (snaps_in && i == snaps_in[k]) { MUST(daos_cont_create_snap(coh, &snaps[k++], NULL, arg->async ? &ev : NULL)); WAIT_ON_ASYNC(arg, ev); } } if (snaps_in && arg->async) MUST(daos_event_fini(&ev)); } D_ALLOC(rec_verify, strlen(val_fmt) + g_dkeys_strlen + 1); for (i = 0; i < gs_dkeys; i++) { memset(rec_verify, 0, (strlen(val_fmt) + g_dkeys_strlen + 1)); memset(val, 0, 64); if (!verify_empty) { daos_tx_hdl2epoch(ths[i], &epoch); sprintf(rec_verify, val_fmt, epoch); lookup_single(dkey, akey, 1100, val, val_size, ths[i], &req); } else { lookup_empty_single(dkey, akey, 1100, val, val_size, ths[i], &req); } assert_int_equal(req.iod[0].iod_size, strlen(rec_verify)); assert_memory_equal(val, rec_verify, req.iod[0].iod_size); } D_FREE(val); D_FREE(rec_verify); D_FREE(rec); }
Symbol* SymTab::lookup_single( const char * name ) { return lookup_single( m_cur_scope, name ); }