Report: Temporarily change report specs
[csit.git] / README.md
1 # CSIT - Continuous System Integration Testing
2
3 1. [Architecture](#architecture)
4 1. [Directory Structure](#directory-structure)
5    1. [Tests](#tests)
6    1. [Keywords](#keywords)
7    1. [Other Resources](#other-resources)
8 1. [Quickstart](#quick-start)
9    1. [Vagrant](#vagrant)
10    1. [Physical Testbed](#physical-testbed)
11 1. [Report](#report)
12 1. [Trending](#trending)
13 1. [Code Documentation](#code-documentation)
14 1. [Coding Guidelines](#coding-guidelines)
15
16 ## Architecture
17
18 FD.io CSIT system design needs to meet continuously expanding requirements of
19 FD.io projects including VPP, related sub-systems (e.g. plugin applications,
20 DPDK drivers) and FD.io applications (e.g. DPDK applications), as well as
21 growing number of compute platforms running those applications. With CSIT
22 project scope and charter including both FD.io continuous testing AND
23 performance trending/comparisons, those evolving requirements further amplify
24 the need for CSIT framework modularity, flexibility and usability.
25
26 CSIT follows a hierarchical system design with SUTs and DUTs at the bottom level
27 of the hierarchy, presentation level at the top level and a number of functional
28 layers in-between. The current CSIT system design including CSIT framework is
29 depicted in the figure below.
30
31 ![csit design](docs/report/csit_framework_documentation/csit_design_picture.svg "CSIT architecture")
32
33 A brief bottom-up description is provided here:
34
35 1. SUTs, DUTs, TGs
36    - SUTs - Systems Under Test;
37    - DUTs - Devices Under Test;
38    - TGs - Traffic Generators;
39 1. Level-1 libraries - Robot and Python
40    - Lowest level CSIT libraries abstracting underlying test environment, SUT,
41      DUT and TG specifics;
42    - Used commonly across multiple L2 KWs;
43    - Performance and functional tests:
44      - L1 KWs (KeyWords) are implemented as RF libraries and Python
45        libraries;
46    - Performance TG L1 KWs:
47      - All L1 KWs are implemented as Python libraries:
48        - Support for TRex only today;
49    - Performance data plane traffic profiles:
50      - TG-specific stream profiles provide full control of:
51        - Packet definition – layers, MACs, IPs, ports, combinations thereof
52          e.g. IPs and UDP ports;
53        - Stream definitions - different streams can run together, delayed,
54          one after each other;
55        - Stream profiles are independent of CSIT framework and can be used
56          in any T-rex setup, can be sent anywhere to repeat tests with
57          exactly the same setup;
58        - Easily extensible – one can create a new stream profile that meets
59          tests requirements;
60        - Same stream profile can be used for different tests with the same
61          traffic needs;
62    - Functional data plane traffic scripts:
63      - Scapy specific traffic scripts;
64 1. Level-2 libraries - Robot resource files
65    - Higher level CSIT libraries abstracting required functions for executing
66      tests;
67    - L2 KWs are classified into the following functional categories:
68      - Configuration, test, verification, state report;
69      - Suite setup, suite teardown;
70      - Test setup, test teardown;
71 1. Tests - Robot
72    - Device tests using containerized environment with SR-IOV access to a NIC;
73      - VPP;
74    - Performance tests using physical testbed environment:
75      - VPP;
76      - DPDK-Testpmd;
77      - DPDK-L3Fwd;
78    - Tools:
79      - Documentation generator;
80      - Report generator;
81      - Testbed environment setup ansible playbooks;
82      - Operational debugging scripts;
83
84 ## Directory Structure
85
86 ### Tests
87
88 ```
89 .
90 └── tests
91     ├── dpdk
92     │   └── perf                    # DPDK performance tests
93     └── vpp
94         ├── device                  # VPP device tests
95         └── perf                    # VPP performance tests
96 ```
97
98 ### Keywords
99
100 ```
101 .
102 resources
103 └── libraries
104     ├── bash                        # Contains a dependency of KubernetesUtils
105     │   ├── config                  # Config for KubernetesUtils dependency
106     │   ├── entry                   # Main bootstrap entry directory
107     │   ├── function                # Bootstrap function library
108     │   └── shell                   # Various functions for KubernetesUtils
109     ├── python                      # Python L1 KWs
110     └── robot                       # Robot Framework L2 KWs
111 ```
112
113 ### Other Resources
114
115 ```
116 .
117 ├── docs                            # Main documentaion
118 │── csit.infra.vagrant              # VPP device vagrant environment
119 |── fdio.infra.ansible              # Infrastructure provisioning
120 |── fdio.infra.pxe                  # Preboot eXecution Environment
121 |── fdio.infra.terraform            # Virtual infrastructure deployment
122 |── GPL                             # Files licensed under GPL
123 │   ├── traffic_profiles            # Performance tests traffic profiles
124 │   │   └── trex
125 │   └── traffic_scripts             # Functional tests traffic profiles
126 ├── PyPI                            # PyPI packages provided by CSIT
127 │   ├── jumpavg
128 │   └── MLRsearch
129 ├── resources
130 │   ├── api                         # API coverage
131 │   ├── templates                   # Templates (vpp_api_test, kubernetes, ...)
132 │   ├── test_data                   # Robot Test configuration
133 │   ├── tools
134 │   │   ├── doc_gen                 # Code documentation generator
135 │   │   ├── papi                    # PAPI driver
136 │   │   ├── presentation            # Report generator
137 │   │   ├── scripts                 # Various tools
138 │   │   ├── topology                # Helper scripts for topology manipulation
139 │   │   ├── trex                    # TRex driver
140 │   ├── topology_schemas
141 └── topologies                      # Linux Foundation topology files
142     ├── available
143     └── enabled
144 ```
145
146 ## Quickstart
147
148 ### Vagrant
149
150 [Vagrant environment preparation](docs/testing_in_vagrant.rst) documentaion is
151 describing local VPP Device functional testing.
152
153 ## Report
154
155 [CSIT Report](https://s3-docs.fd.io/csit/master/report/).
156
157 ## Trending
158
159 [CSIT Trending](https://s3-docs.fd.io/csit/master/trending/).
160
161 ## Code Documentation
162
163 [CSIT Code Documentation](https://s3-docs.fd.io/csit/master/docs/).
164
165 ## Coding Guidelines
166
167 If you are interested in contributing, please see the
168 [coding guidelines](docs/test_code_guidelines.rst).