-
Notifications
You must be signed in to change notification settings - Fork 99
Home
tnvme is a user space test application targeting the compliance verification of NVM Express (NVMe) compliant hardware. The NVMe home page is located here.
tnvme it not the complete compliance suite, rather it is the framework which empowers the building, and execution of compliance test cases. Further logic is necessary, in kernel space, to provide the low level support tnvme requires. The logic resident within the kernel is platform specific and the generic logic, non-platform specific, lives within tnvme. Currently the compliance suite targets Linux distributions only, however the design allows source code ports to other platforms by creating a corresponding kernel mode driver to implement the necessary IOCTL’s. The corresponding Linux kernel mode driver is dnvme which is resident within https://github.com/organizations/nvmecompliance as its own git repo.
tnvme is not a benchmark, throughput or performance measurement system, rather its goal is to verify hardware compliance against a written set of specifications. Functionality, not speed, was the main target of this application. It was seen that satisfying both speed and functionality could not be addressed simultaneously in all aspects of this design. Thus when a decision had to be made as to which one to choose, functionality always won.
- Introduction to the compliance suite presentation
- Designing test dependencies within the framework presentation
- Software release notes
- Compliance suite test plan
- Learn git; find a tutorial
- Create an account on github
-
Fork repos(s) of interest
a) After forking, clone the repo(s) on a local machine. - Modify code, commit, and push to the local repo(s); normal git usage.
- Contribute your logic to the mainline github repo(s)
Compiling
Executing
Example Code
Command Line Options
Design Strategy
Test Strategy
Coding Standards
Groups
Tests
Resource Lifetime
Interrupts
Number of Queues
In the most general sense, resources are those objects tnvme uses to setup and test a Device Under Test (DUT). Resources are commands from any command set, any type of queue, and memory (both contiguous and discontiguous with various alignment requirements). An alternative mechanism to view resources and the C++ classes which represent them is to generate the doxygen output against the source code.
1) cd tnvme 2) make doc 3) ./classHierarchy.sh