1
1

Can now start/finalize/restart the run-time without crashing.

Add a unit test for that functionality - will test more fully next week.

This commit was SVN r5806.
Этот коммит содержится в:
Ralph Castain 2005-05-22 03:11:33 +00:00
родитель a419d9be72
Коммит 7b6db8a18f
6 изменённых файлов: 151 добавлений и 18 удалений

Просмотреть файл

@ -387,7 +387,9 @@ int ompi_iffinalize(void)
while (NULL != (intf_ptr = (ompi_if_t*)ompi_list_remove_first(&ompi_if_list))) {
OBJ_RELEASE(intf_ptr);
}
OBJ_DESTRUCT(&ompi_if_list);
#endif
already_done = false;
return OMPI_SUCCESS;
}

Просмотреть файл

@ -49,7 +49,8 @@ OMPI_DECLSPEC orte_proc_info_t orte_process_info = {
/* .proc_session_dir = */ NULL,
/* .sock_stdin = */ NULL,
/* .sock_stdout = */ NULL,
/* .sock_stderr = */ NULL};
/* .sock_stderr = */ NULL
};
int orte_proc_info(void)
@ -83,55 +84,71 @@ int orte_proc_info_finalize(void)
{
if (NULL != orte_process_info.my_name) {
free(orte_process_info.my_name);
orte_process_info.my_name = NULL;
}
if (NULL != orte_process_info.ns_replica_uri) {
free(orte_process_info.ns_replica_uri);
orte_process_info.ns_replica_uri = NULL;
}
if (NULL != orte_process_info.gpr_replica_uri) {
free(orte_process_info.gpr_replica_uri);
orte_process_info.gpr_replica_uri = NULL;
}
if (NULL != orte_process_info.ns_replica) {
free(orte_process_info.ns_replica);
orte_process_info.ns_replica = NULL;
}
if (NULL != orte_process_info.gpr_replica) {
free(orte_process_info.gpr_replica);
orte_process_info.gpr_replica = NULL;
}
if (NULL != orte_process_info.tmpdir_base) {
free(orte_process_info.tmpdir_base);
orte_process_info.tmpdir_base = NULL;
}
if (NULL != orte_process_info.top_session_dir) {
free(orte_process_info.top_session_dir);
orte_process_info.top_session_dir = NULL;
}
if (NULL != orte_process_info.universe_session_dir) {
free(orte_process_info.universe_session_dir);
orte_process_info.universe_session_dir = NULL;
}
if (NULL != orte_process_info.job_session_dir) {
free(orte_process_info.job_session_dir);
orte_process_info.job_session_dir = NULL;
}
if (NULL != orte_process_info.proc_session_dir) {
free(orte_process_info.proc_session_dir);
orte_process_info.proc_session_dir = NULL;
}
if (NULL != orte_process_info.sock_stdin) {
free(orte_process_info.sock_stdin);
orte_process_info.sock_stdin = NULL;
}
if (NULL != orte_process_info.sock_stdout) {
free(orte_process_info.sock_stdout);
orte_process_info.sock_stdout = NULL;
}
if (NULL != orte_process_info.sock_stderr) {
free(orte_process_info.sock_stderr);
orte_process_info.sock_stderr = NULL;
}
orte_process_info.seed = false;
orte_process_info.daemon = false;
return ORTE_SUCCESS;
}

Просмотреть файл

@ -128,32 +128,52 @@ int orte_sys_info(void)
int orte_sys_info_finalize(void)
{
if (NULL != orte_system_info.sysname)
if (NULL != orte_system_info.sysname) {
free(orte_system_info.sysname);
orte_system_info.sysname = NULL;
}
if (NULL != orte_system_info.nodename)
if (NULL != orte_system_info.nodename) {
free(orte_system_info.nodename);
orte_system_info.nodename = NULL;
}
if (NULL != orte_system_info.release)
if (NULL != orte_system_info.release) {
free(orte_system_info.release);
orte_system_info.release = NULL;
}
if (NULL != orte_system_info.version)
if (NULL != orte_system_info.version) {
free(orte_system_info.version);
orte_system_info.version = NULL;
}
if (NULL != orte_system_info.machine)
if (NULL != orte_system_info.machine) {
free(orte_system_info.machine);
orte_system_info.machine = NULL;
}
if (NULL != orte_system_info.path_sep)
if (NULL != orte_system_info.path_sep) {
free(orte_system_info.path_sep);
orte_system_info.path_sep = NULL;
}
if (NULL != orte_system_info.user)
if (NULL != orte_system_info.user) {
free(orte_system_info.user);
orte_system_info.user = NULL;
}
if (NULL != orte_system_info.enviro)
if (NULL != orte_system_info.enviro) {
free(orte_system_info.enviro);
orte_system_info.enviro = NULL;
}
if (NULL != orte_system_info.suffix)
if (NULL != orte_system_info.suffix) {
free(orte_system_info.suffix);
orte_system_info.suffix = NULL;
}
orte_system_info.init = false;
return ORTE_SUCCESS;
}

Просмотреть файл

@ -127,17 +127,40 @@ int orte_univ_info(void)
int orte_univ_info_finalize(void)
{
if (NULL != orte_universe_info.name) free(orte_universe_info.name);
if (NULL != orte_universe_info.name) {
free(orte_universe_info.name);
orte_universe_info.name = NULL;
}
if (NULL != orte_universe_info.host) free(orte_universe_info.host);
if (NULL != orte_universe_info.host) {
free(orte_universe_info.host);
orte_universe_info.host = NULL;
}
if (NULL != orte_universe_info.uid) free(orte_universe_info.uid);
if (NULL != orte_universe_info.uid) {
free(orte_universe_info.uid);
orte_universe_info.uid = NULL;
}
if (NULL != orte_universe_info.scope) free(orte_universe_info.scope);
if (NULL != orte_universe_info.scope) {
free(orte_universe_info.scope);
orte_universe_info.scope = NULL;
}
if (NULL != orte_universe_info.seed_uri) free(orte_universe_info.seed_uri);
if (NULL != orte_universe_info.seed_uri) {
free(orte_universe_info.seed_uri);
orte_universe_info.seed_uri = NULL;
}
if (NULL != orte_universe_info.scriptfile) free(orte_universe_info.scriptfile);
if (NULL != orte_universe_info.scriptfile) {
free(orte_universe_info.scriptfile);
orte_universe_info.scriptfile = NULL;
}
orte_universe_info.init = false;
orte_universe_info.persistence = false;
orte_universe_info.console = false;
orte_universe_info.console_connected = false;
return ORTE_SUCCESS;
}

Просмотреть файл

@ -20,7 +20,8 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/test/support
check_PROGRAMS = \
sigchld
sigchld \
start_shut
TESTS = \
$(check_PROGRAMS)
@ -31,3 +32,10 @@ sigchld_LDADD = \
$(top_builddir)/src/libmpi.la \
$(top_builddir)/test/support/libsupport.a
sigchld_DEPENDENCIES = $(sigchld_LDADD)
start_shut_SOURCES = \
start_shut.c
start_shut_LDADD = \
$(top_builddir)/src/libmpi.la \
$(top_builddir)/test/support/libsupport.a
start_shut_DEPENDENCIES = $(start_shut_LDADD)

63
test/runtime/start_shut.c Обычный файл
Просмотреть файл

@ -0,0 +1,63 @@
/*
* Copyright (c) 2004-2005 The Trustees of Indiana University.
* All rights reserved.
* Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
* All rights reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "orte_config.h"
#include "../src/include/orte_constants.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#include "support.h"
#include "../src/runtime/runtime.h"
#define NUM_ITERS 3
FILE *test_out;
int main (int argc, char* argv[])
{
int rc, i;
test_init("orte_start_shut");
test_out = stderr;
for (i=0; i < NUM_ITERS; i++) {
fprintf(test_out, "test iteration: %d\n", i);
if (ORTE_SUCCESS != (rc = orte_init())) {
fprintf(test_out, "iter %d: couldn't complete init - error code %d\n", i, rc);
exit(1);
}
fprintf(test_out, "\tinit successful\n");
if (ORTE_SUCCESS != (rc = orte_system_finalize())) {
fprintf(test_out, "iter %d: couldn't complete finalize - error %d\n", i, rc);
exit(1);
}
fprintf(test_out, "\tfinalize successful\n");
}
fprintf(test_out, "orte_start_shut: successful\n");
rc = test_finalize();
fclose(test_out);
return rc;
}