FUNCflow test suite

Summary:
        This test suite consists of basic flow-rule based functionality testing.
        The main goal of this test suite is to verify that the flow subsytem is
        compiling flows correctly. We verify each flow by utilizing Scapy, a
        Python library for generating and sending packets. The following is an
        overview of the test.
        Steps:
            - Discover hosts
            - add specific flow
            - verify flow
            - remove flow

        Each repetion of the steps tests a specific selector. Here is a list
        of the selectors that are being tested:
        Selectors:
            - MAC
            - IPv4
            - VLAN
            - MPLS
            - TCP
            - UDP

        We verify the selectors by sending a tailor made packet through the
        two hosts. If the packet was recieved, then the flow was compiled
        correctly.

Topology:
        The topology consists of one switch with four hosts connected to it.
        Two hosts are regular IPv4 hosts, while the other two are hosts with
        vlan interfaces to test the vlan selector.

Required:
        This test requires Mininet topology file topo-flow.py located in the
        dependencies folder. The topology consistes of VLAN hosts, so you will
        need to install the VLAN module. You will also need to install the
        Python module, Scapy.

VLAN configuration:
        Execute command:
            $ sudo apt-get install vlan
        Configuration:
            $ sudo modprobe 8021q
        NOTE:To make this configuration permanent
            $ sudo su -c 'echo "8021q" >> /etc/modules'

Scapy install:
    sudo apt-get install Scapy
