mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 04:13:32 +00:00
[NTDLL_APITEST]
- Add a test stressing the registry a lot. By "V". ROSTESTS-141 #resolve #comment Committed, Thanks! svn path=/trunk/; revision=64227
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <apitest.h>
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <stdio.h>
|
||||
#include <ndk/rtlfuncs.h>
|
||||
#include <ndk/cmfuncs.h>
|
||||
#include <ndk/obfuncs.h>
|
||||
@@ -34,7 +35,9 @@ CreateRegistryKeyHandle(PHANDLE KeyHandle,
|
||||
START_TEST(NtDeleteKey)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
HANDLE ParentKey, ChildKey;
|
||||
HANDLE ParentKey, ChildKey, PetKey;
|
||||
WCHAR Buffer[sizeof("\\Registry\\Machine\\Software\\RosTests\\Child\\Pet") + 5];
|
||||
ULONG i;
|
||||
|
||||
/* Create a registry key */
|
||||
Status = CreateRegistryKeyHandle(&ParentKey, KEY_READ | DELETE, L"\\Registry\\Machine\\Software\\RosTests");
|
||||
@@ -93,4 +96,53 @@ START_TEST(NtDeleteKey)
|
||||
/* Close everything */
|
||||
NtClose(ChildKey);
|
||||
NtClose(ParentKey);
|
||||
|
||||
/* Stress test key creation */
|
||||
Status = CreateRegistryKeyHandle(&ParentKey, KEY_READ | DELETE, L"\\Registry\\Machine\\Software\\RosTests");
|
||||
|
||||
for (i = 0; i <= 9999; i++) {
|
||||
swprintf(Buffer, L"\\Registry\\Machine\\Software\\RosTests\\Child%04d", i);
|
||||
Status = CreateRegistryKeyHandle(&ChildKey, KEY_READ, Buffer);
|
||||
NtClose(ChildKey);
|
||||
|
||||
swprintf(Buffer, L"\\Registry\\Machine\\Software\\RosTests\\Child%04d\\Pet", i);
|
||||
Status = CreateRegistryKeyHandle(&PetKey, KEY_READ, Buffer);
|
||||
NtClose(PetKey);
|
||||
}
|
||||
ok_ntstatus(Status, STATUS_SUCCESS);
|
||||
|
||||
/* Test hive rerooting */
|
||||
Status = CreateRegistryKeyHandle(&PetKey, DELETE, L"\\Registry\\Machine\\Software\\RosTests\\Child5000\\Pet");
|
||||
ok_ntstatus(Status, STATUS_SUCCESS);
|
||||
Status = NtDeleteKey(PetKey);
|
||||
ok_ntstatus(Status, STATUS_SUCCESS);
|
||||
|
||||
NtClose(PetKey);
|
||||
|
||||
Status = CreateRegistryKeyHandle(&ChildKey, DELETE, L"\\Registry\\Machine\\Software\\RosTests\\Child5000");
|
||||
ok_ntstatus(Status, STATUS_SUCCESS);
|
||||
Status = NtDeleteKey(ChildKey);
|
||||
ok_ntstatus(Status, STATUS_SUCCESS);
|
||||
|
||||
/* Test mass key deletion */
|
||||
for (i = 0; i <= 9999; i++) {
|
||||
if (i != 5000) {
|
||||
swprintf(Buffer, L"\\Registry\\Machine\\Software\\RosTests\\Child%04d\\Pet", i);
|
||||
CreateRegistryKeyHandle(&PetKey, DELETE, Buffer);
|
||||
Status = NtDeleteKey(PetKey);
|
||||
NtClose(PetKey);
|
||||
|
||||
swprintf(Buffer, L"\\Registry\\Machine\\Software\\RosTests\\Child%04d", i);
|
||||
CreateRegistryKeyHandle(&ChildKey, DELETE, Buffer);
|
||||
Status = NtDeleteKey(ChildKey);
|
||||
NtClose(ChildKey);
|
||||
}
|
||||
}
|
||||
ok_ntstatus(Status, STATUS_SUCCESS);
|
||||
|
||||
Status = NtDeleteKey(ParentKey);
|
||||
ok_ntstatus(Status, STATUS_SUCCESS);
|
||||
|
||||
/* Close ParentKey */
|
||||
NtClose(ParentKey);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user