<PARAMS>
    # CASE - Description
    # 1 - Variable initialization and optional pull and build ONOS package
    # 2 - Install ONOS
    # 11 - Start Mininet with Openflow 1.3 (Use OpenvSwitch version more than 2.3.1)
    # 12 - Assign switch to controller
    # 13 - Discover hosts with Mininet Pingall(proto="IPV6")
    # 14 - Stop Mininet
    # 16 - Balance ownership of switches
    # 1000 - Test host intents
    # 2000 - Test Point Intent
    # 3000 - Test Single To Multi Point Intent
    # 4000 - Test multi to single point intents
    # 5000 - Test host mobility
    # 6000 - Test Multi Point intent End Point Failure

    <testcases>1,2,11,12,13,16,1000,2000,3000,4000,5000,6000,14</testcases>

    <SCALE>
        <size>1</size>
    </SCALE>

    <DEPENDENCY>
        <path>/tests/FUNC/FUNCipv6Intent/dependencies/</path>
        <wrapper1>startUp</wrapper1>
        <wrapper2>FUNCIpv6IntentFunction</wrapper2>
        <wrapper3>topo</wrapper3>
        <topology>newFuncTopo.py</topology>
    </DEPENDENCY>

    <ENV>
        <cellApps>drivers,openflow,proxyarp,mobility</cellApps>
    </ENV>
    <GIT>
        <pull>false</pull>
        <branch>master</branch>
    </GIT>
    <SLEEP>
        <startup>15</startup>
        <reroute>5</reroute>
        <removeintent>10</removeintent>
        <checkintent>5</checkintent>
        <fwd>10</fwd>
        <topoAttempts>3</topoAttempts>
    </SLEEP>
    <MININET>
        <switch>7</switch>
        <links>20</links>
    </MININET>

    # Intent tests params
    <SDNIP>
        <tcpProto>6</tcpProto>
        <icmpProto>58</icmpProto>
        <srcPort>5001</srcPort>
        <dstPort>5001</dstPort>
    </SDNIP>

</PARAMS>
