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_logpage, log_id=6)

Pass/Fail Criteria:

Test will fail if either device self-test fails.

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. Create a shared namespace

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

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

Pass/Fail Criteria:

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

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.

dual_adm_identCNS12_sNS_BOTH_SEQ.py

Using a shared namespace run identify controller list (CNS=12h) 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.

dual_adm_identCNS13_sNS_BOTH_SEQ.py

Using a shared namespace 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.

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. Create a shared namespace

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

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

Pass/Fail Criteria:

Test will fail if either device self-tests fails.

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. Create a shared namespace

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

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

Pass/Fail Criteria:

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

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.

dual_adm_secureErase_sNS_BOTH_SEQ.py

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

  1. Create a namespace

  2. Perform secure erase on the first controller

  3. Perform secure erase on the first controller

Pass/Fail Criteria:

Test will fail either secure erase fails.

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_logpage, log_id=6)

Pass/Fail Criteria:

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

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. Create a private namespace each controller

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

  3. Wait 5 seconds

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

  5. Add the log page info to the test report (get_logpage, log_id=6)

Pass/Fail Criteria:

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

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. Create a 20gb shared, conventional, attached namespace on both controllers

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

  3. Wait 5 seconds, then request a smart log on the second controller (get_logpage, 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.

dual_io_lbaf1_pNS_BOTH.py

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

  1. Create a 20gb private, conventional, attached namespace with lbaf=1 on each controller

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

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

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. Create a 20gb attached, shared namespace

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

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

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

  5. Clear the uncorrectables

Pass/Fail Criteria:

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

dual_rst_ctrlReset_BOTH_SIM.py

Perform a controller reset on both controllers simultaneously

Pass/Fail Criteria:

Test will fail if either controller reset is unsuccessful.

dual_rst_flr_BOTH_SIM.py

Perform a FLR on both controllers simultaneously

Pass/Fail Criteria:

Test will fail if either flr reset is unsuccessful.

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

dual_rst_startIO_pNS_c1_THEN_ctrlReset_c2.py

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

  1. Create two private namespaces, one on each controller

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

  3. Wait for 30 seconds

  4. Issue a controller reset on the second controller

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

Pass/Fail Criteria:

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

dual_rst_startIO_pNS_c1_THEN_flr_c2.py

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

  1. Create two private namespaces, ones on each controller

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

  3. Wait for 30 seconds

  4. Issue FLR on the second controller

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

Pass/Fail Criteria:

Test will pass if IO test passes and FLR is successful

dual_rst_startIO_sNS_c1_THEN_clr_c2.py

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

  1. Create a shared namespace

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

  3. Wait for 30 seconds

  4. Issue a controller reset on the second controller

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

Pass/Fail Criteria:

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

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. Create a shared namespace

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

  3. Wait for 30 seconds

  4. Issue FLR on the second controller

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

Pass/Fail Criteria:

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