Merge pull request #25 from cgaonker/master

Test Plan Doc
diff --git a/docs/testplan.md b/docs/testplan.md
new file mode 100644
index 0000000..2ed1489
--- /dev/null
+++ b/docs/testplan.md
@@ -0,0 +1,2255 @@
+# **Cord-Tester**
+
+##Test Cases (Implemented and Planned) : 
+
+
+**IGMP**
+
+** **
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>IGMP_1</td>
+    <td>Verify the traffic flow after joining </td>
+    <td>test_igmp_join_verify_traffic</td>
+    <td>1. Send a IGMP join message to a particular group from an interface
+2. Check for traffic flow </td>
+    <td>Traffic should get received on that interface</td>
+    <td> 
+Pass
+ </td>
+  </tr>
+  <tr>
+    <td>IGMP_2</td>
+    <td>Verify the traffic after leaving from the group</td>
+    <td>test_igmp_leave_verify_traffic</td>
+    <td>1. Leave a group from an interface.
+2. Check for traffic flow</td>
+    <td>Traffic should not get received on that interface</td>
+    <td>Pass
+ </td>
+  </tr>
+  <tr>
+    <td>IGMP_3</td>
+    <td>Verify joining loop</td>
+    <td>test_igmp_leave_join_loop</td>
+    <td>Send a join message to the groups in the same subnet</td>
+    <td>Joining interface should receive traffic</td>
+    <td>Pass
+ </td>
+  </tr>
+  <tr>
+    <td>IGMP_4</td>
+    <td>Check for latency with 1  group</td>
+    <td>test_igmp_1group_join_latency</td>
+    <td>1. Send a join message to one group from intf1.
+2. Send multicast data from intf2.
+3. Check for the latency of the data which is sent from intf2 to intf1</td>
+    <td>Latency should be checked when the data is being received on intf1</td>
+    <td>Pass
+ </td>
+  </tr>
+  <tr>
+    <td>IGMP_5</td>
+    <td>Check for latency with 2 groups</td>
+    <td>test_igmp_2group_join_latency</td>
+    <td>1. Send a join message to 2 groups from 2  different interfaces
+2. Send multicast data to 2 groups.
+3. Check for the latency of the data</td>
+    <td>Latency should be checked when the data is being received on 2 different interfaces</td>
+    <td>Pass
+ </td>
+  </tr>
+  <tr>
+    <td>IGMP_6</td>
+    <td>Check for latency with N groups</td>
+    <td>test_igmp_Ngroup_join_latency</td>
+    <td>1. Send a join message to N groups from N different interfaces
+2. Send multicast data to N groups.
+3. Check for the latency of the data</td>
+    <td>Latency should be checked when the data is being received on N different interfaces</td>
+    <td>Pass
+ </td>
+  </tr>
+  <tr>
+    <td>IGMP_7</td>
+    <td>Verify IGMP query packet</td>
+    <td>test_igmp_query</td>
+    <td>1. Send a Leave message to the group 224.0.0.1.
+2. Check for IGMP query message from the router.</td>
+    <td>ONOS should send the IGMP Query message to 224.0.0.1</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_8</td>
+    <td>Verify leaving group2 when group1 is still alive</td>
+    <td>test_igmp_2joins_1leave_functionality</td>
+    <td>1. Send a join message to  group1 and check  the traffic.
+2. Send a leave message to group2  and check the traffic on the interface1</td>
+    <td>1. Traffic should get received on an interface.
+2. Traffic should  get received without any interruptions.</td>
+    <td>Pass
+ </td>
+  </tr>
+  <tr>
+    <td>IGMP_9</td>
+    <td>Verify rejoining to the same group</td>
+    <td>test_igmp_2joins_1leave_again_joins_functionality</td>
+    <td>1. Send a join message to 2 groups.
+2. Send a leave message to group2 and join back again</td>
+    <td>Traffic should get received on interface.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_10</td>
+    <td>Verify joining a group with source ip as 0.0.0.0</td>
+    <td>test_igmp_join_sourceip_0_0_0_0_functionality</td>
+    <td>1. Send a join message to a group with source ip as 0.0.0.0
+2. Check the traffic on the interface.</td>
+    <td>Traffic should not get received.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_11</td>
+    <td>Verify the traffic when invalid join message is being sent</td>
+    <td> test_igmp_invalidClassD_IP_join_packet_functionality</td>
+    <td>Send an invalid join message to a group. Eg class D IP</td>
+    <td>Traffic should not get received.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_12</td>
+    <td>Verify periodic general query messages</td>
+    <td>test_igmp_periodic_query_packet_received_on_joining_interface</td>
+    <td>Send a Join packet  to a particular group. </td>
+    <td>Joining interface should receive multiple periodic general query packets from ONOS</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_13</td>
+    <td>Verify general membership query packet</td>
+    <td>test_igmp_query_packet_received_on_joining_interface</td>
+    <td>Send a join message and wait for membership query packet</td>
+    <td>General membership query packet should be received from querier router after 60sec</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_14</td>
+    <td>Verify the traffic after 180sec</td>
+    <td>test_igmp_general_query_recv_packet_traffic_functionality</td>
+    <td>1. Let onos send query packets.
+2. For 180 sec, hosts should not respond.
+3. Check for multicast data.</td>
+    <td>Multicast data should stop after 180 sec of time.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_15</td>
+    <td>Verify the traffic after the interface is made down and then up.</td>
+    <td>test_igmp_join_data_receiving_during_subscriber_link_up_down_functionality</td>
+    <td>1. Send a join message to the group from the intf1
+2. Bring down the intf1.
+3. Make the intf1 up again.</td>
+    <td>Traffic should get stopped and then resume once the interface is made up.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_16</td>
+    <td>Check for "include" source list</td>
+    <td>test_igmp_include_to_allow_src_list_functionality</td>
+    <td>Send a join message with the include source list as A,B</td>
+    <td>Traffic sent from any of the source address should not get filtered</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_17</td>
+    <td>Check for “Exclude” source list</td>
+    <td>test_igmp_exclude_to_allow_src_list_functionality</td>
+    <td>Send a join message with the exclude source list as C</td>
+    <td>Traffic sent from any of the source address should get filtered.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_18</td>
+    <td>Changing filter to Include mode</td>
+    <td>test_igmp_change_to_include_src_list_functionality</td>
+    <td>1. Send a join message with Exclude mode.
+2. Now change it to Include.</td>
+    <td>Traffic sent from any of the source address should now not get filtered</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_19</td>
+    <td>Changing filter to Exclude mode</td>
+    <td>test_igmp_change_to_exclude_src_list_functionality</td>
+    <td>1. Send join message with Include mode.
+2. Now change it to Exclude. </td>
+    <td>Traffic sent from any of the source address should now get filtered</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_20</td>
+    <td>Verify Allowing new sources list</td>
+    <td>test_igmp_new_src_list_functionality</td>
+    <td>1. Send join message with include mode for A and B.
+2. Add a new source list for C.
+3. Check the traffic</td>
+    <td>Traffic sent from the new source list should now not get filtered.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_21</td>
+    <td>Verify Blocking Old sources list</td>
+    <td>test_igmp_block_old_src_list_functionality</td>
+    <td>1. Send join message with include mode for A and B.
+2. Disallow A and B now.</td>
+    <td>Traffic sent from the new source list should now be filtered.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_22</td>
+    <td>Verify sending multicast data which is not in Join group</td>
+    <td>test_igmp_not_in_src_list_functionality</td>
+    <td>1. Let the join group has 2.2.2.2 and 3.3.3.3
+2. Send a multicast data from 6.6.6.6</td>
+    <td>The joining interfaces should not receive the multicast data.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_23</td>
+    <td>Verify the traffic when invalid join message is being sent with source list</td>
+    <td>test_igmp_invalid_join_packet_functionality</td>
+    <td>1. Send a join message with the include source list as A,B
+2. Specify the source ip be as 255.255.255.255</td>
+    <td>Traffic should not get received.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_24</td>
+    <td>Verify general query packet for Include(A) and Allow(B)</td>
+    <td>test_igmp_include_to_allow_src_list_check_for_general_query</td>
+    <td>1. Send a join message with include mode for A and Allow for B.
+2. Check for membership query packet</td>
+    <td>General membership query packet should get received from both A and B source list.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_25</td>
+    <td>Verify specific query packet for Include(A) and Block(B)</td>
+    <td>test_igmp_include_to_block_src_list_check_for_group_source_specific_query</td>
+    <td>1. Send a join message with include mode with source list A for G1 and Allow with new source list B for G1. 
+2. Check for specific query packet</td>
+    <td>Source  membership query packet should get received to A*B source list interface</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_26</td>
+    <td>Verify general query packet for Exclude(A) and Allow(B)</td>
+    <td>test_igmp_exclude_to_allow_src_list_check_for_general_query</td>
+    <td>1. Send a join message Exclude mode with source list A for G1 and Allow with new source list B for G1.
+2. Check for general membership query packet</td>
+    <td>General membership query packet should get received on A*B source list interface</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_27</td>
+    <td>Verify query packet for Exclude(A) and Block(B)</td>
+    <td>test_igmp_exclude_to_block_src_list_check_for_group_source_specific_query(</td>
+    <td>1. Send a join message with  Exclude mode with source list A for G1 and block with new source list B for G1.
+2. Check for Specific query packet</td>
+    <td>Specific query packet should not get received.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_28</td>
+    <td>Verify traffic for INCLUDE (A) and Block(B)</td>
+    <td>test_igmp_include_to_block_src_list_functionality</td>
+    <td>1. Send a join message with Include mode for A and Block for B. 
+2. Check for multicast traffic</td>
+    <td>Multicast traffic should get received from  A source list.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_29</td>
+    <td>Verify joining across multicast range of address </td>
+    <td>test_igmp_join_rover</td>
+    <td>Keep sending joins across different multicast range of address. </td>
+    <td>Joining interface should receive traffic for all the groups.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_30</td>
+    <td>Verify empty source list include</td>
+    <td>test_igmp_include_empty_src_list_functionality</td>
+    <td>Send a join message with include mode with empty source list</td>
+    <td>It should be unsuccessful</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_31</td>
+    <td>Verify empty source list Exclude</td>
+    <td>test_igmp_exclude_empty_src_list_functionality</td>
+    <td>Send a join message with Exclude mode with empty source list</td>
+    <td>It should be unsuccessful</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_32</td>
+    <td>Verify invalid Class D ip join packet with source list</td>
+    <td>test_igmp_invalidClassD_IP_as_srclistIP_join_packet_functionality</td>
+    <td>1. Send a join message with the include source list as A,B
+2. Specify the source ip be as 239.5.5.5</td>
+    <td>Traffic shouldn't get received</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_33</td>
+    <td>Verify the traffic after the channel is made down and then up.</td>
+    <td> test_igmp_join_data_receiving_during_channel_distributor_link_down_up_functionality</td>
+    <td>1. Send a join message to the group from the intf1
+2. Bring down the channel
+4. Make the channel up again.</td>
+    <td>Traffic should get stopped and then resume.</td>
+    <td>To Be implemented</td>
+  </tr>
+  <tr>
+    <td>IGMP_34</td>
+    <td>Verify entry deletion after membership query time expires</td>
+    <td>test_igmp_periodic_query_packet_received_and_checking_entry_deleted</td>
+    <td>Send IGMP join and wait till 3 membership query packets are received. Check for traffic</td>
+    <td>Traffic shouldn't get received.
+ONOS should not show the entry for MF table </td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_35</td>
+    <td>Verify rejoining interface after membership query interval expires</td>
+    <td>test_igmp_member_query_interval_expire_re_joining_interface</td>
+    <td>1.Send IGMP join and wait till 3 membership query packets are received. 
+2. After the timer expires, again rejoin the interface</td>
+    <td>Rejoining the interface should happen and traffic flow should be seen.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_36</td>
+    <td>Verify source specific query for leave message</td>
+    <td>test_igmp_leave_verify_received_group_source_specific_query</td>
+    <td>1.Leave a group from an interface.
+2.Check for source specific query</td>
+    <td>Source specific query should not get received on that interface</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_37</td>
+    <td>Verify group specific query packet after changing to exclude mode</td>
+    <td>test_igmp_change_to_exclude_src_list_check_for_group_source_specific_query</td>
+    <td>1. Send join message with Include mode.
+2. Now change it to Exclude. 
+3. Check for specific query packet</td>
+    <td>Specific query packet  sent from any of the source address should now get filtered</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>IGMP_38</td>
+    <td>Verify group specific query packet after changing to Include mode</td>
+    <td>test_igmp_change_to_include_src_list_check_for_general_query</td>
+    <td>1. Send a join message with Exclude mode.
+2. Now change it to Include.
+3. Check for General query packet</td>
+    <td>General query packet  sent from any of the source address should not get filtered</td>
+    <td>Fail</td>
+  </tr>
+</table>
+
+
+** **
+
+** **
+
+**Authentication:**
+
+** **
+
+**Set up for EAP-TLS :**
+
+**-------------------------**
+
+**1. ea.conf file  (**
+
+         in eap section  default_eap_type = tls **
+
+          in gtc section comment the #auth_type = ****E****AP**** }**
+
+** **
+
+**2. TLS Client Certification PEM file. (File name - inno-dev-ca-certificate..pem)**** .**
+
+**3. C****opy and past Client crt in server installed  CA.crt file. (File name -inno-dev-ca-certificate.crt)****  **
+
+** **
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Auth_1</td>
+    <td>Verify EAP-MD5 authentication </td>
+    <td> test_eap_md5</td>
+    <td>1. Send EAPOL start message from the client. 
+2. Send EAP response with identity. 
+3. Send EAP response with MD5 challenge</td>
+    <td>1. Got EAP Request for identity.
+2. Got EAP request  for MD5 challenge.
+3. EAP success message should be seen.
+ </td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Auth_2</td>
+    <td>Verify EAP-MD5 authentication with wrong password</td>
+    <td>test_eap_md5_wrg_password</td>
+    <td>1. Send EAPOL start message from the client. 
+2. Send EAP response. 
+3. Send EAP response with MD5 challenge with wrong password</td>
+    <td>1. Got EAP Request for identity.
+2. Got EAP request  for MD5 challenge.
+3. EAP failure message should be seen.
+ </td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Auth_3</td>
+    <td>Verify EAP-MD5 authentication with wrong challenge</td>
+    <td> </td>
+    <td>1. Send EAPOL start message from the client. 
+2. Send EAP response.
+3. Send EAP response with MD5 challenge with wrong challenge</td>
+    <td>1. Got EAP Request for identity.
+2. Got EAP request  for MD5 challenge.
+3. EAP failure message should be seen.
+ </td>
+    <td>To Be implemented</td>
+  </tr>
+  <tr>
+    <td>Auth_4</td>
+    <td>Verify EAP-TLS authentication</td>
+    <td>test_eap_tls</td>
+    <td>1. Send EAPOL start message from the client.
+2. Send EAP response with identity.
+3. Send Client Hello TLS payload .
+4. Send Client Hello TLS Certificate.
+5. Send Client TLS Finished</td>
+    <td>1. Got EAP Request for identity.
+2. Got hello request for id.
+3. Got cert request.
+4. Got change cipher request from server
+5. EAP-TLS success message should be seen.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Auth_5</td>
+    <td>Verify EAP-TLS authentication with empty TLS client certification</td>
+    <td>test_eap_tls_noCrt</td>
+    <td>1. Send EAPOL start message from the client 
+2.  Send EAP response with identity. 
+3. Send Client Hello TLS payload .
+4. Send an empty Client Hello TLS Certificate
+ </td>
+    <td>1. Got EAP Request for identity. 
+2. Got hello request for id.
+3. Got cert request.
+4. Access reject message should be seen from ONOS or socket should get timed out.
+ </td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Auth_6</td>
+    <td>Verify EAP-TLS authentication with Invalid client certification</td>
+    <td>test_eap_tls_InvalidCrt</td>
+    <td>1. Send EAPOL start message from the client .
+2.  Send EAP response with identity. 
+3. Send Client Hello TLS payload .
+4. Send an invalid Client Hello TLS Certificate
+ </td>
+    <td>1. Got EAP Request for identity. 
+2. Got hello request for id.
+3. Got cert request.
+4. Access reject message should be seen from ONOS or socket should get timed out.
+ </td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Auth_7</td>
+    <td>Verify EAP-TLS authentication with self signed client certification</td>
+    <td>test_eap_tls_Self_Signed_Crt</td>
+    <td>1. Send EAPOL start message from the client . 
+2.  Send EAP response with identity. 
+3. Send Client Hello TLS payload .
+4. Send Self signed Client Hello TLS Certificate.
+ </td>
+    <td>1. Got EAP Request for identity. 
+2. Got hello request for id.
+3. Got cert request.
+4. Access reject message should be seen from ONOS or socket should get timed out.
+ </td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Auth_8</td>
+    <td>Verify EAP-TLS authentication with 2 RGs having the same valid TLS certificate</td>
+    <td>test_eap_tls_2RGs_SameValid_Crt</td>
+    <td>1.Let one RG start with EAPOL message using the valid TLS certificate.
+2. Let 2nd RG start with EAPOL message using the same TLS certificate.</td>
+    <td>Access reject message should be seen from ONOS or socket should get timed out.
+ </td>
+    <td>Pass</td>
+  </tr>
+</table>
+
+
+** **
+
+**DHCP:**
+
+** **
+
+**Activate the DHPC app**
+
+** **
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>DHCP_1</td>
+    <td>Verify the dynamic ip address allocation of client</td>
+    <td>test_dhcp_1request</td>
+    <td>Send a DHCP discover message from client</td>
+    <td>All DHCP messages like DHCP discover, DHCP offer, DHCP request and DHCP Ack should be checked.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_2</td>
+    <td>Verify DHCP NAK message from the server</td>
+    <td> </td>
+    <td>1. Configure pool lets say 20.0.0.1-20.0.0.10 in DHCP server.
+2. Let client get the ip address
+1. Disconnect this server and Connect another server with IP pool as 80.0.0.1-80.0.0.10
+2. Let client send DHCP request message.</td>
+    <td>When the client sends DHCPREQUEST it will ask for the previous ip address which is not present in pool so the server will send NAK.</td>
+    <td>Not yet implemented</td>
+  </tr>
+  <tr>
+    <td>DHCP_3</td>
+    <td>Verify releasing an IP from the client to the server to rediscover</td>
+    <td>test_dhcp_1release</td>
+    <td>Send DHCP release packet from the client to the server</td>
+    <td>IP address should get released back to the server and should be able to rediscover</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_4</td>
+    <td>Multiple dhcp servers</td>
+    <td> </td>
+    <td>Let there be multiple DHCP servers.
+Start a dhcp client from one host.</td>
+    <td>IP address should get allocated to the host from one of the DHCP servers.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>DHCP_5</td>
+    <td>Verify DHCP decline message from the client</td>
+    <td> </td>
+    <td>1. You need two clients. One static and one through DHCP server.
+2. Try to first assign ip address to dhcp client, reboot the client or just remove it from network.
+3. Meanwhile give the same static ip to another client.
+4. Now connect the dhcp client.</td>
+    <td>When the server assigns the ip address the client will do gracious arp and as static ip is already present it will send DHCPDECLINE message to the Server.</td>
+    <td>Not implemented</td>
+  </tr>
+  <tr>
+    <td>DHCP_6</td>
+    <td>Verify restarting the dhcp client</td>
+    <td>test_dhcp_client_request_after_reboot</td>
+    <td>1. Restart the client which has got previously leased IP address.
+2. Check for DHCP Ack message </td>
+    <td>If the requested IP address can be used by the client, the DHCP server responds with a DHCPAck message.
+   If the IP address cannot be used by the client, the DHCP server responds with a DHCPNak message. If this occurs, the client restarts the lease process.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_7</td>
+    <td>Verify multiple client scenario</td>
+    <td>test_dhcp_Nrequest</td>
+    <td>Let there be multiple hosts and generate a multiple DHCP request messages</td>
+    <td>Server should be able to give ip address to all the hosts.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_8</td>
+    <td>check for Fail over mechanism in dhcp</td>
+    <td> </td>
+    <td>Let there be 2 dhcp servers in the same subnet or scope.
+Make one dhcp server down</td>
+    <td>If a DHCP server1 is no longer reachable, then client is able to extend the lease on its current IP address by contacting another DHCP server2.</td>
+    <td>Not implemented</td>
+  </tr>
+  <tr>
+    <td>DHCP_9</td>
+    <td>Verify DHCP client renewing State</td>
+    <td> </td>
+    <td>After T1 timer expires, a DHCP request message which is unicast is being sent to the same server</td>
+    <td>Since the server is up and reachable , it should respond back with DHCP Ack packet</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_10</td>
+    <td>Verify the client behavior when DHCP server is rebooted.</td>
+    <td>test_dhcp_server_after_reboot</td>
+    <td>1. Make the DHCP server down after getting an IP address for the client. 
+2. Now make the DHCP server up.</td>
+    <td>1. Since the server is down, the client receives no reply from the server and it  will regularly re-transmit the unicast DHCPREQUEST to the server. DHCP request message is now broadcasted to all other servers
+If no response is received by the time the lease expires, it transitions to the INIT state to get a new lease
+2. If the DHCP server is up within the lease time, DHCP Ack message is being sent back to the client.
+After the lease time expires, DHCP discover message is broadcasted from the client.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_11</td>
+    <td>Verify generation of DHCP inform message</td>
+    <td> </td>
+    <td>1. Let client send a DHCP inform message with its own ip address in ciaddr field.
+2. Check for DHCP ACk message</td>
+    <td>DHCP Ack message should be sent from the server which includes the needed parameters in the appropriate DHCP option fields</td>
+    <td>Not implemented</td>
+  </tr>
+  <tr>
+    <td>DHCP_12</td>
+    <td>DHCP starvation attack</td>
+    <td>test_dhcp_starvation</td>
+    <td>1. Send a lot of dummy DHCP requests, with random source Mac address (using Scapy)</td>
+    <td>After few second, there is no more IP addresses available in the pool, thus successfully performing denial of service attack to other network client.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_13</td>
+    <td>Verify DHCP Relay functionality</td>
+    <td> </td>
+    <td>Make ONOS as DHCP relay agent and Send a DHCP discover message from the client. This inserts the option 82.</td>
+    <td>ONOS should forward the DHCP server reply to the client</td>
+    <td>Not implemented</td>
+  </tr>
+  <tr>
+    <td>DHVP_15</td>
+    <td>Verify sending DHCP discover packet twice</td>
+    <td>test_dhcp_same_client_multiple_discover</td>
+    <td>Send DHCP discover packet twice from the client.</td>
+    <td>DHCP server should give the same ip to the client.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_16</td>
+    <td>Verify sending DHCP request packet twice</td>
+    <td>test_dhcp_same_client_multiple_request</td>
+    <td>Send the DHCP request packet twice form the client</td>
+    <td>DHCP Ack should be sent.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_17</td>
+    <td>Verify ip address assignment when dhcp request and offer ip are different </td>
+    <td>test_dhcp_server_nak_packet</td>
+    <td>1. Send a DHCP discover message from the client.
+2. Send DHCP request message with a different ip.
+ </td>
+    <td>1. DHCP offer should be sent from server.
+2. DHCP NAK should be sent from the server.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_18</td>
+    <td>Verify  ip address assignment is successful when desired ip is sent.</td>
+    <td>test_dhcp_client_desired_address</td>
+    <td>Send a DHCP discover packet with the desired ip which is in the server address pool.
+ </td>
+    <td>DHCP ip address assignment should be successful.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_19</td>
+    <td>Verify  ip address assignment when desired ip is sent which is out of the pool.</td>
+    <td>test_dhcp_client_desired_address_out_of_pool</td>
+    <td>Send a DHCP discover packet with the desired ip which is out of the  server address pool.
+ </td>
+    <td>DHCP NAK message should be sent</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>DHCP_20</td>
+    <td>Verify  ip address assignment with the lease time information specified.</td>
+    <td>test_dhcp_lease_packet</td>
+    <td>Send a DHCP discover packet with the least time mentioned.</td>
+    <td>DHCP ip address assignment should be successful with the mentioned lease time.</td>
+    <td>Fail</td>
+  </tr>
+  <tr>
+    <td>DHCP_21</td>
+    <td>Verify sending N releases from the client</td>
+    <td>test_dhcp_Nrelease</td>
+    <td>Send multiple DHCP release packet from the client to the server</td>
+    <td>All IP addresses should get released back to the server and should be able to rediscover</td>
+    <td>Pass</td>
+  </tr>
+</table>
+
+
+** **
+
+** **
+
+**Subscriber :**
+
+** **
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Subs_1</td>
+    <td>Verify subscriber joining and receiving traffic</td>
+    <td>test_subscriber_join_recv</td>
+    <td>1. Send a EAPOL start message for TLS authentication.
+2. Send a DHCP discover packet from the client.
+3. Verify joining to a particular group.
+ </td>
+    <td>1. TLS authentication should be successful.
+2. IP address should be assigned to client.
+3. Interface should receive traffic.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Subs_2</td>
+    <td>Verify joining and jumping to the next channel for channel surfing</td>
+    <td>test_subscriber_join_jump</td>
+    <td>1. Send a EAPOL start message for TLS authentication.
+2.  Jump to the next ip.
+3. Jump to the next channel and verify the traffic
+ </td>
+    <td>1. TLS authentication should be successful. 
+2. IP address should be assigned to client.
+3. Interface should receive traffic. Also it should show the jump RX stats for subscriber.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Subs_3</td>
+    <td>Verify subscriber TLS authentication by sending invalid client certificate</td>
+    <td> </td>
+    <td>1. Send an invlaid Client Hello TLS Certificate.
+2. Send a DHCP discover packet from the subscriber.
+ </td>
+    <td>1. Authentication should not be successful.
+2. Subscriber should not receive any ip from DHCP server. </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_4</td>
+    <td>Verify subscriber TLS authentication by sending no client certificate</td>
+    <td> </td>
+    <td>1. Send an blank Client Hello TLS Certificate.
+2. Send a DHCP discover packet from the subscriber.
+ </td>
+    <td>1.Authentication should not be successful. 
+2.Subscriber should not receive any ip from DHCP server. </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_6</td>
+    <td>Verify 2 subscribers TLS authentication</td>
+    <td> </td>
+    <td>1.Let one RG start with EAPOL message using the valid TLS certificate.
+2. Let 2nd RG start with EAPOL message using the same TLS certificate.
+3. Send a DHCP discover message to fetch the ip address. </td>
+    <td>(1 &2 )Access reject message should be seen from ONOS or socket should get timed out.
+3. IP address assignment should not be successful.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_7</td>
+    <td>Verify subscriber TLS authentication by sending wrong username</td>
+    <td> </td>
+    <td>1. Send a EAPOL message with wrong user.
+2. Send a DHCP discover packet from the client</td>
+    <td>1. TLS authentication should not be successful.
+2. IP address should not  be assigned to client.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_8</td>
+    <td>Verify subscriber TLS authentication by sending correct username and wrong password</td>
+    <td> </td>
+    <td>1. Send EAP response with MD5 challenge with wrong password.
+2. Send a DHCP discover packet from the client.</td>
+    <td>1. TLS authentication should not be successful.
+2. IP address should not  be assigned to client.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_9</td>
+    <td>Verify subscriber TLS authentication by sending wrong username and wrong password</td>
+    <td> </td>
+    <td>1. Send a EAPOL message with wrong user.
+2. Send EAP response with MD5 challenge with wrong password.
+3. Send a DHCP discover packet from the client.</td>
+    <td> 1. TLS authentication should not be successful.
+3. IP address should not  be assigned to client.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_10</td>
+    <td>Verify subscriber joining and receiving traffic using MD5 authentication </td>
+    <td> </td>
+    <td>1. Send a EAPOL start message for MD5 authentication.
+2. Send a DHCP discover packet from the client.
+3. Verify joining to a particular group.
+ </td>
+    <td>1. MD5 authentication should be successful.
+2. IP address should be assigned to client. 
+3. Interface should receive traffic</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_11</td>
+    <td>Verify subscriber MD5 authentication by sending wrong username</td>
+    <td> </td>
+    <td>1. Send a EAPOL message with wrong user. 
+2. Send a DHCP discover packet from the client</td>
+    <td>1. MD5 authentication should not be successful.
+2. IP address should not  be assigned to client.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_12</td>
+    <td>Verify subscriber MD5 authentication by sending correct username and wrong password</td>
+    <td> </td>
+    <td>1. Send EAP response with MD5 challenge with wrong password.
+2.  Send a DHCP discover packet from the client</td>
+    <td>1. MD5 authentication should not be successful.
+2. IP address should not  be assigned to client.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_13</td>
+    <td>Verify subscriber MD5 authentication by sending wrong username and wrong password</td>
+    <td> </td>
+    <td>1. Send a EAPOL message with wrong user.
+2. Send EAP response with MD5 challenge with wrong password.
+3.  Send a DHCP discover packet from the client</td>
+    <td>1. MD5 authentication should not be successful.
+3. IP address should not  be assigned to client.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_14</td>
+    <td>Verify 2 subscribers joining but 1  subscriber authentication failure by sending invalid client certificate. </td>
+    <td> </td>
+    <td>4. Let  1 subscriber join the group.
+5. For the 2nd subscriber , Send an invalid Client Hello TLS Certificate.
+6. Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface.
+2.  TLS authentication should not be successful.
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_15</td>
+    <td>Verify 2 subscribers joining but 1  subscriber authentication failure by sending no client certificate. </td>
+    <td> </td>
+    <td>1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a blank Client Hello TLS Certificate.
+3. Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_16</td>
+    <td>Verify 2 subscribers joining but 1  subscriber authentication failure by sending self signed client certificate.</td>
+    <td> </td>
+    <td>1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a self signed Client Hello TLS Certificate.
+3.  Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_17</td>
+    <td>Verify 2 subscribers joining but 1  subscriber authentication failure by sending wrong username</td>
+    <td> </td>
+    <td>1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a EAPOL start message with wrong username
+3.  Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td> </td>
+  </tr>
+  <tr>
+    <td>Subs_18</td>
+    <td>Verify 2 subscribers joining but 1  subscriber authentication failure by sending correct username and wrong password</td>
+    <td> </td>
+    <td>1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a EAPOL start message with correct username and wrong password.
+3.  Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_19</td>
+    <td>Verify 2 subscribers joining but 1  subscriber authentication failure by sending wrong username and wrong password</td>
+    <td> </td>
+    <td> 1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a EAPOL start message with wrong username and wrong password.
+3.  Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_20</td>
+    <td>Verify 2 subscribers joining but 1  subscriber with MD5 method</td>
+    <td> </td>
+    <td>1. Let 1st subscriber join the group with TLS authentication.
+2. Let 2nd subscriber join with MD5 authentication.
+3. Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on joining interface.
+2. 2nd subscriber should receive traffic on joining interface.
+3. IP address assignment should be successful for both the subscribers</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_21</td>
+    <td>Verify 2 subscribers joining but 1  subscriber MD5 authentication failure by sending wrong username</td>
+    <td> </td>
+    <td>1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a EAPOL start message with wrong username
+3.  Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_22</td>
+    <td>Verify 2 subscribers joining but 1  subscriber MD5 authentication failure by sending wrong password and correct username</td>
+    <td> </td>
+    <td>1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a EAPOL start message with correct username and wrong password.
+3.  Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_23</td>
+    <td>Verify 2 subscribers joining but 1  subscriber MD5 authentication failure by sending wrong password and wrong username</td>
+    <td> </td>
+    <td>1. Let  1 subscriber join the group. 
+2. For the 2nd subscriber , Send a EAPOL start message with wrong username and wrong password.
+3.  Check for DHCP ip address assignment for both the subscribers.</td>
+    <td>1. 1st subscriber should receive traffic on the joining interface. 
+2.  TLS authentication should not be successful. 
+3. IP address assignment should be successful only for 1st subscriber.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_24</td>
+    <td>Verify ip address assignemt failure due to lack of DHCP address in the pool.</td>
+    <td> </td>
+    <td>1. Send EAPOL start message to authenticate the subscriber.
+2. Send a DHCP discover packet to the server where there are no ip address in the server adress pool.</td>
+    <td>1. Authentication is successful.
+2. DHCP server should not allocate ip adress to the client.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_25</td>
+    <td>Verify ip address assignment successful when subscriber renews ip after DHCP lease time</td>
+    <td> </td>
+    <td>1. Let the lease time get over.
+2.  DHCP request which is unicast is being sent to the server. </td>
+    <td>DHCP Ack should get received since the server is up and reachable.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_26</td>
+    <td>Verify ip address assignment is successful when DHCP discover is sent twice.</td>
+    <td> </td>
+    <td>Send DHCP discover message twice from the client.</td>
+    <td>DHCP server should give the same ip to the client using the DHCP Ack packet. </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_27</td>
+    <td>Verify ip address assignment is successful when DHCP request is sent twice.</td>
+    <td> </td>
+    <td>1. Send a DHCP discover message from the client.
+2. Send DHCP request message.
+3. Again send DHCP request message. </td>
+    <td>1. DHCP offer should be sent from the server.
+2. DHCP Ack should get received.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_28</td>
+    <td>Verify ip address assignment when dhcp request and offer ip are different </td>
+    <td> </td>
+    <td>1. Send a DHCP discover message from the client.
+2. Send DHCP request message with a different ip.
+ </td>
+    <td>1. DHCP offer should be sent from server.
+2. DHCP NAK should be sent from the server.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_29</td>
+    <td>Verify subscriber ip address assignment is successful when desired ip is sent.</td>
+    <td> </td>
+    <td>Send a DHCP discover packet with the desired ip which is in the server address pool.</td>
+    <td>DHCP ip address assignment should be successful.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_30</td>
+    <td>Verify subscriber ip address assignment when desired ip is sent which is out of the pool.</td>
+    <td> </td>
+    <td>Send a DHCP discover packet with the desired ip which is out of the  server address pool</td>
+    <td>DHCP NAK message should be sent</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_31</td>
+    <td>Verify subscriber ip address assignement with the lease time information specified.</td>
+    <td> </td>
+    <td>Send a DHCP discover packet with the least time mentioned.</td>
+    <td>DHCP ip address assignment should be successful with the mentioned lease time.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_32</td>
+    <td>Verify the DHCP process when the subscriber becomes down and  up.</td>
+    <td> </td>
+    <td>After DHCP address assignment to the client, make the subscriber down and then make it up.</td>
+    <td>Once its up, DHCP request message should be sent from the client to the server which is unicast.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_33</td>
+    <td>Verify the DHCP process when the DHCP server becomes down and  up.</td>
+    <td> </td>
+    <td>1. Send a DHCP discover packet .
+2. Send a DHCP request packet from the client.
+3. Make the DHCP server down.
+4. Make the DHCP server up.</td>
+    <td>1. DHCP offer packet generated.
+2. DHCP Ack packet generated.
+3. Client should have the same ip till the lease time expires.
+4. DHCP Ack should be sent from the server. </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_34</td>
+    <td>Verify the DHCP process of the subscriber after T1 timer expiry</td>
+    <td> </td>
+    <td>After T1 timer expires, a DHCP request message which is unicast is being sent to the same server</td>
+    <td>Since the server is up and reachable , it should respond back with DHCP Ack packet.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_35</td>
+    <td>Verify ip address assignment failure due to lack of DHCP address in the pool for one subscriber </td>
+    <td> </td>
+    <td>1. Let 1st subscriber send a discover message.
+2. Now 2nd subscriber will send a discover message to a server where there is no ip address available.</td>
+    <td>1. Ip address assignment should be  successful.
+2. DHCP NAK should be sent.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_36</td>
+    <td>Verify ip address assignment is successful when one subscriber renews ip after DHCP lease time</td>
+    <td> </td>
+    <td>1. Let the lease time get over for the 2nd subscribe
+2.  DHCP request which is unicast is being sent to the server. </td>
+    <td>DHCP Ack should get received to the subscribers since the server is up and reachable.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_37</td>
+    <td>Verify ip address assignment is successful when DHCP discover is sent twice by 2nd subscriber.</td>
+    <td> </td>
+    <td>Send DHCP discover message twice from the 2nd Subscriber</td>
+    <td>DHCP server should give the same ip to the client using the DHCP Ack packet. </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_38</td>
+    <td>Verify ip address assignment is successful when DHCP request is sent twice by 2nd subscriber.</td>
+    <td> </td>
+    <td>Send a DHCP discover message from the client1 and client 2.
+ Send DHCP request message.
+3. Again send DHCP request message from      client 2.</td>
+    <td>1. DHCP offer should be sent from the server.
+DHCP Ack should get received on both the clients..</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_39</td>
+    <td>Verify ip address assignment when dhcp request and offer  ip are different for 2nd subscriber</td>
+    <td> </td>
+    <td>1. Send a DHCP discover message from the client.
+2. Send DHCP request message with a different ip from the subscriber 2.
+ </td>
+    <td>1. DHCP offer should be sent from server.
+2. DHCP NAK should be sent from the server to subscriber2.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_40</td>
+    <td>Verify ip address assignment is successful when desired ip is sent by the 2nd subscriber.</td>
+    <td> </td>
+    <td>Send a DHCP discover packet with the desired ip which is in the server address pool by the 2nd subscriber</td>
+    <td>DHCP ip address assignment should be successful.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_41</td>
+    <td>Verify subscriber ip address assignment when desired ip is sent which is out of the pool by the 2nd subscriber. </td>
+    <td> </td>
+    <td>Send a DHCP discover packet with the desired ip which is out of the  server address pool by the 2nd subscriber.</td>
+    <td>DHCP NAK message should be sent to the subscriber2.
+IP address assignment should be successful for subscriber 1.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_42</td>
+    <td>Verify subscriber ip address assignement with the lease time information specified by 2nd subscriber</td>
+    <td> </td>
+    <td>Send a DHCP discover packet with the least time mentioned by t he 2nd subscriber.</td>
+    <td>DHCP ip address assignment should be successful with the mentioned lease time.</td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_43
+</td>
+    <td>Verify the DHCP process when the subscriber2 becomes down and  up.
+</td>
+    <td></td>
+    <td>After DHCP address assignment to the client, make the subscriber2 down and then make it up.</td>
+    <td>Once its up, DHCP request message should be sent from the client to the server which is unicast.
+Subscriber1 should not get disturbed.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_44</td>
+    <td>Verify the DHCP process when the DHCP server becomes down and  up w.r.t  2 subscribers.</td>
+    <td> </td>
+    <td>Send a DHCP discover packet from both the clients .
+Send a DHCP request packet from both the clients.
+Make the DHCP server down
+Make the DHCP server up.</td>
+    <td>DHCP offer packet generated for both the clients.
+ DHCP Ack packet generated for both the clients.
+3. Clients should have the same ip till the lease time expires.
+4. DHCP Ack should be sent from the server.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_45</td>
+    <td>Verify the DHCP process of the subscriber2 after T1 timer expiry</td>
+    <td> </td>
+    <td>After T1 timer expires, a DHCP request message which is unicast is being sent to the same server from the subscriber2</td>
+    <td>Since the server is up and reachable , it should respond back with DHCP Ack packet.
+Subscriber1 should not get disturbed.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_46</td>
+    <td>Verify Subscriber joining to 1 channel</td>
+    <td> </td>
+    <td>1. Send a EAPOL start message for TLS authentication.
+2. Send a DHCP discover packet from the client.
+3. Verify joining to one channel
+ </td>
+    <td>1. TLS authentication should be successful.
+2. IP address should be assigned to client.
+3. Interface should receive traffic for that particular channel.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+  <tr>
+    <td>Subs_47</td>
+    <td>Verify subscriber joining to 10 channels.</td>
+    <td> </td>
+    <td>1. Send a EAPOL start message for TLS authentication.
+2. Send a DHCP discover packet from the client.
+3. Verify joining to 10 channels.
+ </td>
+    <td>1. TLS authentication should be successful.
+2. IP address should be assigned to client.
+3. Interface should receive traffic for all the channels respectively.
+ </td>
+    <td>To Be Implemeneted</td>
+  </tr>
+</table>
+
+
+** **
+
+** **
+
+** **
+
+** **
+
+**Vrouter :**
+
+ 
+
+** Start the quagga container and activate the Vrouter app.**
+
+** **
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Vrouter_1</td>
+    <td>Test vrouter with 5 routes</td>
+    <td></td>
+    <td></td>
+    <td>Route installation should be successful</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_2</td>
+    <td>Test vrouter with 10000 routes</td>
+    <td></td>
+    <td></td>
+    <td>Route installation should be successfull</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_3</td>
+    <td>Test vrouter by installing 5 routes, removing Quagga and re-starting Quagga back</td>
+    <td></td>
+    <td></td>
+    <td>Route installation should be successfull</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_4</td>
+    <td>Test vrouter by installing 50 routes, removing Quagga and re-starting Quagga back</td>
+    <td></td>
+    <td></td>
+    <td>Route installation should be successfull</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_5</td>
+    <td>Test vrouter with 5 routes with 2 peers</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_6</td>
+    <td>Test vrouter with 6 routes with 3 peers</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_7</td>
+    <td>Test vrouter with 50 routes</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_8</td>
+    <td>Test vrouter with 50 routes and 5 peers</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful..</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_9</td>
+    <td>Test vrouter with 100 routes</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_10</td>
+    <td>Test vrouter with 100 routes and 10 peers</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_11</td>
+    <td>Test vrouter with 300 routes</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful.</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_12</td>
+    <td>Test vrouter with 1000 routes</td>
+    <td></td>
+    <td></td>
+    <td>It should be successful</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_13</td>
+    <td>Test vrouter with 25000 routes</td>
+    <td></td>
+    <td></td>
+    <td>Route installation should be successful</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_14</td>
+    <td>Test vrouter with 250000 routes</td>
+    <td></td>
+    <td></td>
+    <td>Route installation should be successful</td>
+    <td>Pass</td>
+  </tr>
+  <tr>
+    <td>Vrouter_!5</td>
+    <td>Test vrouter with 100000 routes</td>
+    <td></td>
+    <td></td>
+    <td>Route installation should be successful</td>
+    <td>Pass</td>
+  </tr>
+</table>
+
+
+ 
+
+**IPV6:**
+
+ 
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>IPV6_1</td>
+    <td>Verify IPv6 Host Discovery before adding intents</td>
+    <td></td>
+    <td>1. Add 2 IPV6 hosts .
+2. Check in the cli</td>
+    <td>Command "hosts" should show IPV6 hosts.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_2</td>
+    <td>Verify IPv6 Neighbor Solicitation message</td>
+    <td></td>
+    <td>Send an ICMPv6 packet with type as 134. </td>
+    <td>Neighbor should be advertised</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_3</td>
+    <td>Verify IPv6 Neighbor Advertisement</td>
+    <td></td>
+    <td>Send a NS message from the host and check for Neighbor advertisement message </td>
+    <td>A value of 136 should be captured in the Type field of ICMP packet header.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_4</td>
+    <td>Verify ICMP6 Ping </td>
+    <td></td>
+    <td>Do an ICMPv6 ping from one host to another</td>
+    <td>Ping should be successful.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_5</td>
+    <td>Verify IPv6 Host Intent Addition</td>
+    <td></td>
+    <td>1. Add point intents between 2 IPV6 hosts.
+2. Check ping between the hosts </td>
+    <td>Ping should be successful.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_6</td>
+    <td>Verify Point Intent Addition matching on port numbers</td>
+    <td></td>
+    <td>1. Add point intents between 2 IPV6 hosts matching on port numbers.
+2. Check ping between the hosts </td>
+    <td>Ping should be successful.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_7</td>
+    <td>Verify Installing 300 host intents and verify ping all</td>
+    <td></td>
+    <td>1. Add 300 point intents.
+2. Ping all across all hosts to test connectivity</td>
+    <td>1. 300 point intents should get successfully installed.
+2. Ping should be successful.
+ </td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_8</td>
+    <td>Randomly bring some core links down and verify ping all</td>
+    <td></td>
+    <td>1. Bring down the core links.
+2. Check ping between the hosts.</td>
+    <td>Even during link down state, connectivity still exists via reroute and ping should be successful.
+ </td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_9</td>
+    <td>Bring core links Up that were down and verify ping all</td>
+    <td></td>
+    <td>1. Bring the links that were down to up.
+2. Check ping between the hosts.</td>
+    <td>Ping should be successful.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_10</td>
+    <td>Verify Intents with VLAN-id</td>
+    <td></td>
+    <td>1. Add point intents with vlan id .
+2. Check hosts command in ONOS.
+3. Verify ping between the hosts.</td>
+    <td>2.“Hosts”command should discover correct vlan tag.
+3. Ping should be successful.
+ </td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_11</td>
+    <td>Verify the INSTALLED state in intents</td>
+    <td></td>
+    <td>Rewrite mac address action in multi point to single point intent.
+Check the cli command “Intents “</td>
+    <td> Intent's state should be INSTALLED</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_12</td>
+    <td>Verify the ping after removing the intents between the hosts.</td>
+    <td></td>
+    <td>1. Remove the previously added intents.
+2. Check for ping between hosts.</td>
+    <td>Ping should fail.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_13</td>
+    <td>Verify Modify IPv6 Source Address</td>
+    <td></td>
+    <td>1. Configure and connect the Primary-controller. 
+2. Create a flow with action OFPAT_SET_NW_SRC and output to an egress port. 
+3. Send matching packet to ingress port. </td>
+    <td>packet gets output to egress port with correct IPv6 source address as specified in the flow.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_14</td>
+    <td>Verify Modify IPv6 destination address</td>
+    <td></td>
+    <td>1. Configure and connect the Primary-controller. 
+2. Create a flow with action OFPAT_SET_NW_DST and output to an egress port. 
+3. Send matching packet to ingress port. </td>
+    <td>packet gets output to egress port with correct IPv6 destination address as specified in the flow</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_15</td>
+    <td>Verify ping between the IPV6 hosts where muti point to single point intent is added</td>
+    <td></td>
+    <td>1. Add a multi point to single point intent related SDNIP matching on IP Prefix and rewriting the mac address.
+2. Verify the ping </td>
+    <td>Ping should be successful.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>IPV6_16</td>
+    <td>Check the ping after adding bidirectional point intents </td>
+    <td></td>
+    <td>1. Add a bidirectional point intents between 2 packet layer devices.
+2. Verify the ping</td>
+    <td>Ping should be successful.</td>
+    <td></td>
+  </tr>
+</table>
+
+
+** **
+
+ 
+
+**Flows:**
+
+ 
+
+**This is to verify that the flow subsystem is compiling flows correctly.**
+
+**We use a packet generation tool called Scapy which allows us to construct a packet that is tailor made for each flow.**
+
+ 
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Flows_1</td>
+    <td>Simple packet flow</td>
+    <td></td>
+    <td>Send a simple packet using scapy with just an IP frame</td>
+    <td>Packet should be received in ONOS</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Flows_2</td>
+    <td>Ethernet frame packet</td>
+    <td></td>
+    <td>Add a flow with only the MAC address</td>
+    <td>Packets should be received by filtering for only the mac address</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Flows_3</td>
+    <td>Ethernet and IP frame packet</td>
+    <td></td>
+    <td>Add a flow with an IPv4 src, dst, and ethernet type selectors specified</td>
+    <td>Packets should be received by filtering for only IP packets</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Flows_4</td>
+    <td>Ethernet frame and VLAN tag packet</td>
+    <td></td>
+    <td>Add a flow with the VLAN selector specified</td>
+    <td>Packets should be received by filtering on the VLAN interface and for packets with a VLAN tag
+ </td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Flows_5</td>
+    <td>Ethernet frame and MPLS label packet</td>
+    <td></td>
+    <td>Add a flow with the MPLS selector specified</td>
+    <td>Packets should be received by filtering for the specified MPLS label</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Flows_6</td>
+    <td>Ethernet, IP, and TCP frame</td>
+    <td></td>
+    <td>Add a flow with the TCP dst, ethernet type, and ip protocol selectors specified</td>
+    <td>Packet should be received by filtering for only TCP packets.
+ </td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Flows_7</td>
+    <td>Ethernet, IP, and UDP frame</td>
+    <td></td>
+    <td>Add a flow with the UDP dst, ethernet type, and ip protocol selectors specified</td>
+    <td>Packets should be received by filtering for only UDP packets.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Flows_8</td>
+    <td>Deletion of flows</td>
+    <td></td>
+    <td>Delete flows that were added</td>
+    <td>HTTP response is 204</td>
+    <td></td>
+  </tr>
+</table>
+
+
+ 
+
+** **
+
+**Metrics:**
+
+ 
+
+**R****EST API is used for Collecting and Querying System Metrics.**
+
+**1. Install CollectD plugin which is in charging of reporting all metric values to ONOS through REST API.**
+
+**2. Install ONOS and activate CPMan application to receive system metrics from CollectD**.
+
+ 
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Functio Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Metrics_1</td>
+    <td>Collector- CPU metrics</td>
+    <td></td>
+    <td>POST /collector/cpu_metrics</td>
+    <td>Collects CPU metrics</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_2</td>
+    <td>Collector- network I/O metrics</td>
+    <td></td>
+    <td>POST /collector/network_metrics</td>
+    <td>Collects network I/O metrics include in/out-bound packets/bytes statistics</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_3</td>
+    <td>Collector-disk I/O metrics</td>
+    <td></td>
+    <td>POST /collector/disk_metrics</td>
+    <td>Collects disk I/O metrics include read and write bytes</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_4</td>
+    <td>Collector-system info</td>
+    <td></td>
+    <td>POST /collector/system_info</td>
+    <td>Collects system information</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_5</td>
+    <td>Collector-memory metrics</td>
+    <td></td>
+    <td>POST /collector/memory_metrics</td>
+    <td>Collects memory metrics</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_6</td>
+    <td>Control-Memory metrics</td>
+    <td></td>
+    <td>GET /controlmetrics/memory_metrics</td>
+    <td>List memory metrics of all network resources</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_7</td>
+    <td>Control-message metrics</td>
+    <td></td>
+    <td>GET /controlmetrics/messages</td>
+    <td>List control message metrics of all devices</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_8</td>
+    <td>Control-message metrics</td>
+    <td></td>
+    <td>GET /controlmetrics/messages/{deviceId}</td>
+    <td>List control message metrics of a given device</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_9</td>
+    <td>Control-CPU metrics</td>
+    <td></td>
+    <td>GET /controlmetrics/cpu_metrics</td>
+    <td>List CPU metrics</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_10</td>
+    <td>Control-disk metrics</td>
+    <td></td>
+    <td>GET /controlmetrics/disk_metrics</td>
+    <td>List disk metrics of all disk resources</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_11</td>
+    <td>Verify the intent installation latency</td>
+    <td></td>
+    <td>1. Install the intent metrics feature by  "onos-app-metrics-intent" in the ONOS_FEATURE configuration list.
+2. Load the "onos-app-metrics-intent" feature from the ONOS CLI while ONOS is running.                                      3.Install a single intent from the CLI
+ </td>
+    <td>Command :
+onos:intents-events-metrics
+Should show the detailed information of all the event rate and the last event timestamp</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_12</td>
+    <td>Verify the intent installation latency in JSON format</td>
+    <td></td>
+    <td>1. Install the intent metrics feature by  "onos-app-metrics-intent" in the ONOS_FEATURE configuration list.
+2. Load the "onos-app-metrics-intent" feature from the ONOS CLI while ONOS is running.
+3. Install a single intent from the CLI</td>
+    <td>Command :
+onos:intents-events-metrics --json
+Should show the information in json format.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_13</td>
+    <td>Listing ONOS intent events</td>
+    <td></td>
+    <td>onos> onos:intents-events</td>
+    <td>It should list 100 intent related events.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_14</td>
+    <td>Verify topology event metrics</td>
+    <td></td>
+    <td>Disable a switch port with a link connecting that switch to another one</td>
+    <td>Command :
+onos:topology-events-metrics
+Should show the detailed information of all the event rate and the last event timestamp</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_15</td>
+    <td>Verify topology event metrics</td>
+    <td></td>
+    <td>Disable a switch port with a link connecting that switch to another one</td>
+    <td>Command :
+onos:topology-events-metrics --json
+Should show the information in json format.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Metrics_16</td>
+    <td>Listing topology events</td>
+    <td></td>
+    <td>onos> onos:topology-events</td>
+    <td>This should list last 100 topology events.</td>
+    <td></td>
+  </tr>
+</table>
+
+
+ 
+
+ 
+
+**Platform tests:**
+
+ 
+
+**Docker engine and docker.py should be installed on test host.**
+
+ 
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Plat_1</td>
+    <td>Verify the docker status</td>
+    <td></td>
+    <td></td>
+    <td>If its running, docker status should return true. </td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_2</td>
+    <td>Pull (default) "onosproject/onos:latest" image</td>
+    <td></td>
+    <td></td>
+    <td>Pulling should be successful.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_3</td>
+    <td>Create new container for onos</td>
+    <td></td>
+    <td></td>
+    <td>Container should get successfully created.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_4</td>
+    <td>Get IP address on ONOS containers</td>
+    <td></td>
+    <td></td>
+    <td>Container IPs should get listed.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_5</td>
+    <td>check standalone apps status</td>
+    <td></td>
+    <td></td>
+    <td>"drivers" app should be in ACTIVE state AND all builtin apps in "INSTALLED" state</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_6</td>
+    <td>Activate "proxyarp" and "fwd" apps and check apps status</td>
+    <td></td>
+    <td></td>
+    <td>It should be in "ACTIVE" state</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_7</td>
+    <td>Deactivate "proxyarp" and "fwd" apps and check app status</td>
+    <td></td>
+    <td></td>
+    <td>It should be in "Installed" state</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_8</td>
+    <td>ONOS exceptions check</td>
+    <td></td>
+    <td></td>
+    <td>After test, there should be no logs for exceptions.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Plat_9</td>
+    <td>post-test clean env</td>
+    <td></td>
+    <td></td>
+    <td>No containers and images should be left.</td>
+    <td></td>
+  </tr>
+</table>
+
+
+ 
+
+**Ovsdb:**
+
+ 
+
+**Onos should be running well and Install feature ovsdb-web-provider ovsdb onos-core-netvirt on onos.**
+
+ 
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>TestSteps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>OVSDB_1</td>
+    <td>OVSDB connection setup and teardown</td>
+    <td></td>
+    <td>Single ONOS and one OVS
+1.Configure ovs-vsctl set-manager tcp:{ip}:6640 on OVS.Check the OVSDB connection on ONOS.
+2.Configure ovs-vsctl del-manager tcp:{ip}:6640 on OVS.Check the OVSDB connection on ONOS. </td>
+    <td>1.OVSDB connection is up.
+2.OVSDB connection is down.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>OVSDB_2</td>
+    <td>Default configuration of bridge and vxlan install</td>
+    <td></td>
+    <td>Single ONOS and two OVS
+1.Configure ovs-vsctl set-manager tcp:{ip}:6640 on OVS1.Check the OVSDB connection on ONOS.Check the bridge and vxlan configuration on OVS1.
+2.Configure ovs-vsctl set-manager tcp:{ip}:6640 on OVS1.Check the OVSDB connection on ONOS.Check the bridge and vxlan configuration on OVS1 and OVS2.</td>
+    <td>1.OVS1 has an br_int.
+2.OVS1 and OVS2 has br_int and vxlan tunnel.
+3.ONOS devices add two sw.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>OVSDB_3</td>
+    <td>OPENFLOW connection setup automatic</td>
+    <td></td>
+    <td>Single ONOS and one OVS
+1.Configure ovs-vsctl set-manager tcp:{ip}:6640 on OVS.Check the Openflow connection on ONOS. </td>
+    <td>OPENFLOW connection is up.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>OVSDB_4</td>
+    <td>Default flow tables install</td>
+    <td></td>
+    <td>Single ONOS and two OVS
+1.Configure ovs-vsctl set-manager tcp:{ip}:6640 on OVS1 and OVS2.Check the default flow tables on OVS and ONOS.</td>
+    <td>1.default flows is correct.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>OVSDB_5</td>
+    <td>Simulation VM go online check flow tables install</td>
+    <td></td>
+    <td>1.Configure ovs-vsctl set-manager tcp:{ip}:6640 on OVS1 and OVS2.Check the flow tables on OVS and ONOS.
+2.Create a port on OVS1.Check the flow tables on OVS and ONOS.
+3.Create a port on OVS2.Check the flow tables on OVS and ONOS.
+ </td>
+    <td>1.OVS and ONOS have default flows.
+2.OVS and ONOS add correct flows.
+3.OVS and ONOS add correct flows. </td>
+    <td></td>
+  </tr>
+</table>
+
+
+ 
+
+ 
+
+**Netconf:**
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Netconf_1</td>
+    <td>Check for devices in ONOS</td>
+    <td></td>
+    <td>1. Upload the configuration(netconf-cfg.json ) in the local host using curl command.
+2.  onos> devices</td>
+    <td>Devices should be present in ONOS.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Netconf_2</td>
+    <td>Verify the logs in ONOS</td>
+    <td></td>
+    <td>1. Upload the configuration(netconf-cfg.json ) in the local host using curl command.
+ 2. onos> devices.
+3. Onos>logs</td>
+    <td>logs shouldn't contain NETCONF related exceptions</td>
+    <td></td>
+  </tr>
+</table>
+
+
+** **
+
+ 
+
+**Proxy ARP:**
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>PRARP_1</td>
+    <td>Verify if Proxy ARP is working properly</td>
+    <td></td>
+    <td>Send an ARP request to a host which is on the other side of the gateway</td>
+    <td>Proxy ARP should repsond back to the ARP requests.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>PRARP_2</td>
+    <td>Verify that if the target host is on the same network, then proxy arp (ONOS)shouldnt respond</td>
+    <td></td>
+    <td>Send an ARP request to a host which is on the same network.</td>
+    <td>Proxy ARP (ONOS) shouldn't respond.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>PRARP_3</td>
+    <td>Check the behavior when the Destination route is not in the table</td>
+    <td></td>
+    <td>Let the destination route be not present in the config file.</td>
+    <td>Packets should get dropped.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>PRARP_4</td>
+    <td>Check the behavior when proxy arp is disabled.</td>
+    <td></td>
+    <td>1. Send an ARP request which is on different network.
+2. Disable the Proxy ARP.</td>
+    <td>Packets should get dropped.</td>
+    <td></td>
+  </tr>
+</table>
+
+
+ 
+
+ 
+
+**Network config link provider:**
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Netcfg_LP_1</td>
+    <td>Check for the ACTIVE state of provider</td>
+    <td></td>
+    <td>1. Configure the links in netcfg.
+2. Check the traffic flow</td>
+    <td>There should be traffic flow over the links which are configured in netcfg.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Netcfg_LP_2</td>
+    <td>Verify the STRICT state</td>
+    <td></td>
+    <td>1. Configure the links in netcfg.
+2. Check the traffic flow over the links which are not configured</td>
+    <td>There should not be any traffic flow over the links which are configured in netcfg.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Netcfg_LP_3</td>
+    <td>Check for the error indication when source and destinat ion will not match</td>
+    <td></td>
+    <td>Configure a link in netcfg and check for the error indication when source and destination doesnt match </td>
+    <td>A  link is created with an error indication, which allows the GUI to display an error indication to the user</td>
+    <td></td>
+  </tr>
+</table>
+
+
+** **
+
+** **
+
+**Network Configuration:**
+
+** **
+
+**REST api are used to add/modify/delete and view network configurations in ONOS.**
+
+** **
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>Netcfg_1</td>
+    <td>Uninstall, and install ONOS</td>
+    <td></td>
+    <td> </td>
+    <td>Installs and Uninstalls ONOS correctly</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Netcfg_2</td>
+    <td>check undiscovered device cfgs  are distributed to all nodes.
+ </td>
+    <td></td>
+    <td>Add some device configurations for undiscovered devices and then check they are distributed to all 
+nodes. </td>
+    <td>The given NetCfgs should get added and distributed to all ONOS nodes</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Netcfg_3</td>
+    <td>Verify the Network Graph</td>
+    <td></td>
+    <td>Check that devices appear or don't appear in the Network Graph according to the initial NetCfgs</td>
+    <td>Allowed devices should appear and the disallowed devices shouldn’t appear in Network graph.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Netcfg_4</td>
+    <td>check discovered device cfgs  are distributed to all nodes</td>
+    <td></td>
+    <td>Add some device configurations for discovered devices and then check they are distributed to all nodes.
+ </td>
+    <td>The given NetCfgs should get added and distributed to all ONOS nodes</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>Netcfg_5</td>
+    <td>Remove Network Configurations.</td>
+    <td></td>
+    <td>Remove Network Configurations using different methods. I.E. delete a device, delete multiple devices, delete all configs</td>
+    <td>The deleted NetCfgs should get deleted from all the nodes.</td>
+    <td></td>
+  </tr>
+</table>
+
+
+ 
+
+ 
+
+**Reactive Routing:**
+
+<table>
+  <tr>
+    <td>ID</td>
+    <td>Title</td>
+    <td>Function Name</td>
+    <td>Test Steps</td>
+    <td>Expected Result</td>
+    <td>Actual Result</td>
+  </tr>
+  <tr>
+    <td>RR_1</td>
+    <td>Verify the traffic flow when both the hosts are in SDN network</td>
+    <td></td>
+    <td>Configure 2 hosts to be in SDN network . Check the traffic flow</td>
+    <td>There should be traffic flow between 2 hosts</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>RR_2</td>
+    <td>Verify the traffic flow from SDN host to internet host.</td>
+    <td></td>
+    <td>Configure one host in SDN network and another host in internet.
+Check the traffic flow</td>
+    <td>There should be traffic flow from SDN network to internet</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>RR_3</td>
+    <td>Verify the traffic flow from internet host to SDN host.</td>
+    <td></td>
+    <td>Configure one host in internet and another host in SDN network.
+Check the traffic flow</td>
+    <td>There should be a traffic flow from internet host to SDN network.</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td>RR_4</td>
+    <td>Verify the traffic drop when there is no matchable ip prefix</td>
+    <td></td>
+    <td>Send a traffic from one host to another host which is not matching with the file sdnip.json
+ </td>
+    <td>Packets should get dropped.</td>
+    <td></td>
+  </tr>
+</table>
+
+
+ 
+
+ 
+
+ 
+
+ 
+