Author: pschweitzer
Date: Sat Apr 12 18:37:44 2014
New Revision: 62721

URL: http://svn.reactos.org/svn/reactos?rev=62721&view=rev
Log:
[KMTESTS:NPFS]
- Add more tests for volume info
- Fix previous tests
- Add two helper macros

Tested by Thomas.

CORE-7451

Modified:
    trunk/rostests/kmtests/include/kmt_test.h
    trunk/rostests/kmtests/npfs/NpfsVolumeInfo.c

Modified: trunk/rostests/kmtests/include/kmt_test.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/include/kmt_test.h?rev=62721&r1=62720&r2=62721&view=diff
==============================================================================
--- trunk/rostests/kmtests/include/kmt_test.h   [iso-8859-1] (original)
+++ trunk/rostests/kmtests/include/kmt_test.h   [iso-8859-1] Sat Apr 12 
18:37:44 2014
@@ -190,6 +190,8 @@
 #define ok_eq_ulong(value, expected)        ok_eq_print(value, expected, "%lu")
 #define ok_eq_longlong(value, expected)     ok_eq_print(value, expected, 
"%I64d")
 #define ok_eq_ulonglong(value, expected)    ok_eq_print(value, expected, 
"%I64u")
+#define ok_eq_char(value, expected)         ok_eq_print(value, expected, "%c")
+#define ok_eq_wchar(value, expected)        ok_eq_print(value, expected, "%C")
 #ifndef _WIN64
 #define ok_eq_size(value, expected)         ok_eq_print(value, 
(SIZE_T)(expected), "%lu")
 #define ok_eq_longptr(value, expected)      ok_eq_print(value, 
(LONG_PTR)(expected), "%ld")

Modified: trunk/rostests/kmtests/npfs/NpfsVolumeInfo.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/npfs/NpfsVolumeInfo.c?rev=62721&r1=62720&r2=62721&view=diff
==============================================================================
--- trunk/rostests/kmtests/npfs/NpfsVolumeInfo.c        [iso-8859-1] (original)
+++ trunk/rostests/kmtests/npfs/NpfsVolumeInfo.c        [iso-8859-1] Sat Apr 12 
18:37:44 2014
@@ -19,44 +19,165 @@
 {
     NTSTATUS Status;
     IO_STATUS_BLOCK IoStatusBlock;
-    struct {
-        FILE_FS_VOLUME_INFORMATION;
-        WCHAR PartialName[2];
-    } PartialInfo;
+    FILE_FS_SIZE_INFORMATION FileFsSizeInfo;
+    FILE_FS_DEVICE_INFORMATION FileFsDeviceInfo;
+    FILE_FS_FULL_SIZE_INFORMATION FileFsFullSizeInfo;
+
     struct {
         FILE_FS_VOLUME_INFORMATION;
         WCHAR PartialName[10];
-    } CompleteInfo;
-
-    Status = ZwQueryVolumeInformationFile(ServerHandle,
-                                          &IoStatusBlock,
-                                          &CompleteInfo,
-                                          sizeof(CompleteInfo),
+    } VolumeInfo;
+
+    struct {
+        FILE_FS_ATTRIBUTE_INFORMATION;
+        WCHAR PartialName[6];
+    } AttributeInfo;
+
+    RtlFillMemory(&VolumeInfo, sizeof(VolumeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &VolumeInfo,
+                                          sizeof(VolumeInfo),
                                           FileFsVolumeInformation);
     ok_eq_hex(Status, STATUS_SUCCESS);
     ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
-    ok_eq_long(CompleteInfo.VolumeCreationTime.LowPart, 0);
-    ok_eq_long(CompleteInfo.VolumeCreationTime.HighPart, 0);
-    ok_eq_ulong(CompleteInfo.VolumeSerialNumber, 0);
-    ok_bool_false(CompleteInfo.SupportsObjects, 
"CompleteInfo.SupportsObjects");
-    ok_eq_ulong(CompleteInfo.VolumeLabelLength, 18);
+    ok_eq_long(VolumeInfo.VolumeCreationTime.LowPart, 0);
+    ok_eq_long(VolumeInfo.VolumeCreationTime.HighPart, 0);
+    ok_eq_ulong(VolumeInfo.VolumeSerialNumber, 0);
+    ok_bool_false(VolumeInfo.SupportsObjects, "VolumeInfo.SupportsObjects");
+    ok_eq_ulong(VolumeInfo.VolumeLabelLength, 18);
+    ok_eq_size(RtlCompareMemory(VolumeInfo.VolumeLabel, L"NamedPipe", 18), 18);
+    ok_eq_wchar(VolumeInfo.VolumeLabel[9], 0xFFFF);
     ok_eq_ulong(IoStatusBlock.Information, 36);
-    ok_eq_ulong(RtlCompareMemory(CompleteInfo.VolumeLabel, L"NamedPipe", 18), 
18);
-
-    Status = ZwQueryVolumeInformationFile(ServerHandle,
-                                          &IoStatusBlock,
-                                          &PartialInfo,
-                                          sizeof(PartialInfo),
+
+    RtlFillMemory(&VolumeInfo, sizeof(VolumeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &VolumeInfo,
+                                          sizeof(FILE_FS_VOLUME_INFORMATION) + 
2 * sizeof(WCHAR),
                                           FileFsVolumeInformation);
     ok_eq_hex(Status, STATUS_BUFFER_OVERFLOW);
     ok_eq_hex(IoStatusBlock.Status, STATUS_BUFFER_OVERFLOW);
-    ok_eq_long(CompleteInfo.VolumeCreationTime.LowPart, 0);
-    ok_eq_long(CompleteInfo.VolumeCreationTime.HighPart, 0);
-    ok_eq_ulong(CompleteInfo.VolumeSerialNumber, 0);
-    ok_bool_false(CompleteInfo.SupportsObjects, 
"CompleteInfo.SupportsObjects");
-    ok_eq_ulong(CompleteInfo.VolumeLabelLength, 18);
-    ok_eq_ulong(IoStatusBlock.Information, 32);
-    ok_eq_ulong(RtlCompareMemory(CompleteInfo.VolumeLabel, L"Na", 4), 4);
+    ok_eq_long(VolumeInfo.VolumeCreationTime.LowPart, 0);
+    ok_eq_long(VolumeInfo.VolumeCreationTime.HighPart, 0);
+    ok_eq_ulong(VolumeInfo.VolumeSerialNumber, 0);
+    ok_bool_false(VolumeInfo.SupportsObjects, "VolumeInfo.SupportsObjects");
+    ok_eq_ulong(VolumeInfo.VolumeLabelLength, 18);
+    ok_eq_size(RtlCompareMemory(VolumeInfo.VolumeLabel, L"NamedP", 10), 10);
+    ok_eq_wchar(VolumeInfo.VolumeLabel[5], 0xFFFF);
+    ok_eq_ulong(IoStatusBlock.Information, 28);
+
+    RtlFillMemory(&FileFsSizeInfo, sizeof(FileFsSizeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &FileFsSizeInfo,
+                                          sizeof(FileFsSizeInfo),
+                                          FileFsSizeInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_longlong(FileFsSizeInfo.TotalAllocationUnits.QuadPart, 0);
+    ok_eq_longlong(FileFsSizeInfo.AvailableAllocationUnits.QuadPart, 0);
+    ok_eq_ulong(FileFsSizeInfo.SectorsPerAllocationUnit, 1);
+    ok_eq_ulong(FileFsSizeInfo.BytesPerSector, 1);
+    ok_eq_ulong(IoStatusBlock.Information, sizeof(FileFsSizeInfo));
+
+    RtlFillMemory(&FileFsSizeInfo, sizeof(FileFsSizeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &FileFsSizeInfo,
+                                          sizeof(FileFsSizeInfo) - 4,
+                                          FileFsSizeInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_longlong(FileFsSizeInfo.TotalAllocationUnits.QuadPart, 0);
+    ok_eq_longlong(FileFsSizeInfo.AvailableAllocationUnits.QuadPart, 0);
+    ok_eq_ulong(FileFsSizeInfo.SectorsPerAllocationUnit, 1);
+    ok_eq_ulong(FileFsSizeInfo.BytesPerSector, 1);
+    ok_eq_ulong(IoStatusBlock.Information, sizeof(FileFsSizeInfo));
+
+    RtlFillMemory(&FileFsDeviceInfo, sizeof(FileFsDeviceInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &FileFsDeviceInfo,
+                                          sizeof(FileFsDeviceInfo),
+                                          FileFsDeviceInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_ulong(FileFsDeviceInfo.Characteristics, 0);
+    ok_eq_ulong(FileFsDeviceInfo.DeviceType, FILE_DEVICE_NAMED_PIPE);
+    ok_eq_ulong(IoStatusBlock.Information, sizeof(FileFsDeviceInfo));
+
+    RtlFillMemory(&FileFsDeviceInfo, sizeof(FileFsDeviceInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &FileFsDeviceInfo,
+                                          sizeof(FileFsDeviceInfo) - 4,
+                                          FileFsDeviceInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_ulong(FileFsDeviceInfo.Characteristics, 0);
+    ok_eq_ulong(FileFsDeviceInfo.DeviceType, FILE_DEVICE_NAMED_PIPE);
+    ok_eq_ulong(IoStatusBlock.Information, sizeof(FileFsDeviceInfo));
+
+    RtlFillMemory(&AttributeInfo, sizeof(AttributeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &AttributeInfo,
+                                          sizeof(AttributeInfo),
+                                          FileFsAttributeInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_ulong(AttributeInfo.FileSystemAttributes, FILE_CASE_PRESERVED_NAMES);
+    ok_eq_long(AttributeInfo.MaximumComponentNameLength, 0xFFFFFFFF);
+    ok_eq_ulong(AttributeInfo.FileSystemNameLength, 8);
+    ok_eq_size(RtlCompareMemory(AttributeInfo.FileSystemName, L"NPFS", 8), 8);
+    ok_eq_wchar(AttributeInfo.FileSystemName[4], 0xFFFF);
+    ok_eq_ulong(IoStatusBlock.Information, 20);
+
+    RtlFillMemory(&AttributeInfo, sizeof(AttributeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &AttributeInfo,
+                                          
sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 2 * sizeof(WCHAR),
+                                          FileFsAttributeInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_ulong(AttributeInfo.FileSystemAttributes, FILE_CASE_PRESERVED_NAMES);
+    ok_eq_long(AttributeInfo.MaximumComponentNameLength, 0xFFFFFFFF);
+    ok_eq_ulong(AttributeInfo.FileSystemNameLength, 8);
+    ok_eq_size(RtlCompareMemory(AttributeInfo.FileSystemName, L"NPFS", 8), 8);
+    ok_eq_wchar(AttributeInfo.FileSystemName[4], 0xFFFF);
+    ok_eq_ulong(IoStatusBlock.Information, 20);
+
+    RtlFillMemory(&FileFsFullSizeInfo, sizeof(FileFsFullSizeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &FileFsFullSizeInfo,
+                                          sizeof(FileFsFullSizeInfo),
+                                          FileFsFullSizeInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_longlong(FileFsFullSizeInfo.TotalAllocationUnits.QuadPart, 0);
+    ok_eq_longlong(FileFsFullSizeInfo.CallerAvailableAllocationUnits.QuadPart, 
0);
+    ok_eq_longlong(FileFsFullSizeInfo.ActualAvailableAllocationUnits.QuadPart, 
0);
+    ok_eq_ulong(FileFsFullSizeInfo.SectorsPerAllocationUnit, 0);
+    ok_eq_ulong(FileFsFullSizeInfo.BytesPerSector, 0);
+    ok_eq_ulong(IoStatusBlock.Information, sizeof(FileFsFullSizeInfo));
+
+    RtlFillMemory(&FileFsFullSizeInfo, sizeof(FileFsFullSizeInfo), 0xFF);
+    Status = ZwQueryVolumeInformationFile(ServerHandle,
+                                          &IoStatusBlock,
+                                          &FileFsFullSizeInfo,
+                                          sizeof(FileFsFullSizeInfo) - 4,
+                                          FileFsFullSizeInformation);
+    ok_eq_hex(Status, STATUS_SUCCESS);
+    ok_eq_hex(IoStatusBlock.Status, STATUS_SUCCESS);
+    ok_eq_longlong(FileFsFullSizeInfo.TotalAllocationUnits.QuadPart, 0);
+    ok_eq_longlong(FileFsFullSizeInfo.CallerAvailableAllocationUnits.QuadPart, 
0);
+    ok_eq_longlong(FileFsFullSizeInfo.ActualAvailableAllocationUnits.QuadPart, 
0);
+    ok_eq_ulong(FileFsFullSizeInfo.SectorsPerAllocationUnit, 0);
+    ok_eq_ulong(FileFsFullSizeInfo.BytesPerSector, 0);
+    ok_eq_ulong(IoStatusBlock.Information, sizeof(FileFsFullSizeInfo));
 }
 
 static KSTART_ROUTINE RunTest;


Reply via email to