Level Actors
Excerpt from 3.2. Standards: Requirements for Building Testing Suites
- L1/L2 testing suites will use the
ut-core
testing framework. - L3/L4 testing suites will incorporate the
python-raft
infrastructure and theut-raft
framework while continuing to utilizeut-core
as required. - The testing system must adhere to the guidelines outlined in the Setup/Layout Guide.
- Developers are expected to familiarize themselves with the
ut-raft
classes, documented in the ut-raft wiki. - Examples of
python-raft
configuration and setup can be found in the aforementioned resources.
Levels of Test
The levels of testing to be implemented are described in detail here:
Standards: Levels of Test for Vendor Layer
Testing Frameworks
- L1/L2:
ut-core
(ut-core repository) - L3: Combination of C++ and C, utilizing both
ut-core
andpython-raft
(python-raft repository)
Actors Involved
- Automation
- QA Team
- Engineering Team
- DUT (Device Under Test)
Engineering Testing
- Engineers and third-party developers will use Levels 1 to 3 to validate and test changes to individual components or groups of components.
- Level 4 testing expands to multi-component testing, ensuring end-to-end validation.
- Pre-commit testing is covered under Levels 1 - 3, requiring manual review of results but not necessarily automation.
Test Suite | Actors |
---|---|
Level 1 - 3 Component Tests | Engineers |
L4 System Performance | Engineers |
L4 Ad-hoc Analysis | Engineers |
L4 Smoke Testing | Layer Release Engineers, QA Team |
L4 System Interface Testing | Engineers |
L4 Deep Dive Testing | Engineers |
QA Testing
- QA primarily focuses on L4 Smoke Testing to ensure compatibility throughout the layer release cycle.
- The full stack image includes Vendor, MW, and Application Layers, enabling test binaries to be run using previous versions to identify regressions.
System Architecture Overview
Testing System Flow
graph LR
subgraph Actors
subgraph "Python Raft / UT-Raft"
Python_Raft --> device(DUT)
end
subgraph "XTS Tools"
xTS --> Python_Raft
xTS <--> allocator[xTS Allocator]
allocator --> rackConfig
rackConfig --> Python_Raft
end
subgraph "Automation"
auto1[Github Actions / Review Approval] --> xTS
end
subgraph "QA Team"
QASmoke[L4 Smoke Testing] --> xTS
end
subgraph "Engineer - Component / Layer / Vendor"
L4Smoke[L4 Testing] --> Python_Raft
EngineerComponentTesting[L3 Component Testing] --> Python_Raft
EngineerComponentTesting --> device
L4Smoke --> localRackConfig
EngineerComponentTesting --> localRackConfig
localRackConfig --> Python_Raft
end
end
Host Machine (High-Level Tests)
L3 Component Stimulus Testing and L4 System Testing are executed from the Host Machine, utilizing the ut-raft
framework to extend python-raft
capabilities.
graph LR
subgraph "Host Machine (High Level Tests)"
deviceConfig --> Python_Test
rackConfig --> Python_Test
Python_Test[Python Test] --> ut_raft
ut_raft --> python_raft
python_raft --> console
console --> DUT
python_raft --> webPageControl --> DUT
python_raft --> OutboundClient --> DUT
end
subgraph "Rack Slot"
python_raft --> PowerSwitch --> DUT
python_raft --> IR --> DUT
python_raft --> CECAdaptor --> DUT
python_raft --> VideoCapture --> DUT
VideoCapture --> HostHDD
end
DUT Target Architecture
Python Raft
connects to the DUT via a console session, ensuring platform-independent testing with automated configurations.
graph LR
subgraph "DUT (Target)"
console <--> test_binary(Test Code)
platform_profile --> test_binary
test_binary --> state_machine
state_machine --> code(Code Under Test)
test_binary --> ut_core
ut_core --> ut_control
webSocket --> ut_control
ut_control --> state_machine
end
Summary
- The testing system is divided into multiple levels, utilizing
ut-core
,python-raft
, andut-raft
for different types of testing. - Engineering Teams perform pre-commit testing at Levels 1 - 3, while QA Teams focus on L4 Smoke Testing.
- Automation integrates with testing through
GitHub Actions
and other tools. - DUT Target Testing ensures platform-independent configuration and verification of vendor-layer compatibility.
This document provides a graphical overview of the testing system, ensuring that all stakeholders have a clear understanding of the testing flow and responsibilities.