|
Packit |
0848f5 |
C -*- Mode: Fortran; -*-
|
|
Packit |
0848f5 |
C
|
|
Packit |
0848f5 |
C (C) 2003 by Argonne National Laboratory.
|
|
Packit |
0848f5 |
C See COPYRIGHT in top-level directory.
|
|
Packit |
0848f5 |
C
|
|
Packit |
0848f5 |
program main
|
|
Packit |
0848f5 |
implicit none
|
|
Packit |
0848f5 |
include 'mpif.h'
|
|
Packit |
0848f5 |
integer errs
|
|
Packit |
0848f5 |
character*(MPI_MAX_PORT_NAME) port_name
|
|
Packit |
0848f5 |
character*(MPI_MAX_PORT_NAME) port_name_out
|
|
Packit |
0848f5 |
character*(256) serv_name
|
|
Packit |
0848f5 |
integer merr, mclass
|
|
Packit |
0848f5 |
character*(MPI_MAX_ERROR_STRING) errmsg
|
|
Packit |
0848f5 |
integer msglen, rank
|
|
Packit |
0848f5 |
integer ierr
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
errs = 0
|
|
Packit |
0848f5 |
call MTest_Init( ierr )
|
|
Packit |
0848f5 |
call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr )
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
C Note that according to the MPI standard, port_name must
|
|
Packit |
0848f5 |
C have been created by MPI_Open_port. For current testing
|
|
Packit |
0848f5 |
C purposes, we'll use a fake name. This test should eventually use
|
|
Packit |
0848f5 |
C a valid name from Open_port
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
port_name = 'otherhost:122'
|
|
Packit |
0848f5 |
serv_name = 'MyTest'
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
call MPI_Comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN,
|
|
Packit |
0848f5 |
$ ierr )
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
if (rank .eq. 0) then
|
|
Packit |
0848f5 |
merr = -1
|
|
Packit |
0848f5 |
call MPI_Publish_name( serv_name, MPI_INFO_NULL, port_name,
|
|
Packit |
0848f5 |
$ merr )
|
|
Packit |
0848f5 |
if (merr .ne. MPI_SUCCESS) then
|
|
Packit |
0848f5 |
errs = errs + 1
|
|
Packit |
0848f5 |
call MPI_Error_string( merr, errmsg, msglen, ierr )
|
|
Packit |
0848f5 |
print *, "Error in Publish_name ", errmsg(1:msglen)
|
|
Packit |
0848f5 |
endif
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
call MPI_Barrier(MPI_COMM_WORLD, ierr )
|
|
Packit |
0848f5 |
call MPI_Barrier(MPI_COMM_WORLD, ierr )
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
merr = -1
|
|
Packit |
0848f5 |
call MPI_Unpublish_name( serv_name, MPI_INFO_NULL, port_name,
|
|
Packit |
0848f5 |
$ merr)
|
|
Packit |
0848f5 |
if (merr .ne. MPI_SUCCESS) then
|
|
Packit |
0848f5 |
errs = errs + 1
|
|
Packit |
0848f5 |
call MPI_Error_string( merr, errmsg, msglen, ierr )
|
|
Packit |
0848f5 |
print *, "Error in Unpublish name ", errmsg(1:msglen)
|
|
Packit |
0848f5 |
endif
|
|
Packit |
0848f5 |
else
|
|
Packit |
0848f5 |
call MPI_Barrier(MPI_COMM_WORLD, ierr )
|
|
Packit |
0848f5 |
merr = -1
|
|
Packit |
0848f5 |
call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out,
|
|
Packit |
0848f5 |
$ merr)
|
|
Packit |
0848f5 |
if (merr .ne. MPI_SUCCESS) then
|
|
Packit |
0848f5 |
errs = errs + 1
|
|
Packit |
0848f5 |
call MPI_Error_string( merr, errmsg, msglen, ierr )
|
|
Packit |
0848f5 |
print *, "Error in Lookup name", errmsg(1:msglen)
|
|
Packit |
0848f5 |
else
|
|
Packit |
0848f5 |
if (port_name .ne. port_name_out) then
|
|
Packit |
0848f5 |
errs = errs + 1
|
|
Packit |
0848f5 |
print *, "Lookup name returned the wrong value (",
|
|
Packit |
0848f5 |
$ port_name_out, "), expected (", port_name, ")"
|
|
Packit |
0848f5 |
endif
|
|
Packit |
0848f5 |
endif
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
call MPI_Barrier(MPI_COMM_WORLD, ierr )
|
|
Packit |
0848f5 |
endif
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
call MPI_Barrier(MPI_COMM_WORLD, ierr )
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
merr = -1
|
|
Packit |
0848f5 |
call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out,
|
|
Packit |
0848f5 |
$ merr )
|
|
Packit |
0848f5 |
if (merr .eq. MPI_SUCCESS) then
|
|
Packit |
0848f5 |
errs = errs + 1
|
|
Packit |
0848f5 |
print *, "Lookup name returned name after it was unpublished"
|
|
Packit |
0848f5 |
else
|
|
Packit |
0848f5 |
C Must be class MPI_ERR_NAME
|
|
Packit |
0848f5 |
call MPI_Error_class( merr, mclass, ierr )
|
|
Packit |
0848f5 |
if (mclass .ne. MPI_ERR_NAME) then
|
|
Packit |
0848f5 |
errs = errs + 1
|
|
Packit |
0848f5 |
call MPI_Error_string( merr, errmsg, msglen, ierr )
|
|
Packit |
0848f5 |
print *, "Lookup name returned the wrong error class
|
|
Packit |
0848f5 |
$ (",mclass,"), msg ", errmsg
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
endif
|
|
Packit |
0848f5 |
endif
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
call MTest_Finalize( errs )
|
|
Packit |
0848f5 |
call MPI_Finalize( ierr )
|
|
Packit |
0848f5 |
end
|