mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 18:35:41 +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:
parent
031ed04e0c
commit
1f02ead2cc
1 changed files with 53 additions and 1 deletions
|
@ -7,6 +7,7 @@
|
||||||
#include <apitest.h>
|
#include <apitest.h>
|
||||||
|
|
||||||
#define WIN32_NO_STATUS
|
#define WIN32_NO_STATUS
|
||||||
|
#include <stdio.h>
|
||||||
#include <ndk/rtlfuncs.h>
|
#include <ndk/rtlfuncs.h>
|
||||||
#include <ndk/cmfuncs.h>
|
#include <ndk/cmfuncs.h>
|
||||||
#include <ndk/obfuncs.h>
|
#include <ndk/obfuncs.h>
|
||||||
|
@ -34,7 +35,9 @@ CreateRegistryKeyHandle(PHANDLE KeyHandle,
|
||||||
START_TEST(NtDeleteKey)
|
START_TEST(NtDeleteKey)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
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 */
|
/* Create a registry key */
|
||||||
Status = CreateRegistryKeyHandle(&ParentKey, KEY_READ | DELETE, L"\\Registry\\Machine\\Software\\RosTests");
|
Status = CreateRegistryKeyHandle(&ParentKey, KEY_READ | DELETE, L"\\Registry\\Machine\\Software\\RosTests");
|
||||||
|
@ -93,4 +96,53 @@ START_TEST(NtDeleteKey)
|
||||||
/* Close everything */
|
/* Close everything */
|
||||||
NtClose(ChildKey);
|
NtClose(ChildKey);
|
||||||
NtClose(ParentKey);
|
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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue