Author: tfaber Date: Sun Oct 2 21:42:33 2011 New Revision: 53943
URL: http://svn.reactos.org/svn/reactos?rev=53943&view=rev Log: [ADVAPI32_APITEST] - Test passing tag, but no group to CreateService [KMTESTS/MM] - MmSection: Wait for write completion to prevent a random test failure
Modified: trunk/rostests/apitests/advapi32/CreateService.c trunk/rostests/kmtests/ntos_mm/MmSection.c
Modified: trunk/rostests/apitests/advapi32/CreateService.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/advapi32/CreateSe... ============================================================================== --- trunk/rostests/apitests/advapi32/CreateService.c [iso-8859-1] (original) +++ trunk/rostests/apitests/advapi32/CreateService.c [iso-8859-1] Sun Oct 2 21:42:33 2011 @@ -66,12 +66,28 @@ return 0; }
+static void DestroyService(SC_HANDLE hService) +{ + LONG ret; + + if (!hService) + return; + SetLastError(DNS_ERROR_RCODE_NXRRSET); + ret = DeleteService(hService); + ok(ret == TRUE, "DeleteService returned %ld, expected 1\n", ret); + ok(GetLastError() == DNS_ERROR_RCODE_NXRRSET /* win7 */ + || GetLastError() == ERROR_SUCCESS /* win2k3 */, "DeleteService GetLastError()=0x%08lx\n", GetLastError()); + + CloseServiceHandle(hService); +} + static void Test_CreateService(void) { SC_HANDLE hScm = NULL; SC_HANDLE hService1 = NULL, hService2 = NULL; - LONG ret; + SC_HANDLE hService3 = NULL; DWORD tag1 = 0, tag2 = 0; + DWORD tag3 = 785;
SetLastError(DNS_ERROR_RCODE_NXRRSET); hScm = OpenSCManagerW(NULL, NULL, SC_MANAGER_CREATE_SERVICE); @@ -92,28 +108,49 @@
ok(tag1 != tag2, "tag1=%lu, tag2=%lu\n", tag1, tag2);
+ /* ask for a tag, but don't have a group */ + hService3 = CreateServiceW( + hScm, + L"advapi32_apitest_CreateService_Test_Service2", + NULL, + DELETE, + SERVICE_KERNEL_DRIVER, + SERVICE_BOOT_START, + SERVICE_ERROR_IGNORE, + L"%systemroot%\drivers\win32k.sys", + NULL, + &tag3, + NULL, + NULL, + NULL); + ok(hService3 == NULL, "hService3=%p\n", hService3); + ok(GetLastError() == ERROR_INVALID_PARAMETER, "error=%lu\n", GetLastError()); + ok(tag3 == 785, "tag3=%lu\n", tag3); + DestroyService(hService3); + + hService3 = CreateServiceW( + hScm, + L"advapi32_apitest_CreateService_Test_Service2", + NULL, + DELETE, + SERVICE_KERNEL_DRIVER, + SERVICE_BOOT_START, + SERVICE_ERROR_IGNORE, + L"%systemroot%\drivers\win32k.sys", + L"", + &tag3, + NULL, + NULL, + NULL); + ok(hService3 == NULL, "hService3=%p\n", hService3); + ok(GetLastError() == ERROR_INVALID_PARAMETER, "error=%lu\n", GetLastError()); + ok(tag3 == 785, "tag3=%lu\n", tag3); + DestroyService(hService3); + cleanup: - if (hService2) - { - SetLastError(DNS_ERROR_RCODE_NXRRSET); - ret = DeleteService(hService2); - ok(ret == TRUE, "DeleteService returned %ld, expected 1\n", ret); - ok(GetLastError() == DNS_ERROR_RCODE_NXRRSET /* win7 */ - || GetLastError() == ERROR_SUCCESS /* win2k3 */, "DeleteService (Error: %ld)\n", GetLastError());
- CloseServiceHandle(hService2); - } - - if (hService1) - { - SetLastError(DNS_ERROR_RCODE_NXRRSET); - ret = DeleteService(hService1); - ok(ret == TRUE, "DeleteService returned %ld, expected 1\n", ret); - ok(GetLastError() == DNS_ERROR_RCODE_NXRRSET /* win7 */ - || GetLastError() == ERROR_SUCCESS /* win2k3 */, "DeleteService (Error: %ld)\n", GetLastError()); - - CloseServiceHandle(hService1); - } + DestroyService(hService2); + DestroyService(hService1);
if (hScm) CloseServiceHandle(hScm);
Modified: trunk/rostests/kmtests/ntos_mm/MmSection.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/ntos_mm/MmSection.... ============================================================================== --- trunk/rostests/kmtests/ntos_mm/MmSection.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/ntos_mm/MmSection.c [iso-8859-1] Sun Oct 2 21:42:33 2011 @@ -27,7 +27,7 @@ NTSTATUS Status; \ if (skip(SectionObject != NULL && \ SectionObject != (PVOID)0x5555555555555555ULL, \ - "blah\n")) \ + "No section object\n")) \ break; \ Status = ObOpenObjectByPointer(SectionObject, OBJ_KERNEL_HANDLE, \ NULL, 0, MmSectionObjectType, \ @@ -401,7 +401,7 @@ ok(ExGetPreviousMode() == UserMode, "Previous mode is kernel mode\n"); /* create a one-byte file that we can use */ InitializeObjectAttributes(&ObjectAttributes, &FileName1, OBJ_CASE_INSENSITIVE, NULL, NULL); - Status = ZwCreateFile(&FileHandle1, GENERIC_ALL, &ObjectAttributes, &IoStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_SUPERSEDE, FILE_NON_DIRECTORY_FILE, NULL, 0); + Status = ZwCreateFile(&FileHandle1, GENERIC_WRITE | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_SUPERSEDE, FILE_NON_DIRECTORY_FILE, NULL, 0); ok_eq_hex(Status, STATUS_SUCCESS); ok_eq_ulongptr(IoStatusBlock.Information, FILE_CREATED); ok(FileHandle1 != NULL, "FileHandle1 is NULL\n"); @@ -409,6 +409,8 @@ { FileOffset.QuadPart = 0; Status = ZwWriteFile(FileHandle1, NULL, NULL, NULL, &IoStatusBlock, &FileData, sizeof FileData, &FileOffset, NULL); + ok(Status == STATUS_SUCCESS || Status == STATUS_PENDING, "Status = 0x%08lx\n", Status); + Status = ZwWaitForSingleObject(FileHandle1, FALSE, NULL); ok_eq_hex(Status, STATUS_SUCCESS); ok_eq_ulongptr(IoStatusBlock.Information, 1); Status = ZwClose(FileHandle1);