> > I think maybe one would test each end on its own first, faking the
> > communication between them, then start up both ends together and cause
> > them to interact.  That seems fair enough but when the network is not
> > reliable (UDP for example), how does one isolate the different problems
> > introduced by a lossy network from each other and from the property
being
> > tested?
>
> This seems to be heavily architecture-dependent. Maybe there could be an
> alternate version of the inet loopback (lo.o ?) module in Linux that could
> do that... when the address matches a certain pattern (127.1.*.*) it would
> drop packets according to a certain characteristic. Maybe you could
> suggest the idea on the Linux kernel mailing-list.
>
> Otherwise, a simple UDP/TCP emulator/filter could be written in Ruby, and
> you would add rules of packet-dropping in it. This would be less universal
> (Ruby only, and must be used explicitly) but much easier to write.

You could run everything in the one process and use mock objects to simular
the transport layer.  This would give you finer control over your testing.

http://www.connextra.com/site/all_about_us/xp/mockobjects.pdf

Regards,

    Glen