Added control plane testing

Change-Id: I2fd8c4cb986261c6c35a0a8b45517528de6a6ea1
diff --git a/conf.py b/conf.py
index 104d20b..f38d8c4 100644
--- a/conf.py
+++ b/conf.py
@@ -103,7 +103,7 @@
 
 # Ignore link check for the following websites
 linkcheck_ignore = [
-    'https://www.opennetworking.org/trellis/',
+    'https://www.opennetworking.org/*',
 ]
 
 # -- Options for HTML output -------------------------------------------------
diff --git a/index.rst b/index.rst
index 39b4c6e..c154729 100644
--- a/index.rst
+++ b/index.rst
@@ -70,7 +70,8 @@
 
 Learn More
 ==========
-You can find more information about Trellis including full pla brief at https://www.opennetworking.org/trellis/.
+- `Trellis Website <https://www.opennetworking.org/trellis>`_
+- `Trellis Platform Brief <https://www.opennetworking.org/wp-content/uploads/2019/09/TrellisPlatformBrief.pdf>`_
 
 .. toctree::
    :maxdepth: 1
diff --git a/tables/testing-plan.csv b/tables/testing-plan.csv
new file mode 100644
index 0000000..a5b7d70
--- /dev/null
+++ b/tables/testing-plan.csv
@@ -0,0 +1,414 @@
+ID,Feature,Scenario,"# of ONOS
+instances",Topology,Pass Criteria,"Implemented/
+Status"

+BRIDGING01,L2 Bridging,"Connectivity between two untagged hosts
+(Ports are configured as vlan-untagged)",1,0x1,All pings succeed,Implemented

+BRIDGING02,L2 Bridging,,1,0x2,All pings succeed,Implemented

+BRIDGING03,L2 Bridging,,1,2x2,All pings succeed,Implemented

+BRIDGING04,L2 Bridging,,1,2x4,All pings succeed,Implemented

+BRIDGING05,L2 Bridging,,3,0x1,All pings succeed,Implemented

+BRIDGING06,L2 Bridging,,3,0x2,All pings succeed,Implemented

+BRIDGING07,L2 Bridging,,3,2x2,All pings succeed,Implemented

+BRIDGING08,L2 Bridging,,3,2x4,All pings succeed,Implemented

+BRIDGING11~18,L2 Bridging,"Connectivity between two tagged hosts
+(Ports are configured as vlan-tagged)",,,All pings succeed,Implemented

+BRIDGING21~28,L2 Bridging,"Connectivity between two untagged hosts
+(Ports are configured as vlan-native withvlan-tagged)",,,All pings succeed,Implemented

+BRIDGING31~38,L2 Bridging,"Connectivity between two untagged hosts
+(Ports are configured as vlan-native with vlan-tagged,
+and vlan-untagged)",,,All pings succeed,Implemented

+BRIDGING41~48,L2 Bridging,"Connectivity between untagged host and tagged host
+(Ports are configured as vlan-untagged and
+vlan-tagged with same vlan id, respectively)",,,All pings succeed,Implemented

+BRIDGING51~58,L2 Bridging,"Connectivity between two untagged hosts with different vlan id
+(Ports are configured as vlan-untagged 10 and 20, respectively)",,,All pings fail,Implemented

+BRIDGING61~68,L2 Bridging,"Connectivity between two tagged hosts with different vlan id
+(Ports are configured as vlan-tagged 10 and 20, respectively)",,,All pings fail,Implemented

+BRIDGING71~78,L2 Bridging,"Connectivity between untagged and tagged hosts with different vlan id
+(Ports are configured as vlan-untagged 10 and
+vlan-tagged 20, respectively)",,,All pings fail,Implemented

+ROUTING001,Routing v4/v6,"IPv4 pingall between all the hosts in the topology.
+(All routing tests also check IP address assignment to hosts and specific number of flows and groups in the switches)",3,2x5,"For all routing tests:
+All pings succeed; Host IP addresses are expected; Flow/group numbers are expected",Implemented

+ROUTING002,Routing v4/v6,IPv6 pingall between all the hosts in the topology.,3,2x5,,Implemented

+ROUTING003,Routing v4/v6,All IPv4 hosts ping each other and all IPv6 hosts ping each other.,3,2x5,,Implemented

+ROUTING004,Routing v4/v6,"IPv4 pingall between all the hosts in the topology.
+IPv4 ping from internal hosts to external hosts.",3,2x5,,Implemented

+ROUTING005,Routing v4/v6,"IPv6 pingall between all the hosts in the topology.
+IPv6 ping from internal hosts to external hosts.",3,2x5,,Implemented

+ROUTING006,Routing v4/v6,"All IPv4 hosts ping each other and all IPv6 hosts ping each other.
+IPv4 and IPv6 ping from internal hosts to external hosts.",3,2x5,,Implemented

+ROUTING007,Routing v4/v6,"Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING008,Routing v4/v6,"Ping between ipv6 hosts and an external host that is not configured inexternal router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING009,Routing v4/v6,"Ping between ipv4 and ipv6 hosts and an external host that is not configured inexternal router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING101,Routing v4/v6,"Kill and recover links.
+Ping between all ipv4 hosts in the topology.",3,2x5,,Implemented

+ROUTING102,Routing v4/v6,"Kill and recover links.
+Ping between all ipv6 hosts in the topology.",3,2x5,,Implemented

+ROUTING103,Routing v4/v6,"Kill and recover links.
+Ping between all ipv4 and ipv6 hosts in the topology.",3,2x5,,Implemented

+ROUTING104,Routing v4/v6,"Kill and recover links
+Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts",3,2x5,,Implemented

+ROUTING105,Routing v4/v6,"Kill and recover links
+Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts",3,2x5,,Implemented

+ROUTING106,Routing v4/v6,"Kill and recover links
+Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts",3,2x5,,Implemented

+ROUTING107,Routing v4/v6,"Kill and recover links
+Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING108,Routing v4/v6,"Kill and recover links
+Ping between ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING109,Routing v4/v6,"Kill and recover links
+Ping between ipv4/ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING201,Routing v4/v6,"Kill and recover spine switches.
+Ping between all ipv4 hosts in the topology.",3,2x5,,Implemented

+ROUTING202,Routing v4/v6,"Kill and recover spine switches.
+Ping between all ipv6 hosts in the topology.",3,2x5,,Implemented

+ROUTING203,Routing v4/v6,"Kill and recover spine switches.
+Ping between all ipv4 and ipv6 hosts in the topology.",3,2x5,,Implemented

+ROUTING204,Routing v4/v6,"Kill and recover spine switches
+Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts",3,2x5,,Implemented

+ROUTING205,Routing v4/v6,"Kill and recover spine switches
+Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts",3,2x5,,Implemented

+ROUTING206,Routing v4/v6,"Kill and recover spine switches
+Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts",3,2x5,,Implemented

+ROUTING207,Routing v4/v6,"Kill and recover spine switches
+Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING208,Routing v4/v6,"Kill and recover spine switches
+Ping between ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING209,Routing v4/v6,"Kill and recover spine switches
+Ping between ipv4/ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING301,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between all ipv4 hosts in the topology.",3,2x5,,Implemented

+ROUTING302,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between all ipv6 hosts in the topology.",3,2x5,,Implemented

+ROUTING303,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between all ipv4 and ipv6 hosts in the topology.",3,2x5,,Implemented

+ROUTING304,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts",3,2x5,,Implemented

+ROUTING305,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts",3,2x5,,Implemented

+ROUTING306,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts",3,2x5,,Implemented

+ROUTING307,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING308,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+ROUTING309,Routing v4/v6,"Kill and recover ONOS nodes
+Ping between ipv4/ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command",3,2x5,,Implemented

+DHCP relay test,"DHCP relay v4/v6
+(WIP)","Clients gets IP or IPv6 address from DHCP server
+The host store and router store should includes specific hosts and routes.
+Only one switch in DHCP relay test",,,,

+DHCPRELAY01,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp4-1,"find 4+1 hosts from host store with correct information
+All hosts should get IP address",Implemented

+DHCPRELAY02,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch indirectly (via gateway)",3,dhcp4-2,"find 4+1 hosts from host store with correct information
+All hosts should get IP address","Implemented
+(test is failing)"

+DHCPRELAY03,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests
+Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)
+Server: 1 server attached to switch directly",3,dhcp4-3,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IP address","Implemented
+(test is failing)"

+DHCPRELAY04,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests
+Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)
+Server: 1 server attached to switch indirectly (via gateway)",3,dhcp4-4,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IP address","Implemented
+(test is failing)"

+DHCPRELAY05,"DHCP relay v4/v6
+(WIP)","Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)
+Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host",3,dhcp4-5,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IP address","Implemented
+(test is failing)"

+DHCPRELAY06,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests
+Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via special DHCP relay)
+Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host
+""DhcpRelayAgentIp"" address should be configured for indirect hosts",3,dhcp4-6,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IP address","Implemented
+(test is failing)"

+DHCPRELAY11,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp6-1,"find 4+1 hosts from host store with correct information
+All hosts should get IPv6 address",Implemented

+DHCPRELAY12,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch indirectly (via gateway)",3,dhcp6-2,"find 4+1 hosts from host store with correct information
+All hosts should get IPv6 address","Implemented
+(test is failing)"

+DHCPRELAY13,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests
+Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)
+Server: 1 server attached to switch directly",3,dhcp6-3,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IPv6 address","Implemented
+(test is failing)"

+DHCPRELAY14,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests
+Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)
+Server: 1 server attached to switch indirectly (via gateway)",3,dhcp6-4,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IPv6 address","Implemented
+(test is failing)"

+DHCPRELAY15,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests
+Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)
+Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host",3,dhcp6-5,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IPv6 address","Implemented
+(test is failing)"

+DHCPRELAY16,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests
+Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via special DHCP relay)
+Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host
+""DhcpRelayAgentIp"" address should be configured for indirect hosts",3,dhcp6-6,"find 2+1 hosts from host store with correct information
+find 2 routes from host store with correct information
+All hosts should get IPv6 address","Implemented
+(test is failing)"

+DHCPRELAY21,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests with tagged hosts
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp4-1,"find 4+1 hosts from host store with correct information
+All hosts should get IP address",Implemented

+DHCPRELAY22,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests with tagged hosts
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch indirectly (via gateway)",3,dhcp4-2,"find 4+1 hosts from host store with correct information
+All hosts should get IP address",Implemented

+DHCPRELAY31,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests with tagged hosts
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp6-1,"find 4+1 hosts from host store with correct information
+All hosts should get IPv6 address","Implemented
+(test is failing)"

+DHCPRELAY41,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests with dual-homed hosts
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp4-7,"find 4+1 hosts from host store with correct information
+All hosts should get IP address",Implemented

+DHCPRELAY51,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests with dual-homed hosts
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp6-7,"find 4+1 hosts from host store with correct information
+All hosts should get IPv6 address",Implemented

+DHCPRELAY61,"DHCP relay v4/v6
+(WIP)","DHCP v4 tests with dual-homed tagged hosts
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp4-7,"find 4+1 hosts from host store with correct information
+All hosts should get IP address",Implemented

+DHCPRELAY71,"DHCP relay v4/v6
+(WIP)","DHCP v6 tests with dual-homed tagged hosts
+Client: 4 clients attached to switch directly
+Server: 1 server attached to switch directly",3,dhcp6-7,"find 4+1 hosts from host store with correct information
+All hosts should get IPv6 address","Implemented
+(test is failing)"

+MCAST1,"Multicast v4/v6
+(WIP)",Start 2x2 topology of hardware switches,3,2x2,All switches are up and discovered by ONOS,Implemented

+MCAST01,"Multicast v4/v6
+(WIP)",Sink and source on the same dual-tor leaf,3,2x5,"Flows and groups are installed
+Traffic is properly forwarded
+Flows and groups are removed",Implemented

+MCAST02,"Multicast v4/v6
+(WIP)",Sink and source on different dual-tor leaves,3,2x5,"Flows and groups are installed
+Traffic is properly forwarded
+Flows and groups are removed",Implemented

+MCAST03,"Multicast v4/v6
+(WIP)",Sink and source on different leaves (sink on single-tor),3,2x5,"Flows and groups are installed
+Traffic is properly forwarded
+Flows and groups are removed",Implemented

+MCAST04,"Multicast v4/v6
+(WIP)",Combines MCAST01 and MCAST02,3,2x5,"Flows and groups are installed
+Traffic is properly forwarded
+Flows and groups are removed",Implemented

+MCAST05,"Multicast v4/v6
+(WIP)",Combines MCAST02 and MCAST03,3,2x5,"Flows and groups are installed
+Traffic is properly forwarded
+Flows and groups are removed",Implemented

+MCAST06,"Multicast v4/v6
+(WIP)",Combines MCAST01 and MCAST03,3,2x5,"Flows and groups are installed
+Traffic is properly forwarded
+Flows and groups are removed",Implemented

+MCAST07,"Multicast v4/v6
+(WIP)","Combines MCAST01, MCAST02 and MCAST03",3,2x5,"Flows and groups are installed
+Traffic is properly forwarded
+Flows and groups are removed",Implemented

+MCAST08,"Multicast v4/v6
+(WIP)",Combines MCAST07 with route removal,3,2x5,Flows and groups are removed,Implemented

+MCAST101,"Multicast v4/v6
+(WIP)",Combines MCAST07 with a link failure (link ingress-spine),3,2x5,"Flows and groups are installed
+Traffic is properly forwarded",Implemented

+MCAST102,"Multicast v4/v6
+(WIP)",Combines MCAST07 with a link failure (link spine-egress-dt-leaf),3,2x5,"Flows and groups are installed
+Traffic is properly forwarded",Implemented

+MCAST103,"Multicast v4/v6
+(WIP)",Combines MCAST07 with a link failure (link spine-egress-st-leaf),3,2x5,"Flows and groups are installed
+Traffic is properly forwarded",Implemented

+MCAST201,"Multicast v4/v6
+(WIP)",Combines MCAST07 with spine failure,3,2x5,"Flows and groups are installed
+Traffic is properly forwarded",Implemented

+MCAST202,"Multicast v4/v6
+(WIP)",Combines MCAST07 with ingress failure and recovery,3,2x5,"Flows and groups are removed (failure)
+Flows and groups are installed (recovery)
+Traffic is properly forwarded (recovery)",Implemented

+MCAST203,"Multicast v4/v6
+(WIP)",Combines MCAST07 with egress-dt-leaf failure and recovery,3,2x5,"Flows and groups are removed for the failing sink (failure)
+Traffic is properly forwarded on remaining sinks (failure)",Implemented

+MCAST204,"Multicast v4/v6
+(WIP)",Combines MCAST07 with egress-st-leaf failure and recovery,3,2x5,"Flows and groups are removed for the failing sink (failure)
+Traffic is properly forwarded on remaining sinks (failure)
+Flows and groups are installed (recovery)
+Traffic is properly forwarded (recovery)",Implemented

+MCAST205,"Multicast v4/v6
+(WIP)",Combines MCAST07 with egress leaves failure and recovery,3,2x5,"Flows and groups are removed for the failing sinks (failure)
+Traffic is properly forwarded on remaining sink (failure)
+Flows and groups are installed (recovery)
+Traffic is properly forwarded (recovery)",Implemented

+MCAST301,"Multicast v4/v6
+(WIP)",Combines MCAST07 with ONOS failure and recovery,3,2x5,"Flows and groups are installed(failure)
+Traffic is properly forwarded(failure)
+Flows and groups are installed (recovery)
+Traffic is properly forwarded (recovery)",Implemented

+DYNAMIC01,"Dynamic Interface Configuration
+(WIP)","P1: untagged 10 --> tagged 10
+h1: not configured --> VLAN ID 10
+(P2: untagged 10, P3 and P4: tagged 20 and native 10)
+(h2-h4: not configured)",3,0x1,"Ping succeeds between:
+h1, h2, h3, h4",Implemented

+DYNAMIC02,"Dynamic Interface Configuration
+(WIP)","P1: untagged 10 --> untagged 20(P2: untagged 10, P3 and P4: tagged 20 and native 10
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h3, h4",Implemented

+DYNAMIC03,"Dynamic Interface Configuration
+(WIP)","P1, P2: untagged 10 --> untagged 110
+(P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC04,"Dynamic Interface Configuration
+(WIP)","P1: untagged 10 --> tagged 20
+h1: not configured --> VLAN ID 20
+(P2: untagged 10, P3 and P4: untagged 20)
+(h2-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h3, h4",Implemented

+DYNAMIC05,"Dynamic Interface Configuration
+(WIP)","P1: untagged 10 --> tagged 20, native 10
+(P2: untagged 10, P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC06,"Dynamic Interface Configuration
+(WIP)","P1 and P2: untagged 10 --> tagged 120, native 110
+(P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC07,"Dynamic Interface Configuration
+(WIP)","P1: tagged 10 --> untagged 10h1: VLAN ID 10 --> not configured
+(P2: untagged 10, P3 and P4: untagged 20)
+(h2-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC08,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20 --> tagged 20, native 10
+(P2: untagged 10, P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC09,"Dynamic Interface Configuration
+(WIP)","P1, P2: tagged 10 --> tagged 120, native 110
+h1, h2: VLAN ID 10 --> not configured(P3 and P4: untagged 20)
+(h3 and h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC10,"Dynamic Interface Configuration
+(WIP)","P1: tagged 10, native 20 --> untagged 20
+(P2: tagged 10, native 20, P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2, h3, h4",Implemented

+DYNAMIC11,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20, native 10 --> tagged 20
+(P2: tagged 20, native 10, P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping fails between:
+h1 <--> h2, h3, h4",Implemented

+DYNAMIC12,"Dynamic Interface Configuration
+(WIP)","P1, P2: tagged 20, native 10 --> tagged 20, native 110
+(P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC13,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20, native 10 --> tagged 120, native 10
+(P2:tagged 20, native 10,P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h2
+h3, h4",Implemented

+DYNAMIC14,"Dynamic Interface Configuration
+(WIP)","P1: untagged 10 --> tagged 20
+(P2: untagged 10, P3 and P4: untagged 20)
+(h1: VLAN ID 20, h2-h4: not configured)",3,2x2,"Ping succeeds between:
+h1, h3, h4",Implemented

+DYNAMIC15,"Dynamic Interface Configuration
+(WIP)","P1: untagged 10 --> tagged 120
+(P2: untagged 10, P3 and P4: untagged 20)
+(h1: VLAN ID 20, h2-h4: not configured)",3,2x2,"Ping fails between:
+h1 <--> h2, h3, h4",Implemented

+DYNAMIC16,"Dynamic Interface Configuration
+(WIP)","P1: untagged 10 --> tagged 20, native 10
+(P2: untagged 10, P3 and P4: tagged 20)
+(h1, h3, h4: VLAN ID 20, h2: not configured)",3,2x2,"Ping succeeds between:
+h1, h3, h4",Implemented

+DYNAMIC17,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20 --> tagged 120
+(P2: untagged 10, P3 and P4: tagged 20)
+(h1, h3, h4: VLAN ID 20, h2: not configured)",3,2x2,"Ping fails between:
+h1 <--> h2, h3, h4",Implemented

+DYNAMIC18,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20 --> tagged 20, native 10
+(P2: untagged 10, P3 and P4: tagged 20)
+(h1, h3, h4: VLAN ID 20, h2: not configured)",3,2x2,"Ping succeeds between:
+h1, h3, h4",Implemented

+DYNAMIC19,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20, native 10 --> untagged 20
+(P2: untagged 10, P3 and P4: tagged 20)
+(h1, h3, h4: VLAN ID 20, h2: not configured)",3,2x2,"Ping fails between:
+h1 <--> h2, h3, h4",Implemented

+DYNAMIC20,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20, native 10 --> tagged 20
+(P2: untagged 10, P3 and P4: tagged 20)
+(h1, h3, h4: VLAN ID 20, h2: not configured)",3,2x2,"Ping succeeds between:
+h1, h3, h4",Implemented

+DYNAMIC21,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20, native 10 --> tagged 20, native 110
+(P2: untagged 10, P3 and P4: tagged 20)
+(h1, h3, h4: VLAN ID 20, h2: not configured)",3,2x2,"Ping succeeds between:
+h1, h3, h4",Implemented

+DYNAMIC22,"Dynamic Interface Configuration
+(WIP)","P1: tagged 20, native 10 --> tagged 120, native 10
+(P2: untagged 10, P3 and P4: tagged 20)
+(h1, h3, h4: VLAN ID 20, h2: not configured)",3,2x2,"Ping fails between:
+h1 <--> h2, h3, h4",Implemented

+DYNAMIC23,"Dynamic Interface Configuration
+(WIP)","Consecutive configuration changes:
+P1: untagged 20 --> Tagged 10 --> Untagged 50 --> Tagged 20 --> Tagged 40 with Native 30 --> Tagged 20 --> Untagged 20 --> Untagged 10
+(P2: tagged 10, native 20, P3 and P4: untagged 20)
+(h1-h4: not configured)",3,2x2,"Ping succeeds between:
+h1 <---> h2",Implemented

+DYNAMIC24,"Dynamic Interface Configuration
+(WIP)","Changing a subnet
+Leaf1-P1: untagged 20 and 10.0.2.254/24 --> untagged 60 and 10.0.6.254/24
+h1: 10.0.2.1 --> 10.0.6.1(Leaf1-P2, P3, P4: 10.0.2.254/24,h2, h3, h4: 10.0.2.0/24)
+(Leaf2-P1, P2, P3 P4: 10.0.3.254/24, h5, h6, h7, h8: 10.0.3.0/24)",3,2x2,"Ping succeeds between:
+h1 <---> h5",Implemented
\ No newline at end of file
diff --git a/testing/control-plane-testing.rst b/testing/control-plane-testing.rst
index b7dc161..f1c94c7 100644
--- a/testing/control-plane-testing.rst
+++ b/testing/control-plane-testing.rst
@@ -1,5 +1,100 @@
 Control Plane Testing
 *********************
 
-.. note::
-	We are updating this page. More coming soon.
\ No newline at end of file
+TestON Setup
+============
+
+Setup ONOS Cluster
+------------------
+Follow instructions in `Install ONOS Controller <../installation.html#install-controller-onos>`_ to setup and run ONOS cluster
+
+
+Setup Mininet Environment
+-------------------------
+- Clone Mininet and run the install script
+
+	.. code-block:: console
+
+		$ cd ~
+		$ git clone https://github.com/jhall11/mininet.git      # Clone the repository
+		$ cd mininet
+		$ git branch -v -a                                      # Show all the remote repositories
+		$ git checkout -b dynamic_topo origin/dynamic_topo      # Checkout the dynamic_topo repository
+		$ cd util
+		$ sudo ./install.sh -3fvn                               # Install OpenFlow 1.3, Open Vswitch and Mininet dependencies
+
+- Follow `Trellis in a Box <https://github.com/opennetworkinglab/routing/tree/master/trellis>`_ to install Trellis dependencies, such as DHCP server and Quagga.
+
+	.. note::
+		If DHCP server does not properly run because of a permission error, please see `this <https://help.ubuntu.com/community/isc-dhcp-server#Permission_issues_with_ISC-DHCP_server>`_ to solve the problem.
+
+- Set environment variables as described in `Create a Cell File <../installation.html#create-a-cell-file>`_
+
+
+Setup Test Station
+------------------
+- Follow `TestON installation guide <https://wiki.onosproject.org/display/ONOS/Installation>`_ to install TestON
+- (Optional) Add ``OnosSystemTest/TestON/bin`` to ``$PATH`` for convenience
+
+
+Run Tests
+=========
+
+Before you run any test, it is recommended to run cleanup script to kill any TestON, ssh, and Mininet sessions that are running.
+
+.. code-block:: console
+
+	cd ~/OnosSystemTest/TestON/bin
+	./cleanup.sh
+
+Fabric-related tests are located in ``OnosSystemTest/TestON/tests/USECASE/SegmentRouting/``.
+Each individual test can be run by executing ``cli.py`` script with test name. For example:
+
+.. code-block:: console
+
+	cd ~/OnosSystemTest/TestON/bin
+	./cli.py run SRSanity
+
+
+Test Plan
+=========
+
+Topology
+--------
+- 0x1 single ToR
+- 0x2 dual-homed ToR
+- 2x2 leaf-spine
+- 2x4 leaf-spine with dual-homed ToR
+- 2x3 leaf-spine with dual-homed ToR on one leaf
+- 2x5 topology with spines S0 and S1, and leafs L0, L1, L2, L3, L4
+
+	- L1+L2 and L3+L4 are paired switches.
+	- All spine links with L1-4 are double links.
+	- Hosts take ips with dhcp and there exist 2 external routers.
+	- Hosts can use ipv4 or ipv6.
+	- We configure untagged/tagged single/dual home hosts in order to test every possible combination.
+	- Most of the hosts reside in different ip subnets.
+
+Tests Steps
+-----------
+- Configure and install ONOS
+- Start mininet and check flow state
+- Test connectivity
+
+	- pingall
+	- (Optional) ``ping 10.0.99.2`` to check external IPv4 connectivity
+	- (Optional) ``ping6 2000:9902`` to check external IPv6 connectivity
+- Additional actions and tests defined in each individual test case
+
+
+Test Cases
+----------
+.. csv-table::
+   :file: ../tables/testing-plan.csv
+   :widths: 1, 2, 6, 1, 1, 2, 1
+   :header-rows: 1
+
+Test Results
+============
+ONF runs all Mininet based Trellis tests nightly.
+Test results are automatically published `here <https://wiki.onosproject.org/display/ONOS/1.12-Segment+Routing>`_
\ No newline at end of file
diff --git a/testing/data-plane-testing.rst b/testing/data-plane-testing.rst
index 20682a2..1d8307e 100644
--- a/testing/data-plane-testing.rst
+++ b/testing/data-plane-testing.rst
@@ -2,7 +2,7 @@
 ******************
 
 OFTest Overview
-----------------
+===============
 
 The oftest framework consists of a test server connected to a target switch through an OpenFlow channel and directly to the data plane ports of the OF switch.
 After programming the switch, oftest inserts packets in the data plane and verifies if the output is as expected.
@@ -12,8 +12,8 @@
 We recommend using a server connected to a management network, a switch connected to the same management network, and then a **minimum of 2 ports directly connected between the server and the switch**.
 A few tests will fail if you have less than 3 ports.
 
-OFTest Installation
--------------------
+OFTest Setup
+============
 
 To install OFTEST on ubuntu, type the following:
 
@@ -43,7 +43,7 @@
 	OK
 
 Run Tests
----------
+=========
 
 The command below should give you the following result: