Esempio n. 1
0
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();
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
Symbol* SymTab::lookup_single( const char * name )
{
	return lookup_single( m_cur_scope, name );
}