The first release of the EDVT suite is in the version 8 release of NVMETEST. Use of the EDVT suite requires a licensed version of NVMETEST at version 8 or higher.
The NVMETEST EDVT suite is a set of example scripts for use with NVMETEST. There is no copyright or restrictions on the use of these scripts. All NVMETEST customers are welcome to modify and use the tests. Of course HPSI would like to know if you have problems, questions or suggestions (support@hiperfstore.com).
These tests may not conform to your interpretation of the NVMe Specification. You may modify these tests to match your device's implementation of the NVMe Specification.
The EDVT suite is a group of NVMETEST script files that implement a very basic test of NVME commands.
For successful use of these tests please follow these instructions otherwise you may have great difficultly using the tests.
The test suite is installed as part of the NVMEQRWT/NVMETEST installation.
The 'edvt' directory must be a sub-directory of the directory containing the NVMETEST executable file. Do no move the 'edvt' directory to a different location.
The test suite uses the SLIST command and SLIST script list files. These files are normally named '*.sl'.
The EDVT suite contains three sets of tests:
The current directory must be the directory containing the NVMETEST executable file the edvt directory.
The full EDVT suite (edvt0.sl) can be executed two ways:
To run only the normal or only the invalid tests replace edvt0.sl with edvt1.sl or edvt2.sl in the above commands.
The script files (*.tsf files) in the edvt directory can *NOT* be directly executed using the SCRipt command. The SLIST command using the appropriate *.sl file must be used.A single EDVT test suite can be executed two ways:
Each execution of the test suite creates or appends to two log files. The log files are
These files are found in the directory containing the NVMETEST executable file.
It is best to review the summary log first. This log reports test error counts. To see the details review the detail log.
The detail log contains all the detail messages and error messages for each test that was executed.
The config0.tsf script executes once at the start of the SLIST. It is used to setup various testing parameters. It will present a menu of options.
The before0.tsf script executes before each testnnn.tsf script. This script also resets various testing conditions so that each test starts with the device "reset" (for example, no I/O queeus defined).
The after0.tsf script executes after each testnnn.tsf script. This script reports error counts and may dump the command history trace (SHOWCH command).
The final0.tsf reports the final error counts and prepares for looping of the entire test suite (see SLOPTION command).
This test performs the following tests:
This test performs the following tests:
This test performs the following tests:
Write and read with data compare the first 10000 sectors of the drive.
This test write and reads the first 10000 sectors of namespace 1.
This test performs the following tests:
Test PRP and all SGL variations with and without non-zero buffer starting starting addresses (buffer offsets).
Execute all mandatory Set/Get Features with basic feature values.
Checks Identify CNS=1 and CNS=0 reserved fields for values of zero or for values required or recommended by the NVME spec.
Reads and writes the LBA Range data block with all 00H, all FFH and random data.
Part 1 checks various Write followed by Compare commands for correct drive response.
Part 2 checks various fused commands (Compare+Write), (Read+Read), etc, for correct drive response.
Part 3 checks various invalid fused commands (different LBA ranges and read + read commands).
Create multiple submission queues that share a single completion queue. Verify that read commands operate correctly on these queues.
Create multiple queues and execute multiple read commands on those queues using the QC* commands.
Move Submission and/or COmpletion queues and PRP lists to CMB. Create and delete queues while checking proper operation with read commands.
Check that the Get Log Page command returns the correct amount of data for each valid log page (log page data is not checked).
Checks the operation of Set/Get Features 80H.
Checks that simple Atomic write operations are processed correctly.
Disable the controller (EN=0 RDY=0) and then attempt an Identify, Get Features and Create Completion Queue commands. These commands are expected to time out.
Execute various Identify (ID) command with invalid CNS and/or invalid NSID values.
Execute various write/read commands on queue 1 with invalid LBA values.
Attempts to execute commands using all invalid (reserved) Admin command codes expecting each to fail.
Attempts to execute commands using all invalid (reserved) I/O command codes expecting each to fail.
Attempts to execute Set/Get Feature commands using all invalid (reserved) feature codes expecting each to fail.
Attempts to execute Get Log Page commands using all invalid (reserved) page codes expecting each to fail.
Attempts to execute invalid Set Features 03H commands using invalid LBA ranges.
Attempts to execute invalid Fused command pairs.
The best way to add a new test is to start by making a copy of an existing test with a new name:
Test scripts are entered with all testing defaults in effect and with 'LOG SML NDES NDES' in effect.
In test scripts the following should used:
In the script list file(s) (usually *.sl) comment out the test using ';' or '//' in column 1.
Versions not shown were test or skipped versions.
Version 13
Versions 2 to 12
Version 1
For technical support send an email to support@hiperfstore.com
If possible please include a log file or script file. Please zip these file if they are large.
-end-