[KMTESTS]
authorThomas Faber <thomas.faber@reactos.org>
Sat, 10 Sep 2011 10:48:07 +0000 (10:48 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 10 Sep 2011 10:48:07 +0000 (10:48 +0000)
- Skip the remaining tests that result in assertions
- Hide KeProcessor test, as it takes very long

svn path=/branches/GSoC_2011/KMTestSuite/; revision=53669

kmtests/kmtest_drv/testlist.c
kmtests/ntos_ex/ExFastMutex.c
kmtests/ntos_ex/ExResource.c
kmtests/ntos_fsrtl/FsRtlExpression.c
kmtests/ntos_ke/KeApc.c

index 5a2447b..b17ad79 100644 (file)
@@ -61,7 +61,7 @@ const KMT_TEST TestList[] =
     { "KeEvent",                            Test_KeEvent },
     { "KeGuardedMutex",                     Test_KeGuardedMutex },
     { "KeIrql",                             Test_KeIrql },
-    { "KeProcessor",                        Test_KeProcessor },
+    { "-KeProcessor",                       Test_KeProcessor },
     { "-KernelType",                        Test_KernelType },
     { "ObReference",                        Test_ObReference },
     { "ObType",                             Test_ObType },
index 53ec7fd..1811b27 100644 (file)
@@ -52,12 +52,6 @@ TestFastMutex(
     ExiReleaseFastMutex(Mutex);
     CheckMutex(Mutex, 1L, NULL, 0LU, OriginalIrql, OriginalIrql);
 
-    /* acquire/release unsafe */
-    ExAcquireFastMutexUnsafe(Mutex);
-    CheckMutex(Mutex, 0L, Thread, 0LU, OriginalIrql, OriginalIrql);
-    ExReleaseFastMutexUnsafe(Mutex);
-    CheckMutex(Mutex, 1L, NULL, 0LU, OriginalIrql, OriginalIrql);
-
     /* try to acquire */
     ok_bool_true(ExTryToAcquireFastMutex(Mutex), "ExTryToAcquireFastMutex returned");
     CheckMutex(Mutex, 0L, Thread, 0LU, OriginalIrql, APC_LEVEL);
@@ -69,33 +63,45 @@ TestFastMutex(
     ok_bool_true(KeAreApcsDisabled(), "KeAreApcsDisabled returned");
     ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(Mutex);
 
-    /* mismatched acquire/release */
-    ExAcquireFastMutex(Mutex);
-    CheckMutex(Mutex, 0L, Thread, 0LU, OriginalIrql, APC_LEVEL);
-    ExReleaseFastMutexUnsafe(Mutex);
-    CheckMutex(Mutex, 1L, NULL, 0LU, OriginalIrql, APC_LEVEL);
-    KmtSetIrql(OriginalIrql);
-    CheckMutex(Mutex, 1L, NULL, 0LU, OriginalIrql, OriginalIrql);
-
-    Mutex->OldIrql = 0x55555555LU;
-    ExAcquireFastMutexUnsafe(Mutex);
-    CheckMutex(Mutex, 0L, Thread, 0LU, 0x55555555LU, OriginalIrql);
-    Mutex->OldIrql = PASSIVE_LEVEL;
-    ExReleaseFastMutex(Mutex);
-    CheckMutex(Mutex, 1L, NULL, 0LU, PASSIVE_LEVEL, PASSIVE_LEVEL);
-    KmtSetIrql(OriginalIrql);
-    CheckMutex(Mutex, 1L, NULL, 0LU, PASSIVE_LEVEL, OriginalIrql);
-
-    /* release without acquire */
-    ExReleaseFastMutexUnsafe(Mutex);
-    CheckMutex(Mutex, 2L, NULL, 0LU, PASSIVE_LEVEL, OriginalIrql);
-    --Mutex->Count;
-    Mutex->OldIrql = OriginalIrql;
-    ExReleaseFastMutex(Mutex);
-    CheckMutex(Mutex, 2L, NULL, 0LU, OriginalIrql, OriginalIrql);
-    ExReleaseFastMutex(Mutex);
-    CheckMutex(Mutex, 3L, NULL, 0LU, OriginalIrql, OriginalIrql);
-    Mutex->Count -= 2;
+    /* acquire/release unsafe */
+    if (!KmtIsCheckedBuild || OriginalIrql == APC_LEVEL)
+    {
+        ExAcquireFastMutexUnsafe(Mutex);
+        CheckMutex(Mutex, 0L, Thread, 0LU, OriginalIrql, OriginalIrql);
+        ExReleaseFastMutexUnsafe(Mutex);
+        CheckMutex(Mutex, 1L, NULL, 0LU, OriginalIrql, OriginalIrql);
+
+        /* mismatched acquire/release */
+        ExAcquireFastMutex(Mutex);
+        CheckMutex(Mutex, 0L, Thread, 0LU, OriginalIrql, APC_LEVEL);
+        ExReleaseFastMutexUnsafe(Mutex);
+        CheckMutex(Mutex, 1L, NULL, 0LU, OriginalIrql, APC_LEVEL);
+        KmtSetIrql(OriginalIrql);
+        CheckMutex(Mutex, 1L, NULL, 0LU, OriginalIrql, OriginalIrql);
+
+        Mutex->OldIrql = 0x55555555LU;
+        ExAcquireFastMutexUnsafe(Mutex);
+        CheckMutex(Mutex, 0L, Thread, 0LU, 0x55555555LU, OriginalIrql);
+        Mutex->OldIrql = PASSIVE_LEVEL;
+        ExReleaseFastMutex(Mutex);
+        CheckMutex(Mutex, 1L, NULL, 0LU, PASSIVE_LEVEL, PASSIVE_LEVEL);
+        KmtSetIrql(OriginalIrql);
+        CheckMutex(Mutex, 1L, NULL, 0LU, PASSIVE_LEVEL, OriginalIrql);
+    }
+    
+    if (!KmtIsCheckedBuild)
+    {
+        /* release without acquire */
+        ExReleaseFastMutexUnsafe(Mutex);
+        CheckMutex(Mutex, 2L, NULL, 0LU, PASSIVE_LEVEL, OriginalIrql);
+        --Mutex->Count;
+        Mutex->OldIrql = OriginalIrql;
+        ExReleaseFastMutex(Mutex);
+        CheckMutex(Mutex, 2L, NULL, 0LU, OriginalIrql, OriginalIrql);
+        ExReleaseFastMutex(Mutex);
+        CheckMutex(Mutex, 3L, NULL, 0LU, OriginalIrql, OriginalIrql);
+        Mutex->Count -= 2;
+    }
 
     /* make sure we survive this in case of error */
     ok_eq_long(Mutex->Count, 1L);
index 28122d3..16366ab 100644 (file)
@@ -86,8 +86,9 @@ TestResourceSharedAccess(
     ok_bool_false(ExAcquireResourceExclusiveLite(Res, FALSE), "ExAcquireResourceExclusiveLite returned");
     CheckResourceStatus(Res, FALSE, Count, 0LU, 0LU);
 
-    /* this must not crash or deadlock (but can assert) */
-    ExConvertExclusiveToSharedLite(Res);
+    /* this asserts */
+    if (!KmtIsCheckedBuild)
+        ExConvertExclusiveToSharedLite(Res);
     CheckResourceStatus(Res, FALSE, Count, 0LU, 0LU);
 
     while (Count--)
index da5479a..ff9a8c8 100644 (file)
@@ -16,11 +16,15 @@ static VOID FsRtlIsNameInExpressionTest()
 {
     UNICODE_STRING Expression, Name;
 
-    RtlInitUnicodeString(&Expression, L"*");
-    RtlInitUnicodeString(&Name, L"");
-    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
-    RtlInitUnicodeString(&Expression, L"");
-    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    /* !Name->Length || !Expression->Length asserts */
+    if (!KmtIsCheckedBuild)
+    {
+        RtlInitUnicodeString(&Expression, L"*");
+        RtlInitUnicodeString(&Name, L"");
+        ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+        RtlInitUnicodeString(&Expression, L"");
+        ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    }
 
     RtlInitUnicodeString(&Expression, L"ntdll.dll");
     RtlInitUnicodeString(&Name, L".");
@@ -125,8 +129,11 @@ static VOID FsRtlIsNameInExpressionTest()
     RtlInitUnicodeString(&Expression, L"*.?.c.d");
     ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
     RtlInitUnicodeString(&Expression, L"*?");
-    RtlInitUnicodeString(&Name, L"");
-    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    if (!KmtIsCheckedBuild)
+    {
+        RtlInitUnicodeString(&Name, L"");
+        ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    }
     RtlInitUnicodeString(&Name, L"a");
     ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
     RtlInitUnicodeString(&Name, L"aa");
@@ -134,8 +141,11 @@ static VOID FsRtlIsNameInExpressionTest()
     RtlInitUnicodeString(&Name, L"aaa");
     ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
     RtlInitUnicodeString(&Expression, L"?*?");
-    RtlInitUnicodeString(&Name, L"");
-    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    if (!KmtIsCheckedBuild)
+    {
+        RtlInitUnicodeString(&Name, L"");
+        ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    }
     RtlInitUnicodeString(&Name, L"a");
     ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
     RtlInitUnicodeString(&Name, L"aa");
@@ -166,11 +176,14 @@ static VOID FsRtlIsDbcsInExpressionTest()
 {
     ANSI_STRING Expression, Name;
 
-    RtlInitAnsiString(&Expression, "*");
-    RtlInitAnsiString(&Name, "");
-    ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE");
-    RtlInitAnsiString(&Expression, "");
-    ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE");
+    if (!KmtIsCheckedBuild)
+    {
+        RtlInitAnsiString(&Expression, "*");
+        RtlInitAnsiString(&Name, "");
+        ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE");
+        RtlInitAnsiString(&Expression, "");
+        ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE");
+    }
 
     RtlInitAnsiString(&Expression, "ntdll.dll");
     RtlInitAnsiString(&Name, ".");
@@ -275,8 +288,11 @@ static VOID FsRtlIsDbcsInExpressionTest()
     RtlInitAnsiString(&Expression, "*.?.c.d");
     ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE");
     RtlInitAnsiString(&Expression, "*?");
-    RtlInitAnsiString(&Name, "");
-    ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE");
+    if (!KmtIsCheckedBuild)
+    {
+        RtlInitAnsiString(&Name, "");
+        ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE");
+    }
     RtlInitAnsiString(&Name, "a");
     ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE");
     RtlInitAnsiString(&Name, "aa");
@@ -284,8 +300,11 @@ static VOID FsRtlIsDbcsInExpressionTest()
     RtlInitAnsiString(&Name, "aaa");
     ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE");
     RtlInitAnsiString(&Expression, "?*?");
-    RtlInitAnsiString(&Name, "");
-    ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE");
+    if (!KmtIsCheckedBuild)
+    {
+        RtlInitAnsiString(&Name, "");
+        ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE");
+    }
     RtlInitAnsiString(&Name, "a");
     ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE");
     RtlInitAnsiString(&Name, "aa");
index e804874..3b00c53 100644 (file)
@@ -71,24 +71,27 @@ START_TEST(KeApc)
     CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
 
     /* leave without entering */
-    KeLeaveCriticalRegion();
-    CheckApcs(1, 0, FALSE, PASSIVE_LEVEL);
-    KeEnterCriticalRegion();
-    CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+    if (!KmtIsCheckedBuild)
+    {
+        KeLeaveCriticalRegion();
+        CheckApcs(1, 0, FALSE, PASSIVE_LEVEL);
+        KeEnterCriticalRegion();
+        CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
 
-    KeLeaveGuardedRegion();
-    CheckApcs(0, 1, TRUE, PASSIVE_LEVEL);
-    KeEnterGuardedRegion();
-    CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+        KeLeaveGuardedRegion();
+        CheckApcs(0, 1, TRUE, PASSIVE_LEVEL);
+        KeEnterGuardedRegion();
+        CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
 
-    KeLeaveCriticalRegion();
-    CheckApcs(1, 0, FALSE, PASSIVE_LEVEL);
-    KeLeaveGuardedRegion();
-    CheckApcs(1, 1, TRUE, PASSIVE_LEVEL);
-    KeEnterCriticalRegion();
-    CheckApcs(0, 1, TRUE, PASSIVE_LEVEL);
-    KeEnterGuardedRegion();
-    CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+        KeLeaveCriticalRegion();
+        CheckApcs(1, 0, FALSE, PASSIVE_LEVEL);
+        KeLeaveGuardedRegion();
+        CheckApcs(1, 1, TRUE, PASSIVE_LEVEL);
+        KeEnterCriticalRegion();
+        CheckApcs(0, 1, TRUE, PASSIVE_LEVEL);
+        KeEnterGuardedRegion();
+        CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+    }
 
     /* manually disable APCs */
     Thread->KernelApcDisable = -1;
@@ -126,51 +129,58 @@ START_TEST(KeApc)
       KeLeaveCriticalRegion();
       CheckApcs(0, 0, TRUE, HIGH_LEVEL);
 
-      KeEnterGuardedRegion();
-        CheckApcs(0, -1, TRUE, HIGH_LEVEL);
-      KeLeaveGuardedRegion();
+      /* Ke*GuardedRegion assert at > APC_LEVEL */
+      if (!KmtIsCheckedBuild)
+      {
+          KeEnterGuardedRegion();
+            CheckApcs(0, -1, TRUE, HIGH_LEVEL);
+          KeLeaveGuardedRegion();
+      }
       CheckApcs(0, 0, TRUE, HIGH_LEVEL);
     KeLowerIrql(Irql);
     CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
 
-    KeRaiseIrql(HIGH_LEVEL, &Irql);
-    CheckApcs(0, 0, TRUE, HIGH_LEVEL);
-    KeEnterCriticalRegion();
-    CheckApcs(-1, 0, TRUE, HIGH_LEVEL);
-    KeEnterGuardedRegion();
-    CheckApcs(-1, -1, TRUE, HIGH_LEVEL);
-    KeLowerIrql(Irql);
-    CheckApcs(-1, -1, TRUE, PASSIVE_LEVEL);
-    KeLeaveCriticalRegion();
-    CheckApcs(0, -1, TRUE, PASSIVE_LEVEL);
-    KeLeaveGuardedRegion();
-    CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+    if (!KmtIsCheckedBuild)
+    {
+        KeRaiseIrql(HIGH_LEVEL, &Irql);
+        CheckApcs(0, 0, TRUE, HIGH_LEVEL);
+        KeEnterCriticalRegion();
+        CheckApcs(-1, 0, TRUE, HIGH_LEVEL);
+        KeEnterGuardedRegion();
+        CheckApcs(-1, -1, TRUE, HIGH_LEVEL);
+        KeLowerIrql(Irql);
+        CheckApcs(-1, -1, TRUE, PASSIVE_LEVEL);
+        KeLeaveCriticalRegion();
+        CheckApcs(0, -1, TRUE, PASSIVE_LEVEL);
+        KeLeaveGuardedRegion();
+        CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
 
-    KeEnterGuardedRegion();
-    CheckApcs(0, -1, TRUE, PASSIVE_LEVEL);
-    KeRaiseIrql(HIGH_LEVEL, &Irql);
-    CheckApcs(0, -1, TRUE, HIGH_LEVEL);
-    KeEnterCriticalRegion();
-    CheckApcs(-1, -1, TRUE, HIGH_LEVEL);
-    KeLeaveGuardedRegion();
-    CheckApcs(-1, 0, TRUE, HIGH_LEVEL);
-    KeLowerIrql(Irql);
-    CheckApcs(-1, 0, FALSE, PASSIVE_LEVEL);
-    KeLeaveCriticalRegion();
-    CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+        KeEnterGuardedRegion();
+        CheckApcs(0, -1, TRUE, PASSIVE_LEVEL);
+        KeRaiseIrql(HIGH_LEVEL, &Irql);
+        CheckApcs(0, -1, TRUE, HIGH_LEVEL);
+        KeEnterCriticalRegion();
+        CheckApcs(-1, -1, TRUE, HIGH_LEVEL);
+        KeLeaveGuardedRegion();
+        CheckApcs(-1, 0, TRUE, HIGH_LEVEL);
+        KeLowerIrql(Irql);
+        CheckApcs(-1, 0, FALSE, PASSIVE_LEVEL);
+        KeLeaveCriticalRegion();
+        CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
 
-    KeEnterCriticalRegion();
-    CheckApcs(-1, 0, FALSE, PASSIVE_LEVEL);
-    KeRaiseIrql(HIGH_LEVEL, &Irql);
-    CheckApcs(-1, 0, TRUE, HIGH_LEVEL);
-    KeEnterGuardedRegion();
-    CheckApcs(-1, -1, TRUE, HIGH_LEVEL);
-    KeLeaveCriticalRegion();
-    CheckApcs(0, -1, TRUE, HIGH_LEVEL);
-    KeLowerIrql(Irql);
-    CheckApcs(0, -1, TRUE, PASSIVE_LEVEL);
-    KeLeaveGuardedRegion();
-    CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+        KeEnterCriticalRegion();
+        CheckApcs(-1, 0, FALSE, PASSIVE_LEVEL);
+        KeRaiseIrql(HIGH_LEVEL, &Irql);
+        CheckApcs(-1, 0, TRUE, HIGH_LEVEL);
+        KeEnterGuardedRegion();
+        CheckApcs(-1, -1, TRUE, HIGH_LEVEL);
+        KeLeaveCriticalRegion();
+        CheckApcs(0, -1, TRUE, HIGH_LEVEL);
+        KeLowerIrql(Irql);
+        CheckApcs(0, -1, TRUE, PASSIVE_LEVEL);
+        KeLeaveGuardedRegion();
+        CheckApcs(0, 0, FALSE, PASSIVE_LEVEL);
+    }
 
     KeEnterCriticalRegion();
     CheckApcs(-1, 0, FALSE, PASSIVE_LEVEL);