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
dual_adm_eDST_sNS_BOTH_SEQ.py
Using a shared namespace, run an extended device self-test on controller 1 then on controller 2.
Run an extended device self test on both controllers (device_selftest, 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.
Create a shared namespace
Start the Compare test with 16 threads and 8kb blocks at the same time as an extended device self-test
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.
Run identify on both controllers.
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.
Run identify controller on each controller
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.
Run identify controller on each controller
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.
Create a shared namespace
Do a short device self-test on each controller (device_selftest, 1)
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.
Create a shared namespace
Start the Compare test with 16 threads and 8kb blocks at the same time as a short device self-test (device_selftest, 1)
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
Report sanitize status of second controller before sanitizing
Start Sanitize on first controller
Verify Sanitize starts (‘Sanitize_Status’ = 2 on ‘LID’ 0x81)
Wait for sanitize to complete (‘Sanitize_Status’ != 2 on ‘LID’ 0x81)
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
Create a namespace
Perform secure erase on the first controller
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.
Create a private namespace on each controller
Start an io test(Compare) on the first controller with 16 threads and 8kb blocks
Wait for 5 seconds
Start an extended device self-test (device_selftest, 2)
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.
Create a private namespace each controller
Start a Compare test with 16 threads and 8kb threads
Wait 5 seconds
Start an short device self-test (device_selftest, 1)
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
Create a 20gb shared, conventional, attached namespace on both controllers
Run a compare test 16 threads, 8kb blocks on the first controller
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
Create a 20gb private, conventional, attached namespace with lbaf=1 on each controller
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.
Create a 20gb attached, shared namespace
Verify a read of 3 LBAs starting at 0 passes using the first controller
Write 3 uncorrectable LBAs starting at 0 using the second controller.
Attempt to read 3 uncorrectable starting at 0 using the first controller.
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
Create two private namespaces, one on each controller
Start an io test (Compare) with 16 threads and 8kb blocks on the first controller
Wait for 30 seconds
Issue a controller reset on the second controller
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
Create two private namespaces, ones on each controller
Start an io test (Compare) with 16 threads and 8kb blocks
Wait for 30 seconds
Issue FLR on the second controller
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
Create a shared namespace
Start an io test (Compare) with 16 threads and 8kb blocks
Wait for 30 seconds
Issue a controller reset on the second controller
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
Create a shared namespace
Start an io test (Compare) with 16 threads and 8kb blocks
Wait for 30 seconds
Issue FLR on the second controller
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.