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_log_page, log_id=6)
- Preconditions:
Supports self-test
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.
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)
- Preconditions:
Support self-test
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.
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.
- 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.
Run identify controller on each controller
Verify that both controllers returned the same information
- Preconditions:
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.
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.
- 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.
Do a short device self-test on each controller (device_selftest, 1)
Log the results of the short device self-test
- Preconditions:
Support self-test
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.
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.
- Preconditions:
Support self-test
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
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.
- 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
Perform secure erase on the first controller
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.
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_log_page, log_id=6)
- Preconditions:
Support self-test
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.
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_log_page, log_id=6)
- Preconditions:
Support self-test
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
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_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
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.
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 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:
Support controller reset
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:
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
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 compare test completes
- Preconditions:
Support controller reset
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
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
- Preconditions:
Support FLR
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
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 compare test completes
- Preconditions:
Support FLR
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
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
- Preconditions:
Support FLR
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