Blame test/mpi/ToDo

Packit Service c5cf8c
Tests to create or code to modify
Packit Service c5cf8c
This list is based on the results of the coverage analysis.  Because of errors 
Packit Service c5cf8c
in the GNU coverage code (it appears to lose data if two processes 
Packit Service c5cf8c
simulateously update the same coverage data file), there may be some 
Packit Service c5cf8c
items listed here that are already sufficiently tested.
Packit Service c5cf8c
Packit Service c5cf8c
(completed tests moved below)
Packit Service c5cf8c
Packit Service c5cf8c
6. Collective code:
Packit Service c5cf8c
   a) make sure that all algorithms are covered: short and long
Packit Service c5cf8c
      messages; differing numbers of processes, including non powers
Packit Service c5cf8c
      of two.  May only need to further divide the Intel tests to 
Packit Service c5cf8c
      include collective tests for varying numbers of processes.
Packit Service c5cf8c
Packit Service c5cf8c
        opband types: logical (f77), unsigned, long, long_long, 
Packit Service c5cf8c
		unsigned long, short, unsigned short, char, unsigned char,
Packit Service c5cf8c
		byte
Packit Service c5cf8c
	opbor types: int, unsigned, long, long long, unsigned long, short,
Packit Service c5cf8c
		unsigned short, char, unsigned char, byte
Packit Service c5cf8c
	opbxor types: int, unsigned, long, long long, unsigned long, short, 
Packit Service c5cf8c
		unsigned short, char, unsigned char, byte
Packit Service c5cf8c
	opland types: logical (f77), integer (f77)
Packit Service c5cf8c
	oplor types: logical (f77), integer (f77)
Packit Service c5cf8c
	oplxor types: int, unsigned, long, long long, unsigned long,
Packit Service c5cf8c
		short, unsigned short, char, unsigned char, float, double,
Packit Service c5cf8c
		long double, logical (f77), integer (f77)
Packit Service c5cf8c
Packit Service c5cf8c
	opmax types: unsigned, long, long long, unsigned long, short, 
Packit Service c5cf8c
		unsigned short, char, unsigned char, float, double, 
Packit Service c5cf8c
		long double
Packit Service c5cf8c
	opmaxloc types: (none tested?)
Packit Service c5cf8c
	opmin types: (none tested?)
Packit Service c5cf8c
	opminloc types: 2int, float_int, long_int, short_int, double_int,
Packit Service c5cf8c
		longdouble_int, 2real (f77), 2double_precision (f77)
Packit Service c5cf8c
Packit Service c5cf8c
	opprod types: long long, short, unsigned short, char, unsigned char, 
Packit Service c5cf8c
		long double, double complex
Packit Service c5cf8c
Packit Service c5cf8c
	opsum types: unsigned, long, long long, unsigned long, short, 
Packit Service c5cf8c
		unsigned short, char, unsigned char, float, double,
Packit Service c5cf8c
		long double, complex (f77), double complex (f77)
Packit Service c5cf8c
Packit Service c5cf8c
	red_scat: differnt alg lengths
Packit Service c5cf8c
Packit Service c5cf8c
	reduce: run with non powers of two, both odd and even values
Packit Service c5cf8c
		run with root in various places, particularly with non
Packit Service c5cf8c
		power of two nodes.
Packit Service c5cf8c
	
Packit Service c5cf8c
   b) Intercommunicator collective tests are needed.  These could be
Packit Service c5cf8c
      implemented by using the non-collective definition code; e.g.,
Packit Service c5cf8c
      the "trivial" implementation in terms of MPI_Send and MPI_Recv.
Packit Service c5cf8c
      The tests should use intercomms with both the same and different
Packit Service c5cf8c
      sized groups.
Packit Service c5cf8c
	  Reduce_scatter
Packit Service c5cf8c
	  Alltoallw
Packit Service c5cf8c
   c) Tests for MPI_IN_PLACE are needed
Packit Service c5cf8c
   d) Tests for sendcounts of 0 are needed, particularly in the xxxv functions
Packit Service c5cf8c
      and in the allxxx functions (e.g., alltoallv for ghostpoint exchange)
Packit Service c5cf8c
Packit Service c5cf8c
7. Set and get name for comm, predefined name MPI_COMM_PARENT.  
Packit Service c5cf8c
   Also, test *ALL* datatype names.
Packit Service c5cf8c
9. Check the use of error macros in intercomm create and merge; also
Packit Service c5cf8c
   consider adding tests that would exercise this code.
Packit Service c5cf8c
10. Datatype info routines: get address (use address test), get count
Packit Service c5cf8c
    (for partial datatype; use example from MPI book), get elements 
Packit Service c5cf8c
    (for partial datatype, done with pack and datatype)
Packit Service c5cf8c
11. pack (see lines 184-208 in pack.c)
Packit Service c5cf8c
12. status_set_elements - combine with get_elements to ensure that the 
Packit Service c5cf8c
    correct values are set.
Packit Service c5cf8c
13. create_hindexed, create_hvector, and create-struct.  These can use
Packit Service c5cf8c
    the MPI-1 tests, with the data-types suitably updated.  Add these
Packit Service c5cf8c
    to the Intel tests. - done for C.  Need to do Fortran (needs
Packit Service c5cf8c
    Fortran address_kind type)
Packit Service c5cf8c
15. type_extent - check lines 99/100 (in coverage file)
Packit Service c5cf8c
16. type util - make sure that setup of builtins is performed.
Packit Service c5cf8c
16a. Type free, get-extent, true_extent for derived types.  Make sure all
Packit Service c5cf8c
    allocated space is freed
Packit Service c5cf8c
17a Add tests for comm call errhandler
Packit Service c5cf8c
18. comm set,get errhandler - use MPI-1 versions.  Also apply to win, file.
Packit Service c5cf8c
    Also user-defined errhandlers.  Make sure references work correctly (e.g.,
Packit Service c5cf8c
    if freed while still in communicator, or freed after communicator is 
Packit Service c5cf8c
    freed).
Packit Service c5cf8c
19. errutil.c - make sure MPIR_Err_preinit protected in error macros.
Packit Service c5cf8c
	Test by compiling with error checking off, then check symbol
Packit Service c5cf8c
	table of library
Packit Service c5cf8c
20. (win set/get/call errhandler) - see 18
Packit Service c5cf8c
22. Ensure group diff error checks are error macro protected
Packit Service c5cf8c
24. group intersection error check ; group union error check
Packit Service c5cf8c
26. ensure that attributes on comm self are freed in
Packit Service c5cf8c
    the correct order by MPI_Finalize (see MPI-2 spec; comm_self is 
Packit Service c5cf8c
    freed FIRST, then the order is undefined).  In particular, MPI_Finalized
Packit Service c5cf8c
    returns false in the comm_self attribute delete functions.
Packit Service c5cf8c
27. Add tests for finalized, initthread, ismain, querythread, version
Packit Service c5cf8c
    -- all but finalized and ismain from another thread
Packit Service c5cf8c
29. Add tests for generalized requests, including cancelling a generalized
Packit Service c5cf8c
    request.
Packit Service c5cf8c
30. Add tests for Request_free for regular send or receive requests.
Packit Service c5cf8c
34. Topology tests:
Packit Service c5cf8c
    graph-create - n == 0
Packit Service c5cf8c
    topoutil - see line 92+; add test (dup communicator with topology)
Packit Service c5cf8c
35. Ixsend to self.
Packit Service c5cf8c
      If thread multiple, all MPI_Issend, MPI_Ssend to self, with no posted
Packit Service c5cf8c
      receive when send initiated.
Packit Service c5cf8c
38. Add tests for all RMA (get, put, accumulate, 
Packit Service c5cf8c
    win_complete, win_test, win_lock, win_unlock, win_post, win_start,
Packit Service c5cf8c
    win_wait)
Packit Service c5cf8c
39. Add tests for dynamic processes
Packit Service c5cf8c
    open_port, close_port, accept, connect, spawn, spawn multiple
Packit Service c5cf8c
40. Add tests for all of MPI-IO not already covered.
Packit Service c5cf8c
    (These may now be covered by the John May test)
Packit Service c5cf8c
    These include the routines in the files (entire file if no notes on that
Packit Service c5cf8c
    file):
Packit Service c5cf8c
    open.c (a few lines, including if(!rank)ADIO_Set_shared_fp
Packit Service c5cf8c
       filenames with filesystem, e.g., nfs:name
Packit Service c5cf8c
       Open in APPEND mode
Packit Service c5cf8c
    delete.c
Packit Service c5cf8c
       filenames with filesystem
Packit Service c5cf8c
    get_view.c (roughly lines 99ff, at Type_contiguous)
Packit Service c5cf8c
    set_view.c (for MPI_DISPLACEMENT_CURRENT)
Packit Service c5cf8c
    set_info.c
Packit Service c5cf8c
    seek_sh.c (for MPI_SEEK_CUR)
Packit Service c5cf8c
    read_sh/write_sh
Packit Service c5cf8c
        atomicity && file system NOT NFS
Packit Service c5cf8c
41. Delete/free attributes on datatypes, windows; Fortran versions (to 
Packit Service c5cf8c
    get int instead of pointer-to-int)
Packit Service c5cf8c
42. Keyval free (F90 and C++)
Packit Service c5cf8c
43. Type create indexed block
Packit Service c5cf8c
44. Type create resized
Packit Service c5cf8c
45. User-defined error handler invoked:
Packit Service c5cf8c
   a. On comm from Fortran on communicator
Packit Service c5cf8c
   b. On win from C++ and Fortran
Packit Service c5cf8c
46. Error output strings involving:
Packit Service c5cf8c
   a. MPI_MODE_NOSTORE errors
Packit Service c5cf8c
   b. MPI_MODE_NOCHECK errors
Packit Service c5cf8c
   c. MPI_MODE_NOPUT errors
Packit Service c5cf8c
   d. MPI_MODE_NOSUCCEED errors
Packit Service c5cf8c
   e. MPI_MODE_NOPRECEED errors
Packit Service c5cf8c
   f. Unknown assert value in window mode (as above)
Packit Service c5cf8c
   g. Datatype = 0x0
Packit Service c5cf8c
   h. MPI_Op = MPI_REPLACE
Packit Service c5cf8c
   i. MPI_UNDEFINED
Packit Service c5cf8c
   j. MPI_IN_PLACE
Packit Service c5cf8c
   k. MPI_FILE_NULL
Packit Service c5cf8c
   l. MPI_WIN_NULL
Packit Service c5cf8c
   m. MPI_REQUEST_NULL
Packit Service c5cf8c
   o. MPI_Count output (Note dangerous and improper assert! in errutil.c!)
Packit Service c5cf8c
47. Use of "CombineSpecificCodes" (static in file); MPIR_Err_combine_codes
Packit Service c5cf8c
Packit Service c5cf8c
Also, 
Packit Service c5cf8c
Replace the calls to MPIR_Group_release in Finalize with
Packit Service c5cf8c
MPIR_Process.group_release, and set the pointer to this routine when
Packit Service c5cf8c
the group code is used.
Packit Service c5cf8c
Packit Service c5cf8c
--- DONE ---
Packit Service c5cf8c
1. Free keyvals, while in use in a communicator and while not in use
Packit Service c5cf8c
2. User copy and delete functions on keyvals
Packit Service c5cf8c
   a) Also check error return on attribute copy during comm dup.  This
Packit Service c5cf8c
      should be a recoverable error.
Packit Service c5cf8c
3. Check all 7 predefined attributes on comm world
Packit Service c5cf8c
4. Set multiple attributes, in various orders (to ensure that all
Packit Service c5cf8c
   branches of the insert-into-list of keyvals code are exercised).
Packit Service c5cf8c
5. Perform attribute tests with comm, type, win (same code?)
Packit Service c5cf8c
6. Collective tests:
Packit Service c5cf8c
   b. Misc
Packit Service c5cf8c
	opland types: long long, char, unsigned char, float, double, 
Packit Service c5cf8c
		long double
Packit Service c5cf8c
	oplor types: long long, char, unsigned char, float, double, 
Packit Service c5cf8c
		long double
Packit Service c5cf8c
	bcast: non contig input type (e.g., broadcast a vector).
Packit Service c5cf8c
        bcast: long messages
Packit Service c5cf8c
	alltoall: long messages are not covered
Packit Service c5cf8c
   c) Need tests for Alltoallw, Exscan.
Packit Service c5cf8c
   d. Intercomm collective
Packit Service c5cf8c
        bcast
Packit Service c5cf8c
	reduce
Packit Service c5cf8c
	allreduce
Packit Service c5cf8c
	allgather
Packit Service c5cf8c
        Gatherv
Packit Service c5cf8c
	Scatterv
Packit Service c5cf8c
	Allgatherv
Packit Service c5cf8c
	Alltoall
Packit Service c5cf8c
	Alltoallv
Packit Service c5cf8c
	Barrier
Packit Service c5cf8c
7. Set and get name for comm, type, win.  Check predefined names.
Packit Service c5cf8c
	
Packit Service c5cf8c
8. dup an intercommunicator (context generation in commutil); 
Packit Service c5cf8c
	also check the handling of attributes after the dup.
Packit Service c5cf8c
   - dup done, still need to check attribute handling - done 
Packit Service c5cf8c
8a) Get group of an intercommunicator
Packit Service c5cf8c
14. type_dup.  Apply to both predefined and user defined types.
Packit Service c5cf8c
    (Should be done; see fkeyvaltype)
Packit Service c5cf8c
17. Add tests for add-error-class, code, string; -- done
Packit Service c5cf8c
21. Ensure group compare unequal (line 142--145 in source) are tested;
Packit Service c5cf8c
    this is for groups of the same size but with different processes -- done
Packit Service c5cf8c
23. group incl with empty group as output (n == 0)
Packit Service c5cf8c
25. groupdebug.c - use debug macro marker for debug routine (and do
Packit Service c5cf8c
    not compile unless enable-g=something is set).
Packit Service c5cf8c
28. bsendutil.c - construct tests to ensure that all branches are
Packit Service c5cf8c
    tested.  For example, arrange for different completion orders for
Packit Service c5cf8c
    entries added to the buffer (e.g., use send but then do the
Packit Service c5cf8c
    receives in a particular order, and make the data large enough to
Packit Service c5cf8c
    trigger rendezvous sending in the internal Isend).  - test added (need
Packit Service c5cf8c
    to test against the coverage tests)
Packit Service c5cf8c
31. request_get_status; can be tested as if MPI_Test, but does not free
Packit Service c5cf8c
    the request (really a nondestructive MPI_Test) (also see 29.)
Packit Service c5cf8c
32. For testall, testsome, waitall, and waitsome.  Add tests that
Packit Service c5cf8c
    trigger the MPI_ERR_IN_STATUS, by using MPI_ERR_TRUNCATE for
Packit Service c5cf8c
    receives. -- done for all four.
Packit Service c5cf8c
33. Add tests for lookup/publish/unpublish.  use host:port values as
Packit Service c5cf8c
    port name. -- done
Packit Service c5cf8c
34. Topology tests:
Packit Service c5cf8c
    cart-map - newrank undefined - done
Packit Service c5cf8c
    cart-shift - displ == 0 - done
Packit Service c5cf8c
    cart-sub - remove all dimensions - done
Packit Service c5cf8c
    dims-create - see code FIXME (-done-maybe)
Packit Service c5cf8c
    graph_map - newrank undefined - done
Packit Service c5cf8c
    topotest - undefined - done
Packit Service c5cf8c
36. Add tests for info delete, dup, getvaluelen.  Add enough tests to 
Packit Service c5cf8c
    check insert at beginning, middle, end. -- all done
Packit Service c5cf8c
37. Add tests for info set that replaces an existing value. -- done
Packit Service c5cf8c
38. Add tests for all RMA (alloc mem, free mem, (get, put, accumulate)-
Packit Service c5cf8c
    with win_fence, 
Packit Service c5cf8c
    win_create, win_free, win_get_group, 
Packit Service c5cf8c
    win_get_name, win_set_name, 
Packit Service c5cf8c
40. Add tests for all of MPI-IO not already covered.
Packit Service c5cf8c
    Most of these were be covered by the John May test.
Packit Service c5cf8c
    These include the routines in the files (entire file if no notes on that
Packit Service c5cf8c
    file):
Packit Service c5cf8c
    get_posn_sh.c
Packit Service c5cf8c
    iotest.c
Packit Service c5cf8c
    iread_sh.c
Packit Service c5cf8c
    iwrite_sh.c
Packit Service c5cf8c
    open.c (a few lines, including if(!rank)ADIO_Set_shared_fp
Packit Service c5cf8c
    rd_atallb.c
Packit Service c5cf8c
    rd_atalle.c
Packit Service c5cf8c
    read_at.c (at "convert count and offset to bytes")
Packit Service c5cf8c
    read_ord.c
Packit Service c5cf8c
    read_ordb.c
Packit Service c5cf8c
    read_sh.c (for ADIO_ReadStrided)
Packit Service c5cf8c
    seek.c (for MPI_SEEK_SET)
Packit Service c5cf8c
    seek_sh.c (for MPI_SEEK_END)
Packit Service c5cf8c
    wr_atallb.c
Packit Service c5cf8c
    write_at.c (at "convert bufocount and offset to bytes")
Packit Service c5cf8c
    write_ord.c
Packit Service c5cf8c
    write_ordb.c
Packit Service c5cf8c
    write_sh.c (ADIOI_WRITE_LOCK and UNLOCK; also ADIO_WriteStrided)