Optical Logo Test - CD-ROM
This test validates that the optical device complies with standards and meets the Windows optical drive requirements.
Test details
Specifications |
|
Platforms |
|
Supported Releases |
|
Expected run time (in minutes) | 30 |
Category | Scenario |
Timeout (in minutes) | 1800 |
Requires reboot | false |
Requires special configuration | false |
Type | automatic |
Additional documentation
Tests in this feature area might have additional documentation, including prerequisites, setup, and troubleshooting information, that can be found in the following topic(s):
Running the test
Before you run the test, complete the test setup as described in the test requirements: Optical Disk Drive Testing Prerequisites.
The test shows a configuration dialog box to get the primary and secondary drive tray configuration. The user has to select the identical secondary drive from the drives list in the Writer Drive dialog box and should select the drive tray capabilities, whether it supports auto ejecting and auto loading the tray.
Note
The I/O intensive applications running on the test computer might interfere with the optical logo test performance measurement scenarios. Please make sure there are no other applications running on the test computer when the test is running.
Troubleshooting
For generic troubleshooting of HLK test failures, see Troubleshooting Windows HLK Test Failures.
For troubleshooting information, see Troubleshooting Device.Storage Testing.
The following are known issues regarding this test:
Bus reset test scenario disabled by default.
By default, the test does not validate the proper device behavior upon bus reset.
If bus reset happens, the drive is expected to reset itself properly, come back online, and should work as normal. Some defective drives do not reset themselves properly and will not work after the bus reset. This is not a proper implementation. When this specific test scenario is enabled, the command verification test cases (both device and profile test cases) send the commands with incorrect SRB data direction flag. This will typically stall the bus and eventually cause the port driver to reset the bus after a given timeout period.
Most storage controllers do not support this test scenario properly. The incorrectly implemented storage controllers will not recover after the bus reset. If that happens, the test case might fail due to the storage controller even if the device was properly implemented. This test is not able to distinguish device failures from storage controller failures. So, testing this specific scenario is disabled by default. To enable testing this specific scenario, the test executable should be ran with the "RunDataDirectionFlagScenario" command-line option.
More information
The drive shall support the following commands:
Get Configuration (with no media)
Get Event Status Notification
Inquiry
Mechanism Status
Mode Sense
Prevent Allow Medium Removal
Request Sense
Start Stop Unit
Test Unit Ready
The drive shall support the following commands if they are mandatory for the features and profiles it supports.
Get Configuration (with media)
Get Performance
Read Buffer Capacity
Read Capacity
Read Disc Information
Read Format Capacities
Read Toc Pma Atip
Send Opc Information
Set CD Speed
Read10
The drive shall support the following scenarios if the commands associated with these scenarios are mandatory for the features and profiles it supports.
Event Status Notification
Write
Sequential mode
Packet mode
Restricted Overwrite
Multi Session support
Audio Media (Write Audio Tracks)
Blank
Unique drive serial number
Real-time streaming
Audio Media Gapless Raw Recording
Test cases are segregated into the following three groups:
Device test cases. The following commands verification test cases that are applicable for the device:
GET CONFIGURATION (WITH NO MEDIA)
GET EVENT STATUS NOTIFICATION
INQUIRY
MECHANISM STATUS
MODE SENSE
PREVENT ALLOW MEDIUM REMOVAL
REQUEST SENSE
START STOP UNIT
TEST UNIT READY
Profile test cases. The following commands verification test cases will be tested on all applicable profiles:
GET CONFIGURATION
GET PERFORMANCE
READ CAPACITY
READ BUFFER CAPACITY
READ DISC INFORMATION
READ FORMAT CAPACITIES
READ TOC PMA ATIP
SEND OPC INFORMATION
SET CD SPEED
READ10
Usage scenario test cases. The following scenarios are tested using the IMAPI burn engine interfaces:
EVENT STATUS NOTIFICATION
BLANK
WRITE/MULTISESSION
AUDIO MEDIA
WRITE DUAL LAYER MEDIA
DRIVE SERIAL NUMBER
READ ONLY DRIVE
REAL-TIME STREAMING
AUDIO MEDIA GAPLESS RAW RECORDING
This test includes the following test cases:
GET CONFIGURATION COMMAND (WITH NO MEDIA)
GET EVENT STATUS NOTIFICATION COMMAND
INQUIRY COMMAND
MECHANISM STATUS COMMAND
MODE SENSE COMMAND
PREVENT ALLOW MEDIUM REMOVAL COMMAND
REQUEST SENSE COMMAND
START STOP UNIT COMMANDS, EJECT & LOAD PERFORMANCE
TEST UNIT READY COMMAND
GET CONFIGURATION COMMAND
GET PERFORMANCE
READ CAPACITY COMMAND
READ BUFFER CAPACITY COMMAND
READ DISC INFORMATION COMMAND
READ FORMAT CAPACITIES COMMAND
READ TOC/PMA/ATIP COMMAND
SEND OPC INFORMATION COMMAND
SET CD SPEED COMMAND
READ10 COMMAND
EVENT NOTIFICATION
WRITE TESTS
AUDIO MEDIA (WRITE AUDIO TRACKS)
BLANK
WRITE DUAL LAYER MEDIA
READ ONLY DRIVE
DRIVE SERIAL NUMBER
REAL TIME STREAMING
WRITE SPEED MEASUREMENT
AUDIO MEDIA GAPLESS RAW RECORDING
GET CONFIGURATION command (with no media)
Description: This test is to ensure the drive responds to the GET CONFIGURATION command properly when there is no media in the tray.
Applicable Media: Any media supported by the device
Test Case Steps:
Eject the tray by sending the START STOP UNIT command.
Wait until the tray is open.
Send the GET CONFIGURATION command with response data length of 4 bytes to get the feature header data length. If the command fails, print the sense key and fail the test case. Purpose: allow software to probe support of command.
Check if the drive reports no current profile in the feature header. If the drive does not repro current profile as "no current profile" then fail the test case.
Send the GET CONFIGURATION command again with RT=00b and with the correct data length returned by the device in step 3. Purpose: allow software to retrieve the entire list of features supported by the drive.
Check if the drive reports no current profile in the feature header. If the drive does not repro current profile as "no current profile" then fail the test case.
Get the profile list feature descriptor in the response for the current profile bit set and Fail the test case if any of the profile descriptor has the current profile bit set to 1.
Send the GET CONFIGURATION command with response data length of 20 bytes, RT=01b, Starting Feature Number=0010h (Random Readable Feature). If the command fails or if the Random Readable Feature descriptor is not returned, print the sense key as appropriate and fail the test case. Purpose: allow software to probe specific feature currency (not current).
[Optional] Send the GET CONFIGURATION command with data direction flag set to "to the device" and with response data length of 4 bytes to get the feature header data length. If the command fails, print the sense key and fail the test case. Purpose: To make sure the device handles command with incorrect data direction.
Inject the tray.
Wait until the device comes to ready state
Send the GET CONFIGURATION command with response data length of 16 bytes, RT=01b, Starting Feature Number=0003h (Removable Medium Feature). If the command fails print the sense key as appropriate and fail the test case. If the command succeeds:
Check if the "Eject" bit is set if the drive supports auto eject mechanism.
Check if the "Load" bit is set if the drive supports auto inject mechanism.
Result: The drive should respond to the GET CONFIGURATION command properly
GET EVENT STATUS NOTIFICATION command
Description: To validate if the drive supports the GET EVENT STATUS NOTIFICATION command
Applicable Media: Any media supported by the device
Test Case Steps:
Send Get Event Status Notification Command with the following values in the CDB.
Notification Class Request = 0x7E (Operational Change, Power Management, External Request, Media, Multi-Host, Device Busy),
Polled = 1
Allocation Length equal to the size of the response header (4 bytes)
If the command fails, fail the test case
In the response check which events are supported
[Optional] Send Get Event Status Notification Command with the data direction flag set to "to the device" and the following values in the CDB.
Notification Class Request = 0x7E (Operational Change, Power Management, External Request, Media, Multi-Host, Device Busy),
Polled = 1
Allocation Length equal to the size of the response header (4 bytes)
If the command fails, fail the test case
In the response check that Event Data Length is 0x6, NEA bit is cleared, Notification Class is non-zero and Supported Event Classes are identical to step 3. Otherwise fail the test case.
Send Get Event Status Notification Command with the following values in the CDB.
Notification Class Request = 0x7E (Operational Change, Power Management, External Request, Media, Multi-Host, Device Busy).
Polled = 1
Allocation Length equal to the size of the response header (4 bytes)
If the command fails, fail the test case.
Result: The drive should respond to the GET EVENT STATUS NOTIFICATION command properly.
INQUIRY command
Description: To validate if the drive supports the INQUIRY command.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the INQUIRY command with allocation length equal 08h. Purpose: allow software to probe the required response buffer size.
If the command succeeds, check the response for the additional length in the header. The additional length must be 32d or larger [MMC5r04 6.9.2].
Send the INQUIRY command again with allocation length set to 5 bytes more than the additional length from step 2.
If the command succeeds, ensure that response data fields match values specified in MMC5r04 table 320.
Check that Vendor Identification, Product Identification and Product Revision Level are not null.
- Purpose: Basic identification by software.
Check if the following values match:
Device Type = 5
Device Type Qualifier = 0
Removable Media = 1
Response Data Format = 2
Hierarchy Support = 0
Normal ACA = 0
Protect = 0
Third Party Copy = 0
Target Port Group Support = 0
Access Controls Coordinator = 0
SCC Supported = 0
Addr16 = 0
Medium Changer = 0
Multi Port = 0
VS1 = 0
Enclosure Services = 0
BQue = 0
VS2 = 0
Command Queue = 0
Linked Commands = 0
Synchronous = 0
Wide16 = 0
Send the INQUIRY command with the following values in the CDB:
EVPD = 0
Allocation Length = 240
Send the INQUIRY command with the following values in the CDB:
EVPD = 1
Allocation Length = 240
If the command succeeds then compare the response from step 7 and step 8, if both are equal then fail the test case.
Send the INQUIRY command for a random number of times between 10 and 25 with random allocation lengths. If the command fails then fail the test case.
[Optional] Send the INQUIRY command with the data direction flag set to" to the device" and with the following values in the CDB
EVPD = 0
Allocation Length = 240
Result: The drive should respond to the INQUIRY command properly.
MECHANISM STATUS command
Description: To validate if the drive supports the MECHANISM STATUS command
Applicable Media: Any media supported by the device
Test Case Steps:
Send the MECHANISM STATUS command with allocation length 0 bytes (data sense unspecified). If the command fails, print the sense key and fail the test case.
- Purpose: allow software to probe support of command
Eject the Tray.
Wait until the device return the sense data (Sense Key : 0x2, ASC: 0x3A, ASCQ: 0x02)
Send the MECHANISM STATUS command with allocation length 8 bytes.
Check that Door Open bit is 1b.
- Purpose: Allow software to detect if door is open or closed (open).
Inject the tray
Wait until the device is ready
Send the MECHANISM STATUS command with allocation length 8 bytes.
Check that Door Open bit is 0b.
- Purpose: Allow software to detect if door is open or closed (closed).
Create an 8 byte buffer and fill it with random data.
[Optional] Send the MECHANISM STATUS command with data direction flag set to "to the device" and with allocation length of 8 bytes. Pass the buffer from step 11 to the device.
Result: The drive should respond to the MECHANISM STATUS command properly
MODE SENSE command
Description: To validate if the drive supports the Mode Sense command.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the MODE SENSE command with the following values in the CDB to get all the supported Mode Pages:
Page Control = 0
Disable Block Descriptors = 1
Page Code = 0x3F
Allocation Length = 0x8000
Check the following values in the response:
Block Descriptor Length in the mode parameters header is zero
Page length for each mode page data is equal to the value documented in MMC5.
Validate the Mode page data for each reported page
Send the Mode Sense command for each reported page with the following values in the CDB:
Page Control = 0
Disable Block Descriptors = 1
Allocation Length = Page Length reported by the drive in step 2
Check the following values in the response:
Block Descriptor Length in the mode parameters header is zero.
Page code in the mode page header matches with the requested page code.
Page length in the mode page header is equal to the value document in MMC5.
Send the Mode Sense command with allocation length 0xFFF0
Check the following values in the response:
Block Descriptor Length in the mode parameters header is zero
Page code in the mode page header matches with the requested page code
Send the Mode Sense command with allocation length 0x0A
Check if the response matches byte by byte up to the response size (0x0A) with the response for allocation length equal to 0xFFF0.
Send the Mode Sense command for a random number of times between 10 and 25 with random allocation lengths between 0x0A and 0xFFF0.
Check if the response matches byte by byte up to the response size (random value between 0x0A and 0xFFF0) with the response for allocation length equal to 0xFFF0.
[Optional] Send the MODE SENSE command with the data direction flag set to "to the device" and with the following values in the CDB to get all the supported Mode Pages:
Page Control = 0
Disable Block Descriptors = 1
Page Code = 0x3F
Allocation Length = 0x8000
Result: The drive should respond to the GET CONFIGURATION command properly
PREVENT ALLOW MEDIUM REMOVAL command
Description: To validate if the drive supports the PREVENT ALLOW MEDIUM REMOVAL command.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the PREVENT ALLOW MEDIUM REMOVAL command with prevent bit set to 1 and Persistent bit set to 0. This would lock the drive. If the command fails print the sense key and fail the test case.
Send the start stop unit command with LocEj bit set to 1 and Immediate bit set to 0 and Start bit set to zero. This will try to eject the disc. If the drive doesn't reject the command with sense data 0x05 0x53, 0x02 then it is a failure.
Send the Test Unit ready command and ensure it succeeds.
Ask the user to press the eject button to eject the media.
Send the Test Unit ready command and ensure it still succeeds (door should not open).
Send the Prevent Allow Medium Removal command with prevent bit set to 0 and Persistent bit set to 0. This would unlock the drive. If the command fails print the sense key and fail the test case.
Ask the user to press the eject button to eject the media
Wait for the device to open the door - Send the Test Unit ready command, if the command succeeds then wait for 1 second and retry until it fails with (02/3A/02). Timeout after 30 seconds.
If the drive supports auto loading mechanism then inject the tray back into the drive otherwise ask the user to insert the tray back into the drive.
Wait for the device to be ready
[Optional] Send the PREVENT ALLOW MEDIUM REMOVAL command with the data direction flag set to the "to the device" and pass the random data in a random size buffer.
Result: The drive should respond to the PREVENT ALLOW MEDIUM REMOVAL command properly.
REQUEST SENSE command
Description: To validate if the drive supports the REQUEST SENSE command.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the REQUEST SENSE command, with the descriptor bit set to zero and Allocation Length set to 252. The drive shall respond with the fixed format sense data.
If the command fails print the sense key and fail the test case.
If the response code is 0x70 or 0x71 the test passes otherwise the test fails.
[Optional] Send the REQUEST SENSE command, with the data direction flag set to "to the device" and with the descriptor bit set to zero and Allocation Length set to 252. The drive shall respond with the fixed format sense data.
Result: The drive should respond to the REQUEST SENSE command properly.
START STOP UNIT command, EJECT & LOAD PERFORMANCE
Description: To validate if the drive supports the START STOP UNIT command.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the START STOP UNIT command with the following values in the CDB
Immediate = 0, LoadEject = 0, Start = 0, PowerConditions = 0
Immediate = 0, LoadEject = 0, Start = 1, PowerConditions = 0
Immediate = 1, LoadEject = 0, Start = 0, PowerConditions = 0
Immediate = 1, LoadEject = 0, Start = 1, PowerConditions = 0
The command shall succeed for each of this combination.
If the drive supports ejecting the tray, then send the START STOP UNIT command with the following values in the CDB, to eject the tray
- Immediate = 1, LoadEject = 1, Start = 0, PowerConditions = 0
Wait for the device to open the door - Send the TEST UNIT READY command, if the command succeeds then wait for 5 seconds and retry until it fails with (02/3A/02). Timeout after 10 seconds.
If the drive supports loading the tray (auto inject), then send the START STOP UNIT command with the following values in the CDB, to inject the tray:
- Immediate = 1, LoadEject = 1, Start = 1, PowerConditions = 0
If the drive doesn't support loading the tray then ask the user to insert the tray back into the drive.
Wait for the device to be ready - Send the TEST UNIT READY command, if the command fails with a sense key then wait for 1 second and retry until it succeeds. Timeout after 30 seconds. PREMIUM LOGO: Time out: 20 seconds.
Send the START STOP UNIT command with the following values in the CDB, to eject the tray:
- Immediate = 0, LoadEject = 1, Start = 0, PowerConditions = 0
Wait for the device to open the door - Send the TEST UNIT READY command, if the command succeeds then wait for 1 second and retry until it fails with (02/3A/02). Timeout after 30 seconds.
Ask user to remove the media
If the drive supports loading the tray (auto inject), then send the START STOP UNIT command with the following values in the CDB, to inject the tray:
- Immediate = 0, LoadEject = 1, Start = 1, PowerConditions = 0
Ensure the command fails with Not Ready / Medium not present / Tray closed (02/3A/01)
If the drive supports ejecting the tray, then send the START STOP UNIT command with the following values in the CDB, to eject the tray:
- Immediate = 0, LoadEject = 1, Start = 0, PowerConditions = 0
Ask the user to place the media in the tray.
If the drive doesn't support loading the tray then ask the user to insert the tray back into the drive and wait until the device is ready. If the drive supports loading the tray (auto inject), then send the START STOP UNIT command with the following values in the CDB, to inject the tray and wait until the device is ready.
- Immediate = 0, LoadEject = 1, Start = 1, PowerConditions = 0
[Optional] Send the START STOP UNIT command with data direction flag set to "to the device". Send random size buffer with random data and with the following values in the CDB.
- Immediate = 0, LoadEject = 0, Start = 0, PowerConditions = 0
Result: The drive should respond to the START STOP UNIT command properly.
TEST UNIT READY command
Description: To validate if the drive supports the TEST UNIT READY command.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the TEST UNIT READY command.
If the command fails print the sense key and fail the test case
[Optional] Send the TEST UNIT READY command with data direction flag set to "to the device" and with random size buffer filled with random data.
Result: The drive should respond to the TEST UNIT READY command properly.
GET CONFIGURATION command
Description: To validate if the drive supports the GET CONFIGURATION command for the reported profile.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the GET CONFIGURATION command with response data length of 0 bytes (data sense unspecified). If the command fails, print the sense key and fail the test case.
- Purpose: allow software to probe support of command.
Send the GET CONFIGURATION command with response data length of 4 bytes to get the feature header data length. If the command fails, print the sense key and fail the test case.
- Purpose: allow software to probe support of command.
Send the GET CONFIGURATION command with response data length of 8 bytes (to get the header), RT=00b, Starting Feature Number=0000h. If the command fails or if the Current Profile equals 00h, print the sense key as appropriate and fail the test case.
Purposes:
allow software to probe the required response buffer size.
allow software to probe current profile (a profile is current).
If the command succeeds check the following in the response
Data length in the header is non zero and it is four byte aligned
Current profile number matches with media type loaded in the drive
Send the GET CONFIGURATION command with response data length read at step 3, RT=00b, Starting Feature Number=0000h. Read the Current Profile, and then look for this profile code in the list of supported profiles. Ensure the current profile matches with the profile type of the inserted media. If the command fails or if the current profile is not reported current in the list of supported profiles, print the sense key as appropriate and fail the test case.
- Purpose: Ensure consistency of the information reported by the drive.
Send the GET CONFIGURATION command again with RT=00b and with the correct data length returned by the device in step3 if length fits 2 bytes. If length exceeds 2 bytes, send the command with maximum data length for 2 bytes.
- Purpose: allow software to retrieve the entire list of features supported by the drive.
If length exceeded 2 bytes, read the feature number for the last complete feature descriptor returned and issue additional GET CONFIGURATION command with RT=10b and with starting feature number equal to this feature number plus 1. Repeat operation until the data length returned in the feature header is equal or smaller to the allocated length. Concatenate the resulting feature descriptors for verification in step 10.
For all commands succeeding at steps 3-6, check if the data length in the header of the response is multiple of 4 (4 byte aligned). Fail if it is not 4 byte aligned. Purpose: 4 bytes alignment is assumed by software.
Additionally if the command(s) succeeded, check that each reported feature Version and Additional Length fields are equal or bigger than the respective values for the given feature in MMC-5 document. E.g.: Core Feature's version must be 0010b or higher and its additional length must be 8 or larger. Purpose: Ensure consistency of the information reported by the drive. If the removable medium feature is reported, the version number of it should be 1 as specified in GET CONFIGURATION command.
Additionally if the command(s) succeeded, check that each mandatory feature for reported supported profile is reported.
- Purpose: Ensure consistency of the meta-information reported by the drive.
Send the GET CONFIGURATION command with response data length of 20 bytes, RT=01b, Starting Feature Number=0010h (Random Readable Feature). If the command fails or if the Random Readable Feature descriptor is not returned, print the sense key as appropriate and fail the test case. Purpose: allow software to probe specific feature currency (current).
[Optional] Send the GET CONFIGURATION command with data direction flag set to "to the device" and with random size buffer filled with random data. The following values are set in the CDB:
- Allocation Length = Size of the buffer, Starting Feature Number=0000h, RT=00b
Result: The drive should properly implement the GET CONFIGURATION command for the applicable media types.
GET PERFORMANCE command
Description: To validate if the drive supports the GET PERFORMANCE command for the reported profile.
Applicable Media: Any of the following media:
CD-R
CD-ROM
CD-RW
DVD+R
DVD+R Dual Layer
DVD+RW
DVD-RW Restricted Overwrite
DVD-RAM
DVD-R
DVD-R Dual Layer Seq
DVD-ROM
BD-R
BD-RE
BD-ROM
Test Case Steps:
Send the GET CONFIGURATION command to the get the REAL TIME STREAMING feature. Check the response, if the Write Speed Performance Descriptor bit is set. If this is not set then the drive doesn't support Write speed descriptors. Skip steps 6 to 11 which validate the write speed descriptors.
Send the GET PERFORMANCE command with the following values in the CDB to get zero nominal read performance descriptors
Type = 0
Starting LBA = 1
Max Descriptors = 0
Data Type = 0x10
If the command fails print the sense key and fail the test case
Send the GET PERFORMANCE command with the following values in the CDB to get one nominal read performance descriptor
Type = 0
Starting LBA = 1
Max Descriptors = 1
Data Type = 0x10
If the command fails print the sense key and fail the test case
Send the GET PERFORMANCE command with the following values in the CDB to get one nominal write performance descriptor.
Type = 0
Starting LBA = 1
Max Descriptors = 1
Data Type = 0x14
If the command fails print the sense key and fail the test case
Send the GET PERFORMANCE command with the following values in the CDB to get data length for the list of write speed descriptors
Type = 3
Starting LBA = 1
Max Descriptors = 0
Data Type = 0x14
If the command fails print the sense key and fail the test case.
Send the GET PERFORMANCE command with the following values in the CDB to get the list of write speed descriptors
Type = 3
Starting LBA = 1
Max Descriptors = 10
Data Type = 0x14
If the command fails print the sense key and fail the test case.
[Optional] Send the GET PERFORMANCE command with data direction flag set to "to the device" and with random size buffer filled with random data. Set with the following values in the CDB to get zero nominal read performance descriptors.
Type = 0
Starting LBA = 1
Max Descriptors = 0
Data Type = 0x10
If the command fails print the sense key and fail the test case.
Result: The drive should properly implement the GET PERFORMANCE command for the applicable media types.
READ CAPACITY command
Description: To validate if the drive supports the READ CAPACITY command for the reported profile.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the READ CAPACITY command.
If the command fails print the sense key and fail the test case.
If the Block length in bytes is not 2048 then fail the test case.
[Optional] Send the READ CAPACITY command with data direction flag set to "to the device" and with random size buffer filled with random data.
If the command fails print the sense key and fail the test case.
Result: The drive should properly implement the READ CAPACITY command for the applicable media types.
READ BUFFER CAPACITY command
Description: To validate if the drive supports the READ BUFFER CAPACITY command for the reported profile.
Applicable Media: Any media supported by the device.
Test Case Steps:
Send the GET CONFIGURATION command to the get the REAL TIME STREAMING feature. Check the response, if the Read Buffer Capacity Block (RBCB) bit is set. If this is not set then the drive doesn't support Read Buffer Capacity command. Skip the test case.
Send the READ BUFFER CAPACITY command with block bit set to 0, and Allocation Length equal to the size of the Buffer Capacity Structure.
If the command fails print the sense key and fail the test case.
Repeat step 2 with Block bit set to 1.
If the command fails print the sense key and fail the command.
[Optional] Send the READ BUFFER CAPACITY command with data direction flag set to "to the device" and with random size buffer filled with random data and block bit set to zero.
If the command fails print the sense key and fail the test case.
Result: The drive should properly implement the READ BUFFER CAPACITY command for the applicable media types.
READ DISC INFORMATION command
Description: To validate if the drive supports the READ DISC INFORMATION command for the reported profile.
Applicable Media: Any of the following media:
DVD+R
DVD+RW
DVD-R
CD-R
CD-RW
Test Case Steps:
Send the READ DISC INFORMATION command, with the allocation length of 2 to get the standard disc information size.
If the command fails print the sense key and fail the test case.
Get the disc information length from the response. If the length is less than the Standard Disc Information Block Size (34), then fail the test case.
Send the READ DISC INFORMATION command, with the allocation length equal to the data length from step 3 plus 2.
If the command fails print the sense key and fail the test case.
[Optional] Send the READ DISC INFORMATION command with data direction flag set to "to the device" and with random size buffer filled with random data and Allocation length set to the size of the buffer.
Result: The drive should properly implement the READ DISC INFORMATION command for the applicable media types.
READ FORMAT CAPACITIES command
Description: To validate if the drive supports the READ FORMAT CAPACITIES command for the reported profile.
Applicable Media: Any of the following media:
DVD+RW
DVD-RW Restricted Overwrite
DVD-RAM
CD-RW
Test Case Steps:
Send the READ FORMAT CAPACITIES command with Allocation Length equal to 4 (Capacity List Header).
If the command fails print the sense key and fail the test case.
Get the Capacity List Length from the response
Send the READ FORMAT CAPACITIES command with Allocation Length equal to Capacity List Length + 4 (size of the Capacity List Header).
If the command fails print the sense key and fail the test case.
Check the response if the capacity list length is multiple of 8.
[Optional] Send the READ FORMAT CAPACITIES command with data direction flag set to "to the device" and with random size buffer filled with random data and Allocation length set to the size of the buffer.
Result: The drive should properly implement the READ FORMAT CAPACITIES command for the applicable media types.
READ TOC/PMA/ATIP command
Description: To validate if the drive supports the READ TOC/PMA/ATIP command for the reported profile.
Applicable Media: Any of the following media:
CD-ROM
DVD-ROM
BD-ROM
Test Case Steps:
Send the READ TOC/PMA/ATIP command with the following values in the CDB.
- Format = 0, MSF = 0, Track Session Number = 1, Allocation Length = 4
If the command fails print the sense key and fail the test case.
[Optional] Send the READ TOC/PMA/ATIP command with data direction flag set to "to the device" and with buffer filled with random data and Allocation length set to the size of the buffer. Set the CDB with the following values:
- Format = 0, MSF = 0, Track Session Number = 1, Allocation Length = 4
Result: The drive should properly implement the READ TOC/PMA/ATIP command for the applicable media types
SEND OPC INFORMATION command
Description: [This content isn't available yet.]
Applicable Media: Any of the following media:
DVD-RW Restricted Overwrite
DVD-R
CD-RW
CD-R
Test Case Steps:
Send the SEND OPC INFORMATION command with DoOpc set to 1
If the command fails print the sense key and fail the test case.
[Optional] Send the SEND OPC INFORMATION command with DoOpc set to 1, data direction flag set to "to the device" and with random size buffer filled with random data. The Allocation length is set to the size of the buffer.
Result: The drive should properly implement the SEND OPC INFORMATION command for the applicable media types.
SET CD SPEED command
Description: To validate if the drive supports the SET CD SPEED command for the reported profile.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the GET CONFIGURATION command to the get the REAL TIME STREAMING feature. Check the response, if the Set CD Speed (SCS) bit is set. If this is not set then the drive doesn't support SET CD SPEED command. Skip the test case.
Send the SET CD SPEED command, with the following values in the CDB.
- RotationalControl = 0, ReadSpeed = 0xFFFF, WriteSpeed = (((4* 75 * 2352) + 500) / 1000) If the command fails print the sense key and fail the test case
[Optional] Send SET CD SPEED command with data direction flag set to "to the device" and with random size buffer filled with random data. Set the following values in the CDB.
- RotationalControl = 0, ReadSpeed = 0xFFFF, WriteSpeed = (((4* 75 * 2352) + 500) / 1000)
Result: The drive should properly implement the SET CD SPEED command for the applicable media types.
READ10 command
Description: To validate if the drive supports the READ10 command for the reported profile.
Applicable Media: Any of the following media:
CD-ROM
DVD-ROM
Test Case Steps:
Send READ TOC/PMA/ATIP command with Allocation Length equal the size of the READ TOC response header ( 4 bytes)
Send READ TOC/PMA/ATIP command with Allocation Length equal the size of the READ TOC response header ( 4 bytes) + the Data Length from the Response Header from step 1.
Check all the formatted Read TOC descriptors, if any of its control is set to 0x04
If not found then fail the test case
Otherwise get the track starting address from the formatted Toc track descriptor.
Send the Read Capacity command with LBA field set to zero, to get the Block size.
Send the Read Command with the Transfer Length set to zero and Starting LBA set to the LBA from step 5.
Calculate the number of blocks to read
If the LBA in the Read capacity response is less than the LBA from the step 5 then the number of blocks to read is set to 0
If the LBA in the Read capacity response is greater than the LBA from the step 5 then set the number of blocks to read equal to difference between the LBA from the read capacity response and the LBA from step 5. If that value is greater than 50, set the number of blocks to read to 50.
Set the Starting LBA in the read 10 CDB to the LBA from step 5
Send the read10 command with transfer length set to 1
Sleep for 10 milliseconds
Increment the starting LBA in the read 10 CDB
Repeat steps 12 to 14 until we read all the number of blocks.
[Optional] Send the READ10 command with data direction flag set to "to the device" and with random size buffer filled with random data. Set the following values in the CDB.
- TransferLength = 1, Starting LBA = Random LBA value in the LBA range of Number of LBAs from step 8 with starting LBA from the step 5
Result: The drive should properly implement the READ10 command for the applicable media types.
Event notification
Description: To validate if the device event notification are properly reported to the windows PNP.
Applicable Media: Any media supported by the device
Test Case Steps:
If BusType field of the drive's STORAGE_ADAPTER_DESCRIPTOR structure is set to BusTypeSata then send IOCTL_ATA_PASS_THROUGH with request for Identify Packet Device Information data. In the response check that bit 5 of word 78 (Asynchronous Notification feature is supported) and bit 5 of word 79 (Asynchronous Notification feature is enabled) are both set. Otherwise fail the test
Register for Operational Change event.
Check if the media is present.
If the media is present, eject media.
Wait for the MEDIA REMOVAL event. If the event is not generated within 60 seconds timeout then fail the test case.
Inject the media to the drive.
Wait for the MEDIA ARRIVAL event. If the event is not generated within 60 seconds timeout then fail the test case.
Result: The drive should properly implement the event notifications.
Write tests
Description: Validates the write capabilities of the drive for the data content in the context of IMAPI. The device is tested with various write speeds reported by the drive. The test also validates the multisession capabilities of the device is applicable for the inserted media
Applicable Media: Any of the following media (depends on the drive operation):
Sequential writing:
CD-R
CD-RW
DVD+R
DVD-R
DVD-RAM
BD-R
BD-RE
Restricted overwrite:
- DVD-RW
Packet mode:
- DVD+RW
Multisession:
CD-R
CD-RW
DVD-R
DVD+R
BD-R
Test Case Steps:
Ask the user to insert blank media.
Call the API IDiscFormat2Data::get_CurrentMediaStatus to check if the media is blank.
If the media is not blank and if it is one of the following rewriteable media type, then erase the media by sending the blank command with a minimal blank option.
CD-RW
DVD-RW Sequential Recording
DVD-RW Restricted Overwrite
DVD+RW
DVD-RAM
BD-RE
If the media is not a rewritable media then ask the user to insert the blank media. Retry this for 3 times, otherwise fail the test case.
If the media is not a rewritable media then ask the user to insert the blank media. Retry this for 3 times, otherwise fail the test case.
Get the list of Write Speed Descriptors by calling the API IDiscFormat2Data::get_SupportedWriteSpeedDescriptors.
Randomize the order of the reported write speeds
Set the Write Speed by calling the API IDiscFormat2Data::SetWriteSpeed with one of the write speeds from step 6.
Create a random data size with the range of 10% of the available space on the media. Fill the buffer with random data.
Get the number of free blocks on the disc using the API IDiscFormat2Data::get_FreeSectorsOnMedia.
Get the next writable address using the API IDiscFormat2Data::get_NextWritableAddress.
Write the data buffer from step 8 using IDiscFormat2Data::Write.
If the drive supports Auto eject-inject mechanism then eject and inject the media into the tray.
If the media is not DVD-RW, DVD+RW, DVD-RAM, BD-RE then:
Get the number of free blocks on the disc using the API IDiscFormat2Data::get_FreeSectorsOnMedia.
Check if the number of free sectors is less than the value from step 9 by the size of write data in step 8.
Get the next writable address using the API IDiscFormat2Data::get_NextWritableAddress.
Check next writable address is greater than the next writable address from step 10 by the size of the write data in step 8.
Read data from the disc and compare if it matches with the data written to the media in step 11.
Get the last Track Information
If the media is not DVD-RW then check if the Logical Track Size if greater than or equal to size of the data we wrote.
Check if the Logical track number is correct.
Get the Write parameters mode page.
Check if the Track information reported by the drive is not Packet/Incremental if the Write parameters mode page reports as Fixed packet.
Read disc information and check if the number of session matches.
If the media is not DVD-RW, DVD+RW and DVD-RAM then repeat steps 7 to 19 for each write speed. If the drive returned only one write speed then repeat steps 7 to 19 one more time to add one more session to the disc for validating the multisession capabilities.
Result: The drive should be capable of burning the data in the context of IMAPI.
AUDIO MEDIA (WRITE AUDIO TRACKS)
Description: Validate the write capabilities of the drive for the audio content in the context of IMAPI.
Applicable Media: Any of the following media:
CD-R
CD-RW
Test Case Steps:
If the media is not blank and if it is CD-RW media type, then erase the media by sending the blank command with a minimal blank option.
If the media is not a rewritable media then ask the user to insert the blank media. Retry this for 3 times, otherwise fail the test case.
Lock the Media for Exclusive Access by calling DiscFormat2TrackAtOnce::PrepareMedia.
Get the list of Write Speed Descriptors by calling the API IDiscFormat2TrackAtOnce::get_SupportedWriteSpeeds.
Choose random number of audio tracks between 3 and 10.
Randomize the order of the reported write speeds.
Set the Write Speed by calling the API IDiscFormat2TrackAtOnce::SetWriteSpeed from step 1.
Get the number of free blocks on the disc using the API IDiscFormat2Data::get_FreeSectorsOnMedia.
Create audio data of random size from 1 minute audio data to 10 minute audio data. The size of the data should be a multiple of 2352.
Add the audio data stream to the IDiscFormat2TrackAtOnce::AddAudioTrack.
Get the last track Information
Check if the Logical track size if greater than or equal to size of the audio track we wrote.
Check if the Logical track number is correct
Get the number of free sectors on the media by calling IDiscFormat2TrackAtOnce::FreeSectorsOnMedia.
Check if the number of free sectors from step 14 is less than value from step 8 by the size of the audio track written to the media.
Repeat steps 5 to 15 for the number audio tracks from step 5
Get the Write parameters mode page
Check if the Track information reported by the drive is not Packet/Incremental if the Write parameters mode page reports as Fixed packet
Repeat steps 1 to 18 for each Write Speed.
If the drive supports Auto eject-inject mechanism then eject and inject the media into the tray.
Result: The drive should be capable of burning the audio media in the context of IMAPI.
Blank
Description: Validates the format/blank capabilities of the drive in the context of IMAPI.
Applicable Media: Any of the following media:
CD-RW
DVD+RW
DVD-RW Restricted Overwrite
BD-RE
Test Case Steps:
Check if the media is one of the following read write media type by calling the API IDiscFormat2Data::CurrentPhysicalMediaType
CD-RW
DVD-RW
DVD+RW
If the media is not one of the read write media type then skip the test case.
Check if the media is a blank media by calling the API IDiscFormat2Erase::MediaPhysicallyBlank.
If the media is note blank, go to step 7.
Create 25MB random data stream.
Write the data stream to the disc using the API IDiscFormat2Data::Write.
Check if the drive reports the media as non-blank media by calling the IDiscFormat2Data::get_CurrentMediaStatus API.
If the drive still reports media as blank then fail the test case
Implement Erase Event Handler DDiscFormat2EraseEvents::Update.
Call the API IDiscFormat2Erase::put_FullErase and set the erase option to false, so that it will do a minimal blank.
Send the blank command using the IDiscFormat2Erase::EraseMedia API.
Call the API IDiscFormat2Data::get_CurrentMediaStatus to check if the media is blank.
Read disc information and check if the
Number of sessions reported is 1.
The first track in the last session is 1.
The last track in the last session is 1.
Call the API IDiscFormat2Erase::put_FullErase and set the erase option to full blank. Repeat steps 9 to 14.
Result: The drive should be capable of formatting the media in the context of IMAPI.
Write Dual-layer media
Description: Validates the write capabilities of the for the dual layer media in the context of IMAPI. The device is tested with various write speeds reported by the drive.
Applicable Media: Any of the following media:
DVD+R DL
DVD-R DL
Test Case Steps:
Ask the user to insert blank media.
Call the API IDiscFormat2Data::get_CurrentMediaStatus to check if the media is blank
If the media is not a rewritable media then ask the user to insert the blank media. Retry this for 3 times, otherwise fail the test case.
Get the list of Write Speed Descriptors by calling the API IDiscFormat2Data :: get_SupportedWriteSpeedDescriptors.
Randomize the order of the reported write speeds
Set the Write Speed by calling the API IDiscFormat2Data::SetWriteSpeed with one of the write speeds from step 5.
Create a random data stream of random size up to 50% of the available space on the media. Fill the buffer with random data
Write the data buffer from step 7 using IDiscFormat2Data :: Write.
If the drive supports auto eject-inject mechanism then eject and inject the media into the tray.
Read data from the disc and compare if it matches with the data written to the media in step 9.
Get the last Track Information.
Check if the Logical Track Size if greater than or equal to size of the data we wrote.
Check if the Logical track number is correct
Get the Write parameters mode page.
Check if the Track information reported by the drive is not Packet/Incremental if the Write parameters mode page reports as Fixed packet.
Read disc information and check if the number of session matches.
Repeat steps 8 to 16 with random data stream of random size up to 100% of the available space on the media.
Warning
These last steps are to test if the drive is able to write the data on the dual layer properly.
Result: The drive should be capable of burning the data to both layers of the Dual Layer media in the context of IMAPI.
Read-only drive
Description: Test the read capability of a read only drive on a open (append able) and closed (finalized) disc.
Warning
This test case requires a secondary writer drive for creating the test data disc for the corresponding test profile.
Applicable Media: Any of the following media:
CD-ROM
DVD-ROM
BD-ROM
Test Case Steps:
Eject the writer drive tray.
If the test profile is
CD-ROM ask the user to insert CD-R/CD-RW in the writer drive.
DVD-ROM ask the user to insert DVD+R/DVD-R/DVD+RW/DVD-RAM in the writer drive.
BD-ROM ask the user to insert BD-R/ BD-RE in the writer drive.
Inject the writer drive tray.
Get the list of Write Speed Descriptors by calling the API IDiscFormat2Data :: get_SupportedWriteSpeedDescriptors.
Create a random data stream of random size up to 10% of the available space on the media. Fill the buffer with random data.
Set the Write Speed by calling the API IDiscFormat2Data::SetWriteSpeed with the first write speed descriptor value from step 4.
Write the data buffer from step 5 using IDiscFormat2Data::Write to the media in the writer drive.
Eject the writer drive tray if it supports auto eject mechanism. Otherwise ask the user to press the eject button
Eject the test drive tray if it supports auto eject mechanism eject the tray otherwise ask the user to press the eject button.
Ask the use to remove the media from the writer drive and place it in the test drive.
Inject the writer drive tray if it supports auto inject (loading the tray) mechanism. Otherwise ask the user to insert the tray into the drive.
Inject the test drive tray if it supports auto inject (loading the tray) mechanism. Otherwise ask the user to insert the tray into the drive.
Read data from the test drive disc and compare if it matches with the data written to the media in step 7.
Set the IDiscFormat2Data::ForceMediaToBeClosed to true and Repeat steps 1 to 13 to validate the test drive on a finalized disc.
Result: The drive should be capable of reading both the closed and open media.
Drive serial number
Description: Validates that the drive serial number returned by the test drive is in compliance with the MMC/Mt. Fuji specification standards.
Warning
This test case requires two identical drives to validate if both drives return unique serial numbers. One primary test device and the other one is a secondary test drive.
Applicable Media: Any media supported by the device
Test Case Steps:
Send the INQUIRY command to the primary test device with the allocation length equal 05h.
If the command succeeds, get the additional length value from the response header.
Send the INQUIRY command again to the primary device with allocation length set to 5 bytes more than the additional length from step 2.
If the command succeeds get the Vendor Identification, Product Identification and Product Revision Level.
Repeat the step 1 to 4 for the secondary drive and get the Vendor Identification, Product Identification and Product Revision Level.
Compare the Vendor Identification, Product Identification and Product Revision Level values from step 4 and step 5. If they do not match then fail the test case.
Warning
This is to make sure both the test drives are identical
Send the GET CONFIGURATION command to the primary test drive to get the LOGICAL UNIT SERIAL NUMBER feature with allocation length equal to the size of the LOGICAL UNIT SERIAL NUMBER feature descriptor.
Check the response if the feature code matches with the LOGICAL UNIT SERIAL NUMBER feature code. Get the additional length.
Send the GET CONFIGURATION command to the primary test drive to get the LOGICAL UNIT SERIAL NUMBER feature with allocation length equal to the size of the LOGICAL UNIT SERIAL NUMBER feature descriptor plus the required additional length reported in step 8.
Check the following in the response:
The feature code matches with the LOGICAL UNIT SERIAL NUMBER feature code.
The reported serial number data is in ASCII.
Data is padded.
No data after padding.
Repeat 7 to 9 for the secondary test device and get the drive serial number.
Compare the drive serial numbers from step 10 and step 11. The drives are expected to return unique serial numbers. If both the serial numbers are equal then fail the test case.
Result: The drive should return a unique serial number and that number should be in compliance with the MMC/Mt. Fuji standards.
Real-time streaming
Description: Validates that the real-time streaming capabilities of the drive for the data content in the context of cdrom.sys driver. The device is tested with various read and write speeds reported by the drive.
Applicable Media: Any media supported by the device
Test Case Steps:
Ask the user to insert media.
If media is not writable or rewritable proceed to reading test at step 13.
Call the API IDiscFormat2Data::get_CurrentMediaStatus to check if the media is blank.
If the media is not blank and if it is one of the following rewritable media type, then erase the media by sending the blank command with a minimal blank option.
CD-RW
DVD-RW Sequential Recording
DVD-RW Restricted Overwrite
DVD+RW
DVD-RAM
BD-RE
If the media is not a rewritable media then ask the user to insert the blank media. Retry this for 3 times, otherwise fail the test case.
Send GET CONFIGURATION command with request for REAL TIME STREAMING feature. If it is not successful or Current bit is not set fail the test.
If either Stream Writing (SW) bit or Write Speed Performance Descriptor (WSPD) bit of REAL TIME STREAMING feature response is not set then fail the test.
Send GET PERFORMANCE command with request for Write Speed Descriptors and build and array of supported write speeds. If the command is not successful fail the test.
Shuffle the write speed array.
IF free media size is over 10% of its full capacity call DeviceIoControl with IOCTL_CDROM_SET_SPEED and CDROM_SET_STREAMING structure supplied for the next write speed. Write random data up to 10% of full capacity and measure the speed (refer to the corresponding section in this document for measuring procedure description).
Repeat step 10 as long as possible. If all write speeds are probed shuffle the speed array and set next write speed to the beginning.
Send CLOSE TRACK SESSION commands to finalize the media
If Write Speed Performance Descriptor (WSPD) bit of REAL TIME STREAMING feature response is set then send GET PERFORMANCE command with request for Write Speed Descriptors and build an array of supported read speeds otherwise send GET PERFORMANCE command with request for Performance data with Tolerance bits set to 10b (nominal) and for the read speeds select the lowest value of Start Performance and End Performance fields in the response. If either of the commands I not successful fail the test.
Shuffle the read speed array.
Set the read length to size of the first track on media.
For each read speed call DeviceIoControl with IOCTL_CDROM_SET_SPEED and CDROM_SET_STREAMING structure supplied for the next read speed. Read the whole data recorded on media in chunks of 10% of media capacity (or at least 5 MB if media has less than 50 MB of data) and measure the speed of each chunk. If the actual speed of any chunk is below the requested speed for any of the chunks mark the test failed.
Result: The drive should be capable of operating in real-time streaming mode.
Write speed Measurement
The test queries the device and gets the supported write speeds for the test media. Then it will try to validate the write scenario for all the reported write speeds. The test expects the calculated write speeds for each write scenario is close to the write speed set to the drive. The test allows 10% tolerance for the measured write speed. The test validates the write speed as below.
The test writes data to the media and monitors the amount of data being written. It excludes the timing for the initial 10% written data the final 10% written data. It measures the timing only for the middle 80% data and calculates the speed for that data and adds 10% tolerance to that value. So, if 'x' is the calculated the speed for the middle 80% data then the final calculated speed is 1.1x. The test expects this value to be greater than or equal to the speed set to the drive before beginning the write.
The test excludes the initial 10% of data written timing to allow the drive to prepare for writing. The final 10% data timing is excluded to allow the drive to do the proper cleanup for the data written to the media.
Audio media gapless raw recordings
Description: Validates the write capabilities of the drive for the gapless raw audio content in the context of IMAPI
Applicable Media: Any of the following media:
CD-R
CD-RW
Test Case Steps:
Check if the drive with media inserted supports gapless raw recording or not. If it's not supported, testing will fail.
Check the sector types supported by test drive.
For each sector type supported by test drive, complete steps 4 through 9
Create the raw image.
Set correct sector type and create the result stream for the raw image.
Determine whether the raw image is gapless or not.
Randomly choose a write speed and set it to be the burning speed. Set the requested sector type to be the one that has been set for the raw image. Write the stream of the raw image to the media and watch the progress. Calculate the speed of burning and print the throughput.
Determine whether the writing is successful by checking each logical track information. Check if the track is audio track, if the track size is correct, and if the size of the last logical track number plus its start address is equal to the start address of the lead out of the disc. If any of the conditions returns false, testing will fail. Otherwise, it will pass.
Do a raw reading for the media. For each track, check if the track is audio. If it's not, fail the testing, because the recording already ensured that the tracks are audio tracks. Calculate the start offset and end offset of the track. Do the reading for the track starting from the start offset and ending at the end offset of the track. If an error occurs during the reading process, fail the testing;
Result: The drive should be able to burn the gapless raw audio image in the context of IMAPI.
Command usage
Command | Description |
---|---|
OpticalLogoTest.exe /drive [StorageDriveLetter]:\ /log [log] [AdditionalParams] /profile [profile] /RunTestCaseTypes [RunTestCaseTypes] |
Runs the test. |
Note
For command-line help for this test binary, type /h.
Command syntax
Command option | Description |
---|---|
drive |
Test optical device drive letter. Example: /drive e:\\ |
adapter |
path (used for adapter test). Example: /adapter \"PCI\\VEN_8086&DEV_27DF&SUBSYS_01AD1028&REV_01\\3&172E68DD&0&F9\" |
PrimaryTestDrive |
Test optical device drive letter. Example: /PrimaryTestDrive e:\\ |
SecondaryTestDrive |
Secondary optical test device drive letter. Example: /Secondary Test Drive f:\\ |
WriterDrive |
Drive letter of the Writer that needs to be used for testing read-only drives. Example: /WriterDrive f:\\ |
PrimaryDriveTray |
Primary optical device tray capabilities. Example: /PrimaryDriveTray SupportsEjectInject |
SecondaryDriveTray |
Secondary optical device tray capabilities. Example: /SecondaryDriveTray SupportsEjectInject |
WriterDriveTray |
Writer drive tray capabilities. Example: /WriterDriveTray SupportsEjectInject |
profile |
Run test cases specified profiles. Profile ID should be in decimal and comma separated without spaces. Example: /profile 9,10,16 |
seed |
Seed value for generating random test data. Example: /seed 1000 |
RunTestCaseTypes |
Runs only the category of test cases. Example: /RunTestCaseTypes device |
RunTestCase |
Runs only this test case. Example: /RunTestCase Inquiry |
Automation |
Run in automation mode using the robot to change the media. Example: /Automation |
AutomationConfigFile |
The configuration file used to specify bin location for media. Example: /AutomationConfigFile OpticalLogoTest.exe.config |
Calibrate |
Calibrate the robot used to change the media. Example: /Calibrate |
logo |
The level of certification requirements to test. Example: /logo basic or /logo premium |
ReuseMedia |
Reuse the non-blank media for testing. The test will not expect the media to be blank if the multisession is supported for that media. This option is for testing only. Not allowed for certification. Example: /ReuseMedia |
SkipFullBlank |
Skip the full blank scenario and test only minimal blank. Example: /SkipFullBlank |
SkipManualTestCases |
Skip test cases that needs manual interaction. Example: /SkipManualTestCases |
RunDataDirectionFlagScenario |
Validate the commands with an incorrect data direction flag. Example: /RunDataDirectionFlagScenario |
Debugger |
Prompts to attach debugger which gives time to allow the debugger to be attached before further executing the program. Example: /Debugger |
Verbosity |
Logging verbosity. Example: /Verbosity Verbose |
log |
Log file name Default value: OpticalLogoTest.wtl Example: /log mytestlog.wtl |
EnableImapiv2Trace |
Enable IMAPIv2 software trace. Example: /EnableImapiv2Trace |
Imapiv2TraceGuidsFile |
IMAPIv2 trace GUIDs file that has the entire list of component GUIDs for which the traces need to be logged Default value: imapiv2-guids.txt Example: /IMAPIv2TraceGuidsFile imapiv2-guids.txt |
Imapiv2TraceLogFile |
IMAPIv2 output trace log file. Default value: imapiv2-tracelog.etl Example: /IMAPIv2TraceLogFile imapiv2-tracelog.etl |
cmdPerfTraceAnalysis |
Run command performance analysis. Example: /cmdPerfTraceAnalysis Always |
cmdPerfTraceGuidsFile |
Performance trace GUIDs file that has the GUIDs of components that trace performance data Default value: perf-guids.txt Example: /cmdPerfTraceGuidsFile perf-guids.txt |
cmdPerfTraceLogFile |
Performance output trace log file Default value: perf-tracelog.etl Example: /cmdPerfTraceLogFile perf-tracelog.etl |
cmdPerfTraceTmfFile |
Performance trace format description file. Example: /cmdPerfTraceTmfFile perf-tracelog.tmf |
File list
File | Location |
---|---|
ataportlogotrace.tmf |
<[testbinroot]>\nttest\driverstest\storage\optical\setup\tracing\ |
autoloader.dll |
<[testbinroot]>\nttest\driverstest\storage\optical\autoloader\ |
DataPacket.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
DeviceTestCases.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
DiscManagerLib.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
microsoft.storage.imapi.dll |
<[testbinroot]>\nttest\driverstest\storage\interop\imapi\ |
ModularTestCase.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
OpticalLogoTest.exe |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
OpticalTestHarness.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
OpticalTestLib.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
ProfileTestCases.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
ScenarioTestCases.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
ScsiLib.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
storageinteroputil.dll |
<[testbinroot]>\nttest\driverstest\storage\interop\utils\ |
tracefmt.exe |
<[osbinroot]>\idw\ |
storagedevices.dll |
<[testbinroot]>\nttest\driverstest\storage\wdk\ |
TraceLib.dll |
<[osbinroot]>\nttest\driverstest\storage\wdk\optical\test\ |
tracelog.exe |
<[osbinroot]>\idw\ |
Parameters
Parameter name | Parameter description |
---|---|
StorageDriveLetter | Test device drive letter |
profile | |
LLU_NetAccessOnly | User account for accessing test fileshare. |
LLU_LclAdminUsr | User account for running the test. |
WDKDeviceID | Instance path of device to test |
log | |
RunTestCaseTypes | |
AdditionalParams |