Subscribe to our Erlang Factory newsletter to receive the latest updates and news

Javier Paris
University of Coruña, Spain

Javier Paris is a teaching assistant at the University of A Coruña and has been using Erlang since joining the MADS research group in 2002. His main interest are in fault tolerance for network protocols, using Erlang to develop a distributed TCP/IP stack in userspace, and the automatic testing of network stack implementations.

Javier Paris is Giving the Following Talks
Automatic Testing of TCP/IP Implementations Using Quickcheck

Developing a network stack is difficult. It is highly concurrent
by design, there are many time-related tasks that must be performed, and it must be reasonably efficient to be useful. Testing a network stack is also hard, because it involves using a packet sniffer and looking at long packet dumps. Usually, tests are run using a well known stack as peer, such as the Linux kernel TCP/IP stack. However this approach has some problems. Many errors are difficult to find and to reproduce because they only arise under special conditions. Also, the TCP/IP stacks of the most common operating systems tend to be lax about accepting behaviours by their peers that do not fully conformn to the protocol. These errors would only be noticed when connecting with more simple stacks typical in embedded systems.

In this work we present an automatic test case generator for TCP using Quickcheck. This tester generates packet flows to test specific features of a TCP stack. It then controls the stack under test to run the test by using the interface provided by it (for example, the socket interface), and by sending replies to the packets created by the stack under test.

Because this tool controls the packets that are sent to the stack under test it can simulate situations that are not likely to appear in a normal test.