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.
+
+
+