Added data plane testing

Change-Id: I837a4a7118d0a7727dcff15e056c3e5be8ebbace
diff --git a/images/testing-oftest.png b/images/testing-oftest.png
new file mode 100644
index 0000000..e752d1b
--- /dev/null
+++ b/images/testing-oftest.png
Binary files differ
diff --git a/testing.rst b/testing.rst
index a22f3de..a627e74 100644
--- a/testing.rst
+++ b/testing.rst
@@ -1,5 +1,22 @@
 Testing Guide
 *************
 
-.. note::
-	We are updating this page. More coming soon.
\ No newline at end of file
+We use two open source test tools to test Trellis behavior.
+
+- **Data Plane Testing - OFTest**
+	We use **OFTest** to verify the **behavior of a hardware switch** is the same as described in the OF-DPA specification.
+	This tool was originally developed by Big Switch and later modified by Accton.
+	The test cases for verifying OF-DPA behavior were written by ONF.
+	To learn more about OFTest and how we use it for OF-DPA verification, please visit :doc:`Data Plane Testing <testing/data-plane-testing>`.
+
+- **Control Plane Testing - TestON**
+	We use **TestON** to verify the **Trellis control application behavior** when used for a leaf-spine fabric.
+	These tests are merged into ONOS test repository and run nightly.
+	To learn more about TestON, please visit :doc:`Control Plane Testing <testing/control-plane-testing>`.
+
+.. toctree::
+   :maxdepth: 1
+   :hidden:
+
+   testing/data-plane-testing
+   testing/control-plane-testing
\ No newline at end of file
diff --git a/testing/control-plane-testing.rst b/testing/control-plane-testing.rst
new file mode 100644
index 0000000..b7dc161
--- /dev/null
+++ b/testing/control-plane-testing.rst
@@ -0,0 +1,5 @@
+Control Plane Testing
+*********************
+
+.. note::
+	We are updating this page. More coming soon.
\ No newline at end of file
diff --git a/testing/data-plane-testing.rst b/testing/data-plane-testing.rst
new file mode 100644
index 0000000..20682a2
--- /dev/null
+++ b/testing/data-plane-testing.rst
@@ -0,0 +1,83 @@
+Data Plane Testing
+******************
+
+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.
+
+.. image:: ../images/testing-oftest.png
+
+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
+-------------------
+
+To install OFTEST on ubuntu, type the following:
+
+.. code-block:: console
+
+	$ sudo apt-get install python python-pip python-dev python-lxml libffi-dev libssl-dev -y
+	$ sudo pip install cryptography
+	$ sudo pip install ncclient
+	$ sudo pip install scapy pycrypto
+	$ sudo apt-get install python-ecdsa git
+	$ git clone https://gerrit.opencord.org/fabric-oftest
+
+Now let's configure the switch and point it to the test server.
+It can be done in the same way as connecting the switch to any controller.
+See `Connect Switch to Controller <../installation.html#connect-switch-to-controller>`_ for more details.
+
+Assuming that you plugged the ports ``12`` and ``24`` of the switch to interfaces ``eth1`` and ``eth2`` of the server, respectively, then the following command can tell you if everything is working.
+
+.. code-block:: console
+
+	$ cd oftest
+	$ sudo ./oft -V1.3 --test-dir=ofdpa flows.PacketInArp -i 12@eth1 -i 24@eth2
+	WARNING: No route found for IPv6 destination :: (no default route?)
+	flows.PacketInArp ... ok
+	----------------------------------------------------------------------
+	Ran 1 test in 4.044s
+	OK
+
+Run Tests
+---------
+
+The command below should give you the following result:
+
+.. code-block:: console
+
+	$ sudo ./oft -V1.3 --test-dir=ofdpa flows -i 12@eth1 -i 24@eth2
+	flows.ArpNL2 ... FAIL
+	flows.L2FloodQinQ ... ok
+	flows.L2FloodTagged ... ok
+	flows.L2FloodTaggedUnknownSrc ... ok
+	flows.L2UnicastTagged ... ok
+	flows.L3McastToL2 ... FAIL
+	flows.L3McastToL3 ... FAIL
+	flows.L3McastToVPN ... FAIL
+	flows.L3UcastTagged ... ok
+	flows.L3VPNMPLS ... ok
+	flows.L3VPN_32 ... FAIL
+	flows.MPLSBUG ... ok
+	flows.MplsTermination ... FAIL
+	flows.Mtu1500 ... ok
+	flows.Mtu4000 ... ERROR
+	flows.PacketInArp ... ok
+	flows.PacketInSrcMacMiss ... FAIL
+	flows.PacketInUDP ... ok
+
+For example, in this case, all the multicast failed because we don't have three ports, the test L3VPN failed as well, and that is a bug of the current build.
+The **PacketInSrcMac** Miss failed because Mac learning is not enabled.
+
+.. note::
+	Expected test results can be found in https://github.com/opencord/fabric-oftest/blob/master/README.md
+
+.. tip::
+	OFTest can't successfully delete all groups using an OF message, because of that some tests interfere with others.
+	If the results seem suspicious, **erase the flow tables and group tables** and run the test alone.
+
+
+