Ejemplo n.º 1
0
        public static void Main()
        {
            // This test suite does not use the Test Runner infrastructure as it requires a 
            // reboot of the physical device to verify the references have been saved.  It relies
            // on the test harness to time it out if it fails to complete because of issues with
            // EWR persistence.

            // Skip test on Emulator
            if (Microsoft.SPOT.Hardware.SystemInfo.SystemID.SKU == 3)
            {
                StartTestLog("Emulator, skipping...");
                EndTestLog(0, 0, 1);
            }

            else
            {
                ewrs[0] = ExtendedWeakReference.Recover(typeof(TestRunTracker), 0);
                if (ewrs[0] == null)
                {
                    ewrs[0] = ExtendedWeakReference.RecoverOrCreate(
                      typeof(TestRunTracker),
                      0,
                      ExtendedWeakReference.c_SurviveBoot | ExtendedWeakReference.c_SurvivePowerdown);
                    runTracker = new TestRunTracker() { RebootCount = -1, TestState = TestRunTracker.State.Initialize };
                }
                else
                {
                    runTracker = (TestRunTracker)ewrs[0].Target;
                }

                Log.Comment("State: " + runTracker.TestState + ", Reboot Count: " + runTracker.RebootCount);

                switch (runTracker.TestState)
                {
                    // Initial state
                    case TestRunTracker.State.Initialize:
                        if (runTracker.RebootCount == -1)
                            StartTestLog("No EWR found, initializing for first run...");
                        else
                            StartTestLog("Previous EWR found.  Re-initializing...");

                        runTracker.TestState = TestRunTracker.State.HardReboot;
                        runTracker.RebootCount = 0;
                        runTracker.TestState = TestRunTracker.State.HardReboot;
                        for (uint i = 1; i < 10; i++)
                        {
                            ewrs[i] = ExtendedWeakReference.RecoverOrCreate(typeof(TestObj), i,
                                ExtendedWeakReference.c_SurvivePowerdown |
                                ExtendedWeakReference.c_SurviveBoot);
                            TestObj obj = new TestObj();
                            ewrs[i].Target = obj;
                            runTracker.objHashes[i] = obj.GetHashCode();
                        }
                        break;

                    // HardReboot cases - Reboots 1 - 3
                    case TestRunTracker.State.HardReboot:
                        Debug.Print("<TestMethod name=\"HardReboot" + runTracker.RebootCount + "\">");

                        // Validate objects
                        if (ValidateEWR(true))
                        {
                            Debug.Print("    <TestMethodResult Result=\"Pass\">");
                            runTracker.PassCount++;
                        }
                        else
                        {
                            Debug.Print("    <TestMethodResult Result=\"Fail\">");
                            runTracker.FailCount++;
                        }
                        Debug.Print("        <Text><![CDATA[TEST: HardReboot" + runTracker.RebootCount + "]]></Text>" + TimeStamp());
                        Debug.Print("    </TestMethodResult>");
                        Debug.Print("</TestMethod>");

                        // End test
                        if (runTracker.RebootCount >= 3)
                            runTracker.TestState = TestRunTracker.State.SoftReboot;

                        break;

                    // SoftReboot cases - Reboots 4 - 6
                    case TestRunTracker.State.SoftReboot:
                        Debug.Print("<TestMethod name=\"SoftReboot" + runTracker.RebootCount + "\">");

                        // Validate objects
                        if (ValidateEWR(true))
                        {
                            Debug.Print("    <TestMethodResult Result=\"Pass\">");
                            runTracker.PassCount++;
                        }
                        else
                        {
                            Debug.Print("    <TestMethodResult Result=\"Fail\">");
                            runTracker.FailCount++;
                        }
                        Debug.Print("        <Text><![CDATA[TEST: SoftReboot" + runTracker.RebootCount + "]]></Text>" + TimeStamp());
                        Debug.Print("    </TestMethodResult>");
                        Debug.Print("</TestMethod>");

                        // End test
                        if (runTracker.RebootCount >= 6)
                            runTracker.TestState = TestRunTracker.State.Restore;
                        break;

                    // Restore cases - Reboots 7 - 8
                    case TestRunTracker.State.Restore:
                        Debug.Print("<TestMethod name=\"Restore" + runTracker.RebootCount + "\">");
                        if (runTracker.RebootCount == 7)
                            Log.Comment("Restore and Pushback with Soft Reboot");
                        else
                            Log.Comment("Restore and Pushback with Hard Reboot");

                        // Validate objects
                        if (ValidateEWR(false))
                        {
                            Debug.Print("    <TestMethodResult Result=\"Pass\">");
                            runTracker.PassCount++;
                        }
                        else
                        {
                            Debug.Print("    <TestMethodResult Result=\"Fail\">");
                            runTracker.FailCount++;
                        }
                        Debug.Print("        <Text><![CDATA[TEST: SoftReboot" + runTracker.RebootCount + "]]></Text>" + TimeStamp());
                        Debug.Print("    </TestMethodResult>");
                        Debug.Print("</TestMethod>");

                        if (runTracker.RebootCount > 8)
                        {
                            runTracker.TestState = TestRunTracker.State.Complete;
                        }
                        break;

                    // Tests complete
                    case TestRunTracker.State.Complete:
                        runTracker.TestState = TestRunTracker.State.Initialize;
                        // Close logs
                        EndTestLog(runTracker.PassCount, runTracker.FailCount, 0);
                        break;
                }
                runTracker.RebootCount++;
                ewrs[0].Target = runTracker;
                // Need to sleep to make sure debug buffer has chance to flush before rebooting
                // This should not be needed for EWR any longer
                System.Threading.Thread.Sleep(15000);

                switch (runTracker.TestState)
                {
                    case TestRunTracker.State.HardReboot:
                        PowerState.RebootDevice(false);
                        break;
                    case TestRunTracker.State.SoftReboot:
                        PowerState.RebootDevice(true);
                        break;
                    case TestRunTracker.State.Restore:
                        if (runTracker.RebootCount == 8)
                            PowerState.RebootDevice(true);
                        else
                            PowerState.RebootDevice(false);
                        break;
                }
                // fall through to end test suite
            }
        }
Ejemplo n.º 2
0
        public static void Main()
        {
            // This test suite does not use the Test Runner infrastructure as it requires a
            // reboot of the physical device to verify the references have been saved.  It relies
            // on the test harness to time it out if it fails to complete because of issues with
            // EWR persistence.

            // Skip test on Emulator
            if (Microsoft.SPOT.Hardware.SystemInfo.SystemID.SKU == 3)
            {
                StartTestLog("Emulator, skipping...");
                EndTestLog(0, 0, 1);
            }

            else
            {
                ewrs[0] = ExtendedWeakReference.Recover(typeof(TestRunTracker), 0);
                if (ewrs[0] == null)
                {
                    ewrs[0] = ExtendedWeakReference.RecoverOrCreate(
                        typeof(TestRunTracker),
                        0,
                        ExtendedWeakReference.c_SurviveBoot | ExtendedWeakReference.c_SurvivePowerdown);
                    runTracker = new TestRunTracker()
                    {
                        RebootCount = -1, TestState = TestRunTracker.State.Initialize
                    };
                }
                else
                {
                    runTracker = (TestRunTracker)ewrs[0].Target;
                }

                Log.Comment("State: " + runTracker.TestState + ", Reboot Count: " + runTracker.RebootCount);

                switch (runTracker.TestState)
                {
                // Initial state
                case TestRunTracker.State.Initialize:
                    if (runTracker.RebootCount == -1)
                    {
                        StartTestLog("No EWR found, initializing for first run...");
                    }
                    else
                    {
                        StartTestLog("Previous EWR found.  Re-initializing...");
                    }

                    runTracker.TestState   = TestRunTracker.State.HardReboot;
                    runTracker.RebootCount = 0;
                    runTracker.TestState   = TestRunTracker.State.HardReboot;
                    for (uint i = 1; i < 10; i++)
                    {
                        ewrs[i] = ExtendedWeakReference.RecoverOrCreate(typeof(TestObj), i,
                                                                        ExtendedWeakReference.c_SurvivePowerdown |
                                                                        ExtendedWeakReference.c_SurviveBoot);
                        TestObj obj = new TestObj();
                        ewrs[i].Target          = obj;
                        runTracker.objHashes[i] = obj.GetHashCode();
                    }
                    break;

                // HardReboot cases - Reboots 1 - 3
                case TestRunTracker.State.HardReboot:
                    Debug.Print("<TestMethod name=\"HardReboot" + runTracker.RebootCount + "\">");

                    // Validate objects
                    if (ValidateEWR(true))
                    {
                        Debug.Print("    <TestMethodResult Result=\"Pass\">");
                        runTracker.PassCount++;
                    }
                    else
                    {
                        Debug.Print("    <TestMethodResult Result=\"Fail\">");
                        runTracker.FailCount++;
                    }
                    Debug.Print("        <Text><![CDATA[TEST: HardReboot" + runTracker.RebootCount + "]]></Text>" + TimeStamp());
                    Debug.Print("    </TestMethodResult>");
                    Debug.Print("</TestMethod>");

                    // End test
                    if (runTracker.RebootCount >= 3)
                    {
                        runTracker.TestState = TestRunTracker.State.SoftReboot;
                    }

                    break;

                // SoftReboot cases - Reboots 4 - 6
                case TestRunTracker.State.SoftReboot:
                    Debug.Print("<TestMethod name=\"SoftReboot" + runTracker.RebootCount + "\">");

                    // Validate objects
                    if (ValidateEWR(true))
                    {
                        Debug.Print("    <TestMethodResult Result=\"Pass\">");
                        runTracker.PassCount++;
                    }
                    else
                    {
                        Debug.Print("    <TestMethodResult Result=\"Fail\">");
                        runTracker.FailCount++;
                    }
                    Debug.Print("        <Text><![CDATA[TEST: SoftReboot" + runTracker.RebootCount + "]]></Text>" + TimeStamp());
                    Debug.Print("    </TestMethodResult>");
                    Debug.Print("</TestMethod>");

                    // End test
                    if (runTracker.RebootCount >= 6)
                    {
                        runTracker.TestState = TestRunTracker.State.Restore;
                    }
                    break;

                // Restore cases - Reboots 7 - 8
                case TestRunTracker.State.Restore:
                    Debug.Print("<TestMethod name=\"Restore" + runTracker.RebootCount + "\">");
                    if (runTracker.RebootCount == 7)
                    {
                        Log.Comment("Restore and Pushback with Soft Reboot");
                    }
                    else
                    {
                        Log.Comment("Restore and Pushback with Hard Reboot");
                    }

                    // Validate objects
                    if (ValidateEWR(false))
                    {
                        Debug.Print("    <TestMethodResult Result=\"Pass\">");
                        runTracker.PassCount++;
                    }
                    else
                    {
                        Debug.Print("    <TestMethodResult Result=\"Fail\">");
                        runTracker.FailCount++;
                    }
                    Debug.Print("        <Text><![CDATA[TEST: SoftReboot" + runTracker.RebootCount + "]]></Text>" + TimeStamp());
                    Debug.Print("    </TestMethodResult>");
                    Debug.Print("</TestMethod>");

                    if (runTracker.RebootCount > 8)
                    {
                        runTracker.TestState = TestRunTracker.State.Complete;
                    }
                    break;

                // Tests complete
                case TestRunTracker.State.Complete:
                    runTracker.TestState = TestRunTracker.State.Initialize;
                    // Close logs
                    EndTestLog(runTracker.PassCount, runTracker.FailCount, 0);
                    break;
                }
                runTracker.RebootCount++;
                ewrs[0].Target = runTracker;
                // Need to sleep to make sure debug buffer has chance to flush before rebooting
                // This should not be needed for EWR any longer
                System.Threading.Thread.Sleep(15000);

                switch (runTracker.TestState)
                {
                case TestRunTracker.State.HardReboot:
                    PowerState.RebootDevice(false);
                    break;

                case TestRunTracker.State.SoftReboot:
                    PowerState.RebootDevice(true);
                    break;

                case TestRunTracker.State.Restore:
                    if (runTracker.RebootCount == 8)
                    {
                        PowerState.RebootDevice(true);
                    }
                    else
                    {
                        PowerState.RebootDevice(false);
                    }
                    break;
                }
                // fall through to end test suite
            }
        }