--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/smr/t_smr.cpp Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,240 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Bootstrap Shadow Memory Region Test Application
+//
+
+#define __E32TEST_EXTENSION__
+#include <e32test.h>
+#include <e32svr.h>
+#include <u32hal.h>
+#include <hal.h>
+#include <hal_data.h>
+#include "d_smr.h"
+
+#define __TRACE_LINE__() test.Printf(_L("%d\n"),__LINE__)
+
+RTest test(_L("T_SMR"));
+
+RSMRTest SMRTest;
+
+
+//---------------------------------------------
+//! @SYMTestCaseID
+//! @SYMTestType
+//! @SYMPREQ
+//! @SYMTestCaseDesc
+//! @SYMTestActions
+//!
+//! @SYMTestExpectedResults
+//!
+//! @SYMTestPriority
+//! @SYMTestStatus
+//---------------------------------------------
+TInt TestSMRIBPtr (TBool aEnforce)
+ {
+ /* These tests assume that the Core Loader does not load and user data areas
+ * as they are too large (>8Mb). Leaving the SMRIB undefined (==0) on NE1 and
+ * H4.
+ */
+
+ /* Print out the SMRIB Pointer in the Super Page.
+ * When enforce, zero entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_CheckSMRIBPtr"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_CheckSMRIBPtr(aEnforce));
+
+ return KErrNone;
+ }
+
+TInt TestSMRAccess (TBool aEnforce)
+ {
+ /* These tests assume that the Core Loader has been modified to treat the
+ * user data partitions as SMR partitions and load them into SMR memory area
+ * and updated teh SMRIB. Two SMRs are expected, each of 4Mb in size.
+ */
+
+
+ /* Print out the SMRIB in the Super Page.
+ * When enforce, zero entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_PrintSMRIB"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_PrintSMRIB(aEnforce));
+
+ /* Print out the SMRIB and access and dump 1Kb of memory in each SMR.
+ * When enforce, zero SMR entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_AccessAllSMRs"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_AccessAllSMRs(aEnforce));
+
+ /* Print out the SMRIB in the Super Page.
+ * When enforce, zero entries will lead to a test failure.
+ */
+
+ return KErrNone;
+ }
+
+
+TInt TestSMRAccessAndRAMFree (TBool aEnforce)
+ {
+ /* These tests assume that the Core Loader has been modified to treat the
+ * user data partitions as SMR partitions and load them into SMR memory area
+ * and updated teh SMRIB. Two SMRs are expected, each of 4Mb in size.
+ */
+
+
+ /* Print out the SMRIB in the Super Page.
+ * When enforce, zero entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_PrintSMRIB"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_PrintSMRIB(aEnforce));
+
+ /* Print out the SMRIB and access and dump 1Kb of memory in each SMR.
+ * When enforce, zero SMR entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_AccessAllSMRs"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_AccessAllSMRs(aEnforce));
+
+ /* Print out the SMRIB in the Super Page.
+ * When enforce, zero entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_FreeHalfSMR1PhysicalRam"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_FreeHalfSMR1PhysicalRam(aEnforce));
+
+ /* Print out the SMRIB in the Super Page.
+ * When enforce, zero entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_FreeAllSMR2PhysicalRam"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_FreeAllSMR2PhysicalRam(aEnforce));
+
+
+
+ /* Print out the SMRIB in the Super Page to see how it has been modified.
+ * When enforce, zero entries will lead to a test failure.
+ */
+ test.Next(_L("SMR Test: Test_PrintSMRIB"));
+ test.Printf(_L("\n"));
+ test_KErrNone( SMRTest.Test_PrintSMRIB(aEnforce));
+
+ return KErrNone;
+ }
+
+
+GLDEF_C TInt E32Main()
+ {
+ TInt r;
+ TBuf<256> args;
+ TInt arglen = 0;
+ TBool enforce = EFalse;
+ TBool getch = EFalse;
+ TInt testcase = 0;
+
+ test.Title();
+
+ test.Start(_L("=== SMR Test Suite"));
+
+ arglen = User::CommandLineLength();
+ if (arglen > 0)
+ {
+ /** Process command arguments */
+ test_Compare(arglen,<,256);
+ User::CommandLine(args);
+
+ test.Printf(_L("Arguments: %S\n"), &args);
+
+ if (args.Find(_L("-1")) >= 0)
+ testcase = 1;
+ if (args.Find(_L("-2")) >= 0)
+ testcase = 2;
+ if (args.Find(_L("-3")) >= 0)
+ testcase = 3;
+ if (args.Find(_L("-4")) >= 0)
+ testcase = 4;
+
+ if (args.Find(_L("-e")) >= 0)
+ enforce = ETrue;
+
+ if (args.Find(_L("-g")) >= 0)
+ getch = ETrue;
+
+ if (args.Find(_L("-h")) >= 0)
+ {
+ test.Printf(_L("usage: t_smr [-1|-2|-3|-4] [-e] [-h] [-g]\n"));
+ goto done;
+ }
+ }
+
+ TInt muid = 0;
+ r = HAL::Get(HAL::EMachineUid, muid);
+ test_KErrNone(r);
+ if ((muid != HALData::EMachineUid_NE1_TB) && (testcase != 1))
+ {
+ test.Printf (_L("Testing skipped as test only applies to NaviEngine platform\n"));
+ goto done;
+ }
+
+ test.Next(_L("=== Open test LDD"));
+ r = User::LoadLogicalDevice(RSMRTest::Name());
+ test_Assert((r==KErrNone || r==KErrAlreadyExists),void (0));
+
+ r = SMRTest.Open();
+ test_KErrNone(r);
+
+
+ // Do test cases
+ //
+ if (testcase == 1)
+ {
+ TestSMRAccess(enforce);
+ }
+ else if (testcase == 2)
+ {
+ TestSMRAccessAndRAMFree(enforce);
+ }
+ else if (testcase == 3)
+ {
+ TestSMRIBPtr(enforce);
+ }
+ else if (testcase == 4)
+ {
+ TestSMRIBPtr(enforce);
+ }
+ else
+ {
+ test.Printf (_L("Just open and closing test driver, no test case argument supplied."));
+ }
+
+ test.Next(_L("=== Close LDD"));
+ SMRTest.Close();
+
+ r = User::FreeLogicalDevice(RSMRTest::Name());
+ test_KErrNone(r);
+
+done:
+ test.End();
+
+ if (getch)
+ {
+ test.Printf(_L("Press any key to continue...\n"));
+ (void) test.Getch();
+ }
+ return(0);
+ }
+