NVMe_DualPort

DualPort_IO_RefClkGlitch_PowerCycle.sh

Objective:

Start I/O test on one port, perform RefClk glitch on another port, then power cycle the whole drive. Repeat these 3 steps for specified loops

Pass/Fail:

If the IO test fails

DualPort_MaxNum_NS.sh

Objective:

Create max number of private namespaces, attach them evenly across both controllers, and start I/O on all of them

Pass/Fail:

Results of delete/create of namespaces, and based on I/O test pass/fail parameters

DualPort_Multiple_NS.sh

Objective:

Attach a namespace to each controller, start I/O on both, detach/attach each namespace, then restart I/O on both

Pass/Fail:

Results of delete/create/attach/detach of namespaces, and based on I/O test pass/fail parameters

DualPort_Redundancy.sh

Objective:

Attach a namespace to both controllers, start I/O, break and re-attach link on a controller

Pass/Fail:

Results of namespace delete/create, appropriate accessibility of the controllers, and based on I/O test pass/fail parameters

DualPort_Reservations.sh

Objective:

Attach a namespace to both controllers and run I/O while performing various reservation operations

Pass/Fail:

Results of namespace delete/create and reservation operations, and based on I/O test pass/fail parameters

DualPort_SGL_Workloads.sh

Objective:

Attach a namespace to both controllers and run SGL-enabled I/O

Pass/Fail:

Results of namespace delete/create, and based on I/O test pass/fail parameters

DualPort_Shared_NS_Write_Verify.sh

Objective:

If there is a shared NS, write it on port A, read/verify it on port B

Pass/Fail:

If either the write or reverify test fails

dual_adm_eDST_sNS_BOTH_SEQ.py

Using a shared namespace, run an extended device self-test on controller 1 then on controller 2.

  1. Run an extended device self test on both controllers (device_selftest, 2)

  2. Display device self-test logs for both controllers (get_log_page, log_id=6)

Preconditions:
  1. Supports self-test

  2. A shared namespace or ns management is supported

Pass/Fail Criteria:

Test will fail if either device self-test fails.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_eDST_sNS_c1_SIM_startIO_sNS_c2.py

Using a shared namespace, do an extended device self-test on the namespace at the same time as starting IO.

  1. Start the Compare test with 16 threads and 8kb blocks at the same time as an extended device self-test

  2. Log the results of the extended self test (device_selftest, 2)

Preconditions:
  1. Support self-test

  2. A shared namespace or ns management is supported

Pass/Fail Criteria:

Test will fail if IO test fails or the extended device self-test fails.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_id_BOTH_SEQ.py

Run identify on both controllers.

  1. Run identify on both controllers.

  2. Verify that the output is the same.

Pass/Fail Criteria:

Test will pass if both identify queries are successful and the values returned are the same.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_identCNS12_sNS_BOTH_SEQ.py

Run Namespace Attached Controller list (CNS=12h) on both controllers with a shared namespace.

  1. Run identify controller on each controller

  2. Verify that both controllers returned the same information

Preconditions:
  1. A shared namespace or ns management is supported

Pass/Fail Criteria:

Test will fail if identify controller query is unsuccessful or if different information is returned by the controllers.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_identCNS13_sNS_BOTH_SEQ.py

Run identify controller list (CNS=13h) on both controllers.

  1. Run identify controller on each controller

  2. Verify that both controllers returned the same information

Pass/Fail Criteria:

Test will fail if identify controller query is unsuccessful or if different information is returned by the controllers.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_sDST_sNS_BOTH_SEQ.py

Using a shared namespace, do a short device self-test(NSID=1) on the first controller, then once it is completed, do a short self-test(NSID=1) on the second controller.

  1. Do a short device self-test on each controller (device_selftest, 1)

  2. Log the results of the short device self-test

Preconditions:
  1. Support self-test

  2. A shared namespace or ns management is supported

Pass/Fail Criteria:

Test will fail if either device self-tests fails.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_sDST_sNS_c1_SIM_startIO_sNS_c2.py

Using a shared namespace, do a short device self-test(NSID=1) on the namespace at the same time as starting IO.

  1. Start the Compare test with 16 threads and 8kb blocks at the same time as a short device self-test (device_selftest, 1)

  2. Log the result of the short device self-test.

Preconditions:
  1. Support self-test

  2. A shared namespace or ns management is supported

Pass/Fail Criteria:

Test will fail if the IO test fails or the short device self-test is unsuccessful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_sanitize_c1_THEN_sanLog_c2.py

Run sanitize on first controller and check the status by running sanitize status log on the second controller

  1. Report sanitize status of second controller before sanitizing

  2. Start Sanitize on first controller

  3. Verify Sanitize starts (‘Sanitize_Status’ = 2 on ‘LID’ 0x81)

  4. Wait for sanitize to complete (‘Sanitize_Status’ != 2 on ‘LID’ 0x81)

  5. Report on final sanitizing status

Pass/Fail Criteria:

Test will pass if ‘Sanitize_Status’ changes to 2 when sanitize begins and final ‘Sanitize_Status’ is 1.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_secureErase_sNS_BOTH_SEQ.py

Use a shared namespace and do a secure erase using both controllers one after another

  1. Perform secure erase on the first controller

  2. Perform secure erase on the second controller

Pass/Fail Criteria:

Test will fail either secure erase fails.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_startIO_pNS_c1_THEN_eDST_pNS_c2.py

Use a private namespace and run IO on first controller then run an extended device self-test on the private namespace of the other controller.

  1. Create a private namespace on each controller

  2. Start an io test(Compare) on the first controller with 16 threads and 8kb blocks

  3. Wait for 5 seconds

  4. Start an extended device self-test (device_selftest, 2)

  5. Display the results of the device self-test (get_log_page, log_id=6)

Preconditions:
  1. Support self-test

  2. A private namespace is present on both controllers or ns management is supported

Pass/Fail Criteria:

Test will fail if the IO test fails or the extended device self-test fails.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_startIO_pNS_c1_THEN_sDST_pNS_c2.py

Use a private namespace and run IO on first controller then run a short device self-test on the private namespace of the other controller.

  1. Start a Compare test with 16 threads and 8kb threads

  2. Wait 5 seconds

  3. Start an short device self-test (device_selftest, 1)

  4. Add the log page info to the test report (get_log_page, log_id=6)

Preconditions:
  1. Support self-test

  2. A private namespace is present on both controllers or ns management is supported

Pass/Fail Criteria:

Test will fail if the IO test fails or the short device self-test is not successful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_adm_startIO_sNS_c1_THEN_smartlog_c2.py

Use shared namespace and run IO using first controller and smart log on second controller using NSID=0

  1. Run a compare test 16 threads, 8kb blocks on the first controller

  2. Wait 5 seconds, then request a smart log on the second controller (get_log_page, log_id=2, NSID=0)

Pass/Fail Criteria:

Test will fail if the IO test fails or the request for the log page is not successful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_io_lbaf1_pNS_BOTH.py

Run IOs in parallel on both controllers using their private namespaces formatted with the same LBAF

  1. Run a 60 second compare test with 16 threads, 8kb blocks on both controllers

Pass/Fail: Test will fail if either IO tests fails.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_io_writeUncorr_sNS_c1_readUncorr_sNS_c2.py

Using a shared namespace, write uncorrectable on an LBA using first controller and then read the same LBA using the second controller.

  1. Verify a read of 3 LBAs starting at 0 passes using the first controller

  2. Write 3 uncorrectable LBAs starting at 0 using the second controller.

  3. Attempt to read 3 uncorrectable starting at 0 using the first controller.

  4. Clear the uncorrectable

Pass/Fail Criteria:

Test fails if any attempts to read uncorrectable does not fail or if attempts to write uncorrectable fail.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_rst_ctrlReset_BOTH_SIM.py

Perform a controller reset on both controllers simultaneously

Preconditions:
  1. Support controller reset

  2. Support FLR

Pass/Fail Criteria:

Test will fail if either controller reset is unsuccessful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_rst_flr_BOTH_SIM.py

Perform a FLR on both controllers simultaneously

Preconditions:
  1. Support FLR

Pass/Fail Criteria:

Test will fail if either flr reset is unsuccessful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_rst_iop_1_THEN_clrp_2_60s.py

Using a private namespace, run IO on one controller and send controller reset on second controller

Pass/Fail Criteria:

Test will pass if IO test passes and controller reset is successful

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_rst_startIO_pNS_c1_THEN_clr_c2.py

Using a private namespace, run IO on the first controller and execute controller reset on second controller

  1. Start an io test (Compare) with 16 threads and 8kb blocks on the first controller

  2. Wait for 30 seconds

  3. Issue a controller reset on the second controller

  4. Continue to run IO until the compare test completes

Preconditions:
  1. Support controller reset

  2. A private namespace is present on both controllers or ns management is supported

Pass/Fail Criteria:

Test will fail if the IO test fails or if the controller reset is unsuccessful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_rst_startIO_pNS_c1_THEN_flr_c2.py

Run IO on private namespace on first controller and send FLR on second controller

  1. Start an io test (Compare) with 16 threads and 8kb blocks

  2. Wait for 30 seconds

  3. Issue FLR on the second controller

  4. Continue to run IO until the total test time reaches 60 seconds

Preconditions:
  1. Support FLR

  2. A private namespace is present on both controllers or ns management is supported

Pass/Fail Criteria:

Test will pass if IO test passes and FLR is successful

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_rst_startIO_sNS_c1_THEN_clr_c2.py

Using a shared namespace, run IO on the first controller and execute controller reset on second controller

  1. Start an io test (Compare) with 16 threads and 8kb blocks on the first controller

  2. Wait for 30 seconds

  3. Issue a controller reset on the second controller

  4. Continue to run IO until the compare test completes

Preconditions:
  1. Support FLR

  2. A shared namespace or ns management is supported

Pass/Fail Criteria:

Test will fail if the IO test fails or if the controller reset is unsuccessful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional

dual_rst_startIO_sNS_c1_THEN_flr_c2.py

Using a shared namespace run IO on first controller and send FLR on the second controller

  1. Start an io test (Compare) with 16 threads and 8kb blocks

  2. Wait for 30 seconds

  3. Issue FLR on the second controller

  4. Continue to run IO until the total test time reaches 60 seconds

Preconditions:
  1. Support FLR

  2. A shared namespace or ns management is supported

Pass/Fail Criteria:

Test will fail if the IO test fails or if the FLR is unsuccessful.

Metadata:

ZONETYPE = 1 # Bit mask 1 = Conventional NS_CSI = 0 # 0 = Conventional