Test Cases for the Storage Device Block Driver Read/Write Test (Windows Embedded CE 6.0)
1/6/2010
The following table shows the test cases for the Storage Device Block Driver Read/Write Test.
Test cases | Description |
---|---|
1001 |
Two threads, 1000 writes/thread, 1 sector/thread, starting sector: 100 Verifies that a device driver is able to correctly handle multiple, simultaneous requests for service. The test case creates two threads and assigns each thread a block of sectors to write, starting at sector 100. Each thread attempts to write to its block of sectors multiple times. Each thread makes 1000 writes to its sector. The test displays information such as the number of threads, number of writes per thread, number of sectors per write, and the starting sector. The test also displays a progress indicator for each thread. The test fails if an error occurs. The test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
1002 |
Three threads Verifies that a device driver is able to correctly handle multiple, simultaneous requests for service. The test case creates three threads and assigns each thread a block of sectors to write, starting at sector 100. Each thread attempts to write to its block of sectors multiple times. Each thread makes 1000 writes to its sector. The test displays information such as the number of threads, number of writes per thread, number of sectors per write, and the starting sector. The test also displays a progress indicator for each thread. The test fails if an error occurs. The test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
1003 |
Four threads Verifies that a device driver is able to correctly handle multiple, simultaneous requests for service. The test case creates four threads and assigns each thread a block of sectors to write, starting at sector 100. Each thread attempts to write to its block of sectors multiple times. Each thread makes 1000 writes to its sector. The test displays information such as the number of threads, number of writes per thread, number of sectors per write, and the starting sector. The test also displays a progress indicator for each thread. The test fails if an error occurs. The test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
2001 |
Buffer Sizes: 512 Verifies that the block device driver can correctly handle scatter/gather buffers that are 512 bytes in size. This test verifies that the device driver does not return an error and that the data is valid. If an error occurs, the test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
2002 |
Buffer Sizes: 512, 512 Verifies that the block device driver can correctly handle two scatter/gather buffers that are 1024 bytes in size. This test verifies that the device driver does not return an error and that the data is valid. If an error occurs, the test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
2003 |
Buffer Sizes: 1024, 1024, 1024, 1024 Verifies that the block device driver can correctly handle four scatter/gather buffers that are 1024 bytes in size. This test verifies that the device driver does not return an error and that the data is valid. If an error occurs, the test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
2004 |
Buffer Sizes: 65536 Verifies that the block device driver can correctly handle scatter/gather buffers that are 65536 bytes in size. This test verifies that the device driver does not return an error and that the data is valid. If an error occurs, the test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
3001 |
R/W Sectors 0, 1 and 2 Assesses the behavior of read and write operations at boundary sectors 0, 1, and 2, where errors often occur. This test case provides a detailed description of the number and location of each DeviceIoControl function. If an error occurs, the test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
3002 |
R/W Around (Total Sectors / 2) Assesses the behavior of read and write operations at boundary sectors where errors often occur. This test case provides a detailed description of the number and location of each DeviceIoControl function. If an error occurs, the test displays the type of error, such as a driver error or corrupt data, and the source of the error, such as a driver or memory location. |
Test cases 2001-2004 assume a sector size of 512 bytes. If the device driver uses a different sector size, you must change the source code for the test to reflect the correct sector size.
Test cases 2001-2004 fill in the SG_BUF and SG_REQ structures and pass pointers to the device driver through the DeviceIoControl function. The following code example shows the syntax for these structures.
typedef struct _SG_BUF {
PUCHAR sb_buf; // pointer to buffer
DWORD sb_len; // length of buffer
} SG_BUF, *PSG_BUF;
typedef struct _SG_REQ {
DWORD sr_start; // starting sector number
DWORD sr_num_sec; // number of sectors
DWORD sr_num_sg; // number of scatter/gather buffers
DWORD sr_status; // request status
PFN_REQDONE sr_callback; // request completion callback function
SG_BUF sr_sglist[1]; // first scatter/gather buffer
} SG_REQ, * PSG_REQ;
Test cases 2001-2004 may fill in additional sr_sglist entries, according to the value of sr_num_sg.