//
// overview.txt
//	Test harness internals.
//

Conventions:
  - functions return 0 on success, unless noted otherwise.
  - functions supplied by the harness for the test begin
    with "harness_".
  - functions supplied by the test begin with "test_".
  - harness-internal functions begin with "<filename>_".

Files:
  - sp_list.[ch]
	Maintains a dynamically sized array of pointers
	to startpoints.  Includes routines for concatting
	lists together, and sending them through nexus buffers.

  - cmd_line.[ch]
	Definition of arg_list_t, and routines for
	parsing the command line.

  - harness_options.h
	Configuration of build options (number of endpoints/
	startpoints/etc to allow) and debugging options.

  - harness_endpoint.h
	Declaration of all harness handlers, handler id's,
	and buffer contents.

  - harness_endpoint.c
	The endpoint used by the harness, and a diagnostic
	pingpong test.

  - ep_list.[ch]
	Endpoint list.  As endpoints are created (one for
	the harness, one for the test) they are stored here.
	Provides an easy way to clean up after them.

  - sp_group.[ch]
	Startpoint group.  Given the index of an endpoint
	in ep_list, all contexts will create a bunch of
	SPs bound to the EP, and then exchange them.

  - barrier.[ch]
	Provides synchronization for the harness and test.
	All barriers use the harness endpoint for reliability.

  - startup.[ch]
	Connects master and slaves using gram_myjob and
	listen/attach.

  - test_harness.h
	Interface between the test and the harness.

  - test_harness.c
	Includes main().  Sets up the harness, calls the
	test hooks, does cleanup.  All harness_ functions
	are in here.

Generic test:

  - generic_test.h
  - null_test.c
  - generic_test.c
	The generic test will create the test endpoint, and
	then pair off the contexts in any of several
	communication patterns (all to one, one to all, all
	to all, random) and then (using macros) call a test
	routine to send a message.  See null_test.c for more
	details.

Tests:

  - pingpong_test.c
	Bounce a message back and forth.
