[SDFAB-599] Create PTF test document

Change-Id: I1d7ab31fabf96cfcc7cfb75a211a0fd5a8403b98
diff --git a/dict.txt b/dict.txt
index 1f90758..8cab5d5 100644
--- a/dict.txt
+++ b/dict.txt
@@ -118,3 +118,4 @@
 watchlist
 whitebox
 whitepaper
+TRex
diff --git a/images/pipeline-test-arch.svg b/images/pipeline-test-arch.svg
new file mode 100644
index 0000000..5db51f4
--- /dev/null
+++ b/images/pipeline-test-arch.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="581px" height="351px" viewBox="-0.5 -0.5 581 351" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2021-10-07T00:03:32.312Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.3.7 Chrome/93.0.4577.63 Electron/14.0.1 Safari/537.36&quot; etag=&quot;pAcyILyroqHQFRmcdrtl&quot; version=&quot;15.3.7&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;pic8YlkYJA10yvdJtzfY&quot; name=&quot;Page-1&quot;&gt;7Vpbc6M2FP41fmwHxDWPSZxku93ueJLsdNM3GWRbXUAeIXzZX18JhLkIX2KDITt9YaSjIyF956oDI+M+3DxRuFz8RXwUjIDmb0bGeASAa1j8KQjbjOA4WkaYU+xnJL0gvOCfSBJztgT7KK4wMkIChpdVokeiCHmsQoOUknWVbUaC6luXcI4UwosHA5X6N/bZQh7L0gr6J4Tni/zNuiZHQpgzS0K8gD5Zl0jGw8i4p4SwrBVu7lEgsMtxyeY97hndbYyiiJ0y4e6zHXxd+l+1n+jp0y0Y/+N7n3/T7WyZFQwSeeJXFDNOeUF0hajcOtvmeFCSRD4SS2oj4269wAy9LKEnRtdcAThtwcKA93Te5AswzLG8DfA84jRGBIO6cXkWwY42JZI8yBMiIWJ0y1nkKDClWkmtMnN1WRcyMmxJW5TkA3IilHox361dQMcbEr13IGnsAXIvfvpx/FpAyqghZbkqUjpoQKozoMyBAmXVgLrpGyhDV0BBPndOsksoW5A5iWDwUFDvqvZZ8HwhwvZSsP5FjG2lp4UJI1Uo0Qaz76X2m1jqd0v2xhu5ctrZ5p2In/d7uVOaJbrFtLSXz/NhvNiJWHQmkDFEo5QCNEGNGaTsVjhyToxIhHLaIxZoykX9GgenlMZjRsmPnfs+qC8xSaiHDghFKgnfwRyxQ47VyRiFxA6qH0UBZHhVDTft65LRpy5p5+iS/r8u5bpktq1L6VR+TrgtMSwJjlhcWnkiCCUPaVQ9pG3UEo5j/NUEhTeyHRRavTvK+YpuDTS62DUstL6ji9OrQ9g5gbfSyLHgUviAt4oLaHYI59tlfs84ZpdgUC4+18lC8yevj5zwnPCb0aFEvp/8yjRPtACjKwu4+YAWAK5kAuBEEzCGZQLaBxTpwCTaeq5xmUR7vQOdKVFnYCK1BiVS0BynLglPM56f35OA0HSu4VvI9c1dsl4accHUsO2OCganpnSdBTRXQfaPaMUBSPfEt5QeGPJ3IRorgPNTsyqqVfTkbagMtSRBWd3zOJY80VDLfiH2/dQwm8RYNdYW5GKCWqLhNMjFaKoNdiUXXVX5LwT64lWReKIN8hKGYmHLWfE1JH4SoC6EFKAZG5yIrKZc0L2qiNTy7RitMEdhv2M6owA+JYyRsB0Q6zVwxzixBt6Z/wH9BusrFCxL1SEvgHGMvUqBqDDIvEAE6mWnYlq58nRZHSmvDx0vJLWerp9VSALgYGHoKL8jNb/TQpKufqe4LElpw+TrKUfDxxynweLdztymWm5Lkzk7EEFmSnlrLlrfGA4ww51EtDbSDkoY13cStRfigFLwsxRRWVd1zr3ejc/6mvTOLwADdc7Ox3LOdt05H6ny1/mv45wdxe+8PnPD7NtBW9rxMn+Tg+6syq+rd8IXRiFLwsuwqt+4IXJnXtON2/ZcNJ0pptdWQKznwKf+B9Kdm1UvEhPzOYkYDsU9PERxDOeDjYMtiMSsf/Vr+uHkqtdvoGZyE+j9QMILaisMxYk9DgbQAjylUL7xlxSOXheOrQrnpkE2ZmeyaUgga7IZT8Z//roSUcJt7xJRrznDr7i/q+B+Ysp3Vjp5fp548s8gbttp4h514d3i59QscSv+8DUe/gM=&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="110" y="0" width="360" height="260" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 7px; margin-left: 111px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Test Server</div></div></div></foreignObject><text x="290" y="19" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Test Server</text></switch></g><rect x="210" y="170" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 211px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Test</div></div></div></foreignObject><text x="270" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Test</text></switch></g><rect x="220" y="180" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 210px; margin-left: 221px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Test</div></div></div></foreignObject><text x="280" y="214" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Test</text></switch></g><path d="M 350 220 L 370 220" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="1 1" pointer-events="stroke"/><path d="M 230 220 L 200 220 L 200 210 L 190 210" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="1 1" pointer-events="stroke"/><rect x="230" y="190" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 220px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Test</div></div></div></foreignObject><text x="290" y="224" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Test</text></switch></g><path d="M 280 60 L 280 83.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 280 88.88 L 276.5 81.88 L 280 83.63 L 283.5 81.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="220" y="30" width="120" height="30" rx="4.5" ry="4.5" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 45px; margin-left: 221px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">PTF Runner</div></div></div></foreignObject><text x="280" y="49" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PTF Runner</text></switch></g><path d="M 280 120 L 280 145 L 240 145 L 240 163.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 168.88 L 236.5 161.88 L 240 163.63 L 243.5 161.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 280 120 L 280 173.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 280 178.88 L 276.5 171.88 L 280 173.63 L 283.5 171.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 280 120 L 280 155 L 320 155 L 320 183.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 320 188.88 L 316.5 181.88 L 320 183.63 L 323.5 181.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="220" y="90" width="120" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 105px; margin-left: 221px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">PTF</div></div></div></foreignObject><text x="280" y="109" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PTF</text></switch></g><rect x="290" y="60" width="130" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 70px; margin-left: 291px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Invoke with parameters</div></div></div></foreignObject><text x="355" y="74" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Invoke with parameters</text></switch></g><rect x="290" y="130" width="180" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 178px; height: 1px; padding-top: 140px; margin-left: 292px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Load and executes test modules</div></div></div></foreignObject><text x="292" y="144" fill="#000000" font-family="Helvetica" font-size="12px">Load and executes test modules</text></switch></g><rect x="110" y="320" width="360" height="30" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 347px; margin-left: 111px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Device</div></div></div></foreignObject><text x="290" y="347" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Device</text></switch></g><path d="M 111.76 210 L 90 210 L 90 335 L 101.76 335" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 117.76 210 L 109.76 214 L 111.76 210 L 109.76 206 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 107.76 335 L 99.76 339 L 101.76 335 L 99.76 331 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><rect x="120" y="170" width="70" height="80" rx="10.5" ry="10.5" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="130" y="195" width="50" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 210px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">PTF<br />Utilities</div></div></div></foreignObject><text x="155" y="214" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PTF...</text></switch></g><path d="M 448.24 220 L 490 220 L 490 335 L 478.24 335" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 442.24 220 L 450.24 216 L 448.24 220 L 450.24 224 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 472.24 335 L 480.24 331 L 478.24 335 L 480.24 339 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><rect x="370" y="190" width="70" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 220px; margin-left: 371px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">TRex</div></div></div></foreignObject><text x="405" y="224" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TRex</text></switch></g><rect x="110" y="300" width="360" height="30" rx="4.5" ry="4.5" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 315px; margin-left: 111px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Stratum</div></div></div></foreignObject><text x="290" y="319" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Stratum</text></switch></g><rect x="300" y="270" width="130" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 280px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">P4Runtime messages</div></div></div></foreignObject><text x="365" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">P4Runtime messages</text></switch></g><rect x="0" y="250" width="90" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 270px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Packets via pcap library</div></div></div></foreignObject><text x="45" y="274" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Packets via pca...</text></switch></g><rect x="490" y="250" width="90" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 270px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Packets via DPDK</div></div></div></foreignObject><text x="535" y="274" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Packets via DPDK</text></switch></g><path d="M 290 258.24 L 290 291.76" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 290 252.24 L 294 260.24 L 290 258.24 L 286 260.24 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 290 297.76 L 286 289.76 L 290 291.76 L 294 289.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file
diff --git a/testing/pipeline.rst b/testing/pipeline.rst
index d36f17e..52071fb 100644
--- a/testing/pipeline.rst
+++ b/testing/pipeline.rst
@@ -1,2 +1,43 @@
-Pipeline Tests (PTF)
-====================
+P4 Pipeline Tests (PTF)
+=======================
+
+`PTF <https://github.com/p4lang/PTF>`_ is a Python based data plane test framework.
+It is based on unittest, which is included in the standard Python distribution.
+
+To test the P4 pipeline, we are using the following components:
+
+* PTF framework and tests
+
+  * Installs table entries to the device.
+  * Generate and verify the traffic.
+
+* Stratum: the software that process P4Runtime requests from PTF and configures the device.
+* The device under tests: can be software device like Tofino Model, or a hardware device.
+* TRex server: for the line rate test.
+
+.. image:: ../images/pipeline-test-arch.svg
+    :width: 800px
+
+Test plans
+----------
+
+See `test plans <https://github.com/stratum/fabric-tna/tree/main/ptf#the-unary-test-plan>`_ section in the fabric-TNA repository
+
+Run tests
+---------
+
+See `step to run tests <https://github.com/stratum/fabric-tna/tree/main/ptf#steps-to-run-tests-on-tofino-model-with-stratum>`_
+section in the Fabric-TNA repository.
+
+Test result
+-----------
+
+See `test result <https://github.com/stratum/fabric-tna/tree/main/ptf#test-result>`_
+section in the Fabric-TNA repository.
+
+
+Contribute new test cases
+-------------------------
+
+See `contribute new test cases <https://github.com/stratum/fabric-tna/tree/main/ptf#contribute-new-test-cases>`_
+section in the Fabric-TNA repository.