OCP_2_5_Group_5

DSSD_25_EOL_Test_Case.py

This script will run the following tests:
  1. Perform setup

  2. Wait for first AEN reporting spares have dropped below the threshold

  3. Wait for next AEN reporting spares have been exhausted

  4. Verify log page data fields for EOL

  5. Wait for final AEN for RO mode

  6. Validate read only mode

NOTE: This test case shall use special EOL Drives that are 98-99% consumed for testing. But note that the available spares must be greater than the available spares threshold to allow for detection of available spares falling below the threshold. For capacities >= 2TB the DUT shall be short-stroked.

NOTE: The execution time of this test is not deterministic because it cannot be guaranteed how long it will take to retire the final spares. The test must be allowed run to completion.

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.5 requirements referenced by this script:

EOL-3/4/5

check_bit(field_name, field_value, bit)

Helper function to handle parsing and checking on the bit-value of a given field

Parameters:
  • field_name (str) – Field name to be checked on

  • field_value (int) – Field value to parse and verify on

  • bit (int) – Bit number

Return type:

None

issue_io(dut, seektype, io_profile, threads, blocks, fail_type='error', iosperpass='-1', io_runtime=-1, io_pattern=0, extra_config=None)

Executes an IO Test

Parameters:
  • dut (XML_API) – Device object under test

  • seektype (str) – Either ‘Sequential’ | ‘Random’

  • io_profile (str) – IO Profile to be executed

  • threads (int | str) – Threads (QD) to execute IO on

  • blocks (int | str) – Number of Logical Blocks

  • fail_type (int or str) – Specifies the action to be taken if the start operation fails

  • iosperpass (int | str) – Param to determine what the IO does on the drive ‘0’: unlimited, ‘-1’: Iterate once over drive, ‘-2’: Iterate twice over drive

  • io_runtime (int) – Time in seconds for IO to execute

  • io_pattern (int) – Pattern for io to be executed

  • extra_config (dict | None) – Optional parameter for running IO test with additional configurations

Return type:

dict

verify_aer(status)

Helper function to handle verifying the information received from the AER line(s)

Parameters:

status (str) –

Return type:

None

verify_feature_cmd(dut, set_feature, fail_type='error', **kwargs)

Helper function to handle verifying and re-attempting a set_features command if it fails

Parameters:
  • dut (XML) – Device under testing

  • set_feature (dict) – Returned dict of a given set_features command

  • fail_type (str) – Fail Type to use if both the first and second attempt of the set_features command fails

  • kwargs (Dict[str, Any]) – Keyword arguments to add to the set_features command

Return type:

None

verify_ios(io_tests, fail_type='error', check_start_only=False, check_failure_status=None, is_verify_step=True)

Verifies the successful execution and wait for the completion of an I/O command

Parameters:
  • io_tests (list) – list of I/O test dicts

  • fail_type (str) – String to pass into fail_action to handle IO errors

  • check_start_only (bool) – If TRUE: ONLY checks if an IO successfully starts, if FALSE: Check if the IO successfully starts AND waits to finish

  • check_failure_status (int | none) – Parameter to check the IO against a failure status

  • is_verify_step (bool) – Determines whether to execute resting action in method or not (special case for if the I/O verify logging comes in a later step)

Returns:

  • result_msg (tuple(func, msg) | none) – msg for later fail_action, or none if passed

  • bool – boolean to determine whether any I/O test failed

wait_for_aen(dut, log_file)

Helper function to wait for the Asynchronous Event Request to complete by parsing /var/log/messages

Parameters:
  • dut (XML) – Device under testing

  • log_file (stream) – File stream to parse when looking at the completion/submission queue

Returns:

line – Line from /var/log/messages with information about completed asynchronous event request

Return type:

str

DSSD_25_Endurance_Data_Test_Case.py

This script will run the following tests:
  1. Do GetLogPage for LID 2h and get values of Percentage Used, Available Spare, and Data Units Written fields

  2. Verify Percentage Used >= 100 and Available Spare = 0

  3. Do GetLogPage for LID C0h and get value of Endurance Estimate field

  4. Verify Data Units Written in bytes equals Endurance Estimate

  5. Verify Data Units Written in TB >= ENDURANCE_EOL field in adaptation parameters

NOTE: An EOL drive is expected to be used for this test

Pass/Fail: Script passes if all tests pass

Open Compute Project Datacenter NVMe SSD Spec v2.5 requirements referenced by this script:

ENDUD-1, ENDUD-3