diff --git a/orte/test/system/regex.c b/orte/test/system/regex.c index 1fb3496f3b..335f0a53aa 100644 --- a/orte/test/system/regex.c +++ b/orte/test/system/regex.c @@ -13,16 +13,19 @@ #include "opal/util/argv.h" #include "orte/util/proc_info.h" -#include "orte/util/regex.h" #include "orte/mca/errmgr/errmgr.h" #include "orte/runtime/runtime.h" +#include "orte/mca/regx/regx.h" +#include "orte/mca/regx/base/base.h" int main(int argc, char **argv) { int rc; - char *regex, *save; + char *regex, **nodelist; char **nodes=NULL; int i; + opal_pointer_array_t *node_pool; + orte_node_t *nptr; if (argc < 1 || NULL == argv[1]) { fprintf(stderr, "usage: regex \n"); @@ -31,10 +34,19 @@ int main(int argc, char **argv) orte_init(&argc, &argv, ORTE_PROC_NON_MPI); + if (ORTE_SUCCESS != (rc = mca_base_framework_open(&orte_regx_base_framework, 0))) { + ORTE_ERROR_LOG(rc); + return rc; + } + if (ORTE_SUCCESS != (rc = orte_regx_base_select())) { + ORTE_ERROR_LOG(rc); + return rc; + } + if (NULL != strchr(argv[1], '[')) { /* given a regex to analyze */ fprintf(stderr, "ANALYZING REGEX: %s\n", argv[1]); - if (ORTE_SUCCESS != (rc = orte_regex_extract_node_names(argv[1], &nodes))) { + if (ORTE_SUCCESS != (rc = orte_regx.extract_node_names(argv[1], &nodes))) { ORTE_ERROR_LOG(rc); } for (i=0; NULL != nodes[i]; i++) { @@ -45,12 +57,30 @@ int main(int argc, char **argv) return 0; } - save = strdup(argv[1]); - if (ORTE_SUCCESS != (rc = orte_regex_create(save, ®ex))) { + node_pool = OBJ_NEW(opal_pointer_array_t); + nodelist = opal_argv_split(argv[1], ','); + for (i=0; NULL != nodelist[i]; i++) { + orte_proc_t *daemon = NULL; + + nptr = OBJ_NEW(orte_node_t); + nptr->name = strdup(nodelist[i]); + daemon = OBJ_NEW(orte_proc_t); + daemon->name.jobid = 123; + daemon->name.vpid = i; + nptr->daemon = daemon; + + nptr->index = opal_pointer_array_add(node_pool, nptr); + } + opal_argv_free(nodelist); + + + if (ORTE_SUCCESS != (rc = orte_regx.nidmap_create(node_pool, ®ex))) { ORTE_ERROR_LOG(rc); } else { + char *vpids = strchr(regex, '@'); + vpids[0] = '\0'; fprintf(stderr, "REGEX: %s\n", regex); - if (ORTE_SUCCESS != (rc = orte_regex_extract_node_names(regex, &nodes))) { + if (ORTE_SUCCESS != (rc = orte_regx.extract_node_names(regex, &nodes))) { ORTE_ERROR_LOG(rc); } free(regex); @@ -63,5 +93,10 @@ int main(int argc, char **argv) } free(regex); } - free(save); + + for (i=0; (nptr = opal_pointer_array_get_item(node_pool, i)) != NULL; i++) { + free(nptr->name); + OBJ_RELEASE(nptr->daemon); + } + OBJ_RELEASE(node_pool); }