BBN
General Guidelines:
TEST PAYLOAD CONTENTS:
- Payloads should be constructed randomly or with other suitably distinctive contents. Their length and contents should be compared (either byte-for-byte, or by strong hash) to make sure that what was received is what was sent. The same payload should not be used repeatedly.
PAYLOAD SIZES:
- Each test is run with a variety of bundle payload sizes: 1, 16, 256, 4096, 65536, 1048576 (Throw in whatever other sizes you like.)
CLAS:
- UDP, TCP/CL, S-TCL, Bluetooth, ?? Each test should be run over all the CLAs supported by each platform. Not all platforms support each CLA, and therefore some of the platforms will be omitted from some of the tests.
REPEATABILITY:
- Each test should be run for at least several iterations.
BUNDLE CONTROL OPTIONS:
- Tests should be run with all permutations of receipts, custody, etc.
TOPOLOGIES:
- LATTICE: The purpose of this topology is to establish a baseline
- for interoperability. One node of each platform has a direct, bidirectional link with a node of every platform (including itself, if there are two instances of that platform available).
- chain, with each node able to communicate with both its predecessor and successor. Send bundles from one end of the chain to the other.
- control bundles/receipts are routed properly. arrange the nodes in a ring, with links only available in one direction. (Platforms that don't have unidirectional links must be omitted from some combinations of these tests.) Send bundles from each node in the ring to the node "halfway" across the ring. Ask for receipts of different actions. Make sure they are delivered to the sender by going all the way around the ring (not simply the reverse of the way that the bundles were sent).
- the proper functioning of custody transfer across different platforms. The topology is the same as the bidirectional multihop, except that links are brought up and down. For example, if the initial topology is:
A <-> B <-> C <-> D
then remove the A <-> B links and send a bundle from A to D. The bundle should be stalled at A, which has custody.
Remove the B <-> C link and add the A <-> B link. The bundle should progress to B, and B claims custody.
Removed the C <-> D link and add the B <-> C link. The bundle should move to C. Finally, restore the C <-> D link and see the bundle arrive at D. For full compliance testing, reboot or restart the node with custody at each step. The bundle should be copied to stable storage before custody is accepted, and then reloaded from stable storage and re-injected into the system when the BPA is restarted.