NVMETEST

Engineering Design Verification Tests (EDVT)

USER GUIDE

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.

TABLE OF CONTENTS

(Go To TOC)

Introduction

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.

(Go To TOC)

Installation

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.

(Go To TOC)

Running the Test Suite

See the SLIST command in the NVMETEST User Guide.

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.

(Go To TOC)

Running a Single Test

A single EDVT test suite can be executed two ways:

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.

(Go To TOC)

How to Use the Log Files

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.

Summary Log

It is best to review the summary log first. This log reports test error counts. To see the details review the detail log.

Detail Log

The detail log contains all the detail messages and error messages for each test that was executed.

(Go To TOC)

Configuration Script Description

config0.tsf

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.

(Go To TOC)

Before and After Script Description

before0.tsf

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).

after0.tsf

The after0.tsf script executes after each testnnn.tsf script. This script reports error counts and may dump the command history trace (SHOWCH command).

(Go To TOC)

Final Script Description

final0.tsf

The final0.tsf reports the final error counts and prepares for looping of the entire test suite (see SLOPTION command).

(Go To TOC)

Test Script Desctiptions

test000 - Resets

This test performs the following tests:

test001 - Basic Identify

This test performs the following tests:

test002 - Basic W/R

This test performs the following tests:

Write and read with data compare the first 10000 sectors of the drive.

test003 - I/O Queues

This test write and reads the first 10000 sectors of namespace 1.

This test performs the following tests:

test004 - PRP and SGL

Test PRP and all SGL variations with and without non-zero buffer starting starting addresses (buffer offsets).

test005 - Mandatory Set/Get Features

Execute all mandatory Set/Get Features with basic feature values.

test006 - Check Identify fields

Checks Identify CNS=1 and CNS=0 reserved fields for values of zero or for values required or recommended by the NVME spec.

test007 - Set/Get Feature 03H

Reads and writes the LBA Range data block with all 00H, all FFH and random data.

test008 - Compare and Fused

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).

test009 - Shared Completion Queues

Create multiple submission queues that share a single completion queue. Verify that read commands operate correctly on these queues.

test010 - Multiple Commands on Multiple Queues

Create multiple queues and execute multiple read commands on those queues using the QC* commands.

test011 - Queues and PRP in CMB

Move Submission and/or COmpletion queues and PRP lists to CMB. Create and delete queues while checking proper operation with read commands.

test012 - Get Log Page

Check that the Get Log Page command returns the correct amount of data for each valid log page (log page data is not checked).

test013 - Set/Get Feature 80H

Checks the operation of Set/Get Features 80H.

test014 - Simple Atomic Writes

Checks that simple Atomic write operations are processed correctly.

test080 - Commands While Disabled

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.

test081 - Invalid Identify

Execute various Identify (ID) command with invalid CNS and/or invalid NSID values.

test082 - Invalid W/R

Execute various write/read commands on queue 1 with invalid LBA values.

test083 - Invalid Admin command codes

Attempts to execute commands using all invalid (reserved) Admin command codes expecting each to fail.

test084 - Invalid I/O command codes

Attempts to execute commands using all invalid (reserved) I/O command codes expecting each to fail.

test085 - Invalid Set/Get Feature codes

Attempts to execute Set/Get Feature commands using all invalid (reserved) feature codes expecting each to fail.

test086 - Invalid Get Log Page codes

Attempts to execute Get Log Page commands using all invalid (reserved) page codes expecting each to fail.

test087 - Invalid Set/Get Feature 03H

Attempts to execute invalid Set Features 03H commands using invalid LBA ranges.

test088 - Invalid Fused

Attempts to execute invalid Fused command pairs.

(Go To TOC)

Adding or Deleting a Test

Adding a New Test

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:

Delete or Bypass a Test

In the script list file(s) (usually *.sl) comment out the test using ';' or '//' in column 1.

(Go To TOC)

History

Versions not shown were test or skipped versions.


Version 13


Versions 2 to 12


Version 1

(Go To TOC)

Questions or Problems?

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-