in fabtests/ubertest/config.c [252:413]
static int ft_parse_num(char *str, int len, struct key_t *key, void *buf)
{
if (!strncmp(key->str, "test_type", strlen("test_type"))) {
TEST_ENUM_SET_N_RETURN(str, len, FT_TEST_LATENCY, enum ft_test_type, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_TEST_BANDWIDTH, enum ft_test_type, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_TEST_UNIT, enum ft_test_type, buf);
FT_ERR("Unknown test_type");
} else if (!strncmp(key->str, "class_function", strlen("class_function"))) {
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_SEND, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_SENDV, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_SENDMSG, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_INJECT, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_INJECTDATA, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_SENDDATA, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_WRITE, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_WRITEV, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_WRITEMSG, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_WRITEDATA, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_INJECT_WRITE, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_INJECT_WRITEDATA, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_READ, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_READV, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_READMSG, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_ATOMIC, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_ATOMICV, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_ATOMICMSG, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_INJECT_ATOMIC, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_FETCH_ATOMIC, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_FETCH_ATOMICV, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_FETCH_ATOMICMSG, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_COMPARE_ATOMIC, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_COMPARE_ATOMICV, enum ft_class_function, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_FUNC_COMPARE_ATOMICMSG, enum ft_class_function, buf);
FT_ERR("Unknown class_function");
} else if (!strncmp(key->str, "ep_type", strlen("ep_type"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_EP_MSG, enum fi_ep_type, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_EP_DGRAM, enum fi_ep_type, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_EP_RDM, enum fi_ep_type, buf);
FT_ERR("Unknown ep_type");
} else if (!strncmp(key->str, "av_type", strlen("av_type"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_AV_MAP, enum fi_av_type, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_AV_TABLE, enum fi_av_type, buf);
FT_ERR("Unknown av_type");
} else if (!strncmp(key->str, "test_class", strlen("test_class"))) {
TEST_SET_N_RETURN(str, len, "FT_CAP_MSG", FT_CAP_MSG, uint64_t, buf);
TEST_SET_N_RETURN(str, len, "FT_CAP_TAGGED", FT_CAP_TAGGED, uint64_t, buf);
TEST_SET_N_RETURN(str, len, "FT_CAP_RMA", FT_CAP_RMA, uint64_t, buf);
TEST_SET_N_RETURN(str, len, "FT_CAP_ATOMIC", FT_CAP_ATOMIC, uint64_t, buf);
FT_ERR("Unknown test class");
} else if (!strncmp(key->str, "eq_wait_obj", strlen("eq_wait_obj")) ||
!strncmp(key->str, "cq_wait_obj", strlen("cq_wait_obj")) ||
!strncmp(key->str, "cntr_wait_obj", strlen("cntr_wait_obj"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_WAIT_NONE, enum fi_wait_obj, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_WAIT_UNSPEC, enum fi_wait_obj, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_WAIT_FD, enum fi_wait_obj, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_WAIT_MUTEX_COND, enum fi_wait_obj, buf);
FT_ERR("Unknown wait_obj");
} else if (!strncmp(key->str, "op", strlen("op"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_MIN, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_MAX, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_SUM, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_PROD, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_LOR, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_LAND, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_BOR, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_BAND, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_LXOR, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_BXOR, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_ATOMIC_READ, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_ATOMIC_WRITE, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_CSWAP, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_CSWAP_NE, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_CSWAP_LE, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_CSWAP_LT, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_CSWAP_GE, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_CSWAP_GT, enum fi_op, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_MSWAP, enum fi_op, buf);
FT_ERR("Unknown op");
} else if (!strncmp(key->str, "datatype", strlen("datatype"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_INT8, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_UINT8, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_INT16, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_UINT16, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_INT32, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_UINT32, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_INT64, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_UINT64, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_FLOAT, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_DOUBLE, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_FLOAT_COMPLEX, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_DOUBLE_COMPLEX, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_LONG_DOUBLE, enum fi_datatype, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_LONG_DOUBLE_COMPLEX, enum fi_datatype, buf);
FT_ERR("Unknown datatype");
} else if (!strncmp(key->str, "msg_flags", strlen("msg_flags"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_REMOTE_CQ_DATA, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_COMPLETION, uint64_t, buf);
FT_ERR("Unknown message flag");
} else if (!strncmp(key->str, "mr_mode", strlen("mr_mode"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_MR_LOCAL, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_MR_VIRT_ADDR, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_MR_ALLOCATED, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_MR_PROV_KEY, uint64_t, buf);
FT_ERR("Unknown MR mode");
} else if (!strncmp(key->str, "progress", strlen("progress"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_PROGRESS_MANUAL, int, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_PROGRESS_AUTO, int, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_PROGRESS_UNSPEC, int, buf);
FT_ERR("Unknown progress mode");
} else if (!strncmp(key->str, "threading", strlen("threading"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_THREAD_UNSPEC, int, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_THREAD_SAFE, int, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_THREAD_FID, int, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_THREAD_DOMAIN, int, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_THREAD_COMPLETION, int, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_THREAD_ENDPOINT, int, buf);
FT_ERR("Unknown threading level");
} else if (!strncmp(key->str, "constant_caps", strlen("constant_caps"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_RMA, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_MSG, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_SEND, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_RECV, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_READ, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_WRITE, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_REMOTE_READ, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_REMOTE_WRITE, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_TAGGED, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_DIRECTED_RECV, uint64_t, buf);
FT_ERR("Unknown caps");
} else if (!strncmp(key->str, "rx_cq_bind_flags", strlen("rx_cq_bind_flags"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_SELECTIVE_COMPLETION, uint64_t, buf);
FT_ERR("Unknown rx_cq_bind_flags");
} else if (!strncmp(key->str, "tx_cq_bind_flags", strlen("tx_cq_bind_flags"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_SELECTIVE_COMPLETION, uint64_t, buf);
FT_ERR("Unknown tx_cq_bind_flags");
} else if (!strncmp(key->str, "rx_op_flags", strlen("rx_op_flags"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_COMPLETION, uint64_t, buf);
FT_ERR("Unknown rx_op_flags");
} else if (!strncmp(key->str, "tx_op_flags", strlen("tx_op_flags"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_COMPLETION, uint64_t, buf);
FT_ERR("Unknown tx_op_flags");
} else if (!strncmp(key->str, "comp_type", strlen("comp_type"))) {
TEST_ENUM_SET_N_RETURN(str, len, FT_COMP_QUEUE, enum ft_comp_type, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_COMP_CNTR, enum ft_comp_type, buf);
TEST_ENUM_SET_N_RETURN(str, len, FT_COMP_ALL, enum ft_comp_type, buf);
FT_ERR("Unknown comp_type");
} else if (!strncmp(key->str, "mode", strlen("mode"))) {
TEST_ENUM_SET_N_RETURN(str, len, FI_CONTEXT, uint64_t, buf);
TEST_ENUM_SET_N_RETURN(str, len, FI_RX_CQ_DATA, uint64_t, buf);
FT_ERR("Unsupported mode bit");
} else if (!strncmp(key->str, "test_flags", strlen("test_flags"))) {
TEST_SET_N_RETURN(str, len, "FT_FLAG_QUICKTEST", FT_FLAG_QUICKTEST, uint64_t, buf);
} else {
FT_ERR("Unknown test configuration key");
}
return -1;
}