--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commsprocess/commsrootserverconfig/Te_Configurator/src/heapfailureStep.cpp Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,647 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+//
+
+/**
+ @file loadcpmStep.h
+*/
+
+
+#include "heapfailureStep.h"
+
+using namespace RootServer;
+
+
+//NET-iConfigurator-I-0029-HP
+//Heap Allocation failure test for load and unload API
+CHeapAllocationFailure ::~CHeapAllocationFailure ()
+/**
+ * Destructor
+ */
+ {
+ }
+
+CHeapAllocationFailure ::CHeapAllocationFailure ()
+/**
+ * Constructor
+ */
+ {
+ SetTestStepName(KHeapAllocationFailure );
+ }
+
+
+/**
+ * @see HeapAllocationFailure test case NET-iConfigurator-I-00029-HP
+ *
+ * doTestStepL virtual function does the below action
+ * it test the heap failure test for the fuction called
+ * in the trap function
+ * Expected:-HeapAllocationFailure return EPass
+*/
+TVerdict CHeapAllocationFailure ::doTestStepL()
+ {
+ SetTestStepResult(EFail);
+ TInt error = KErrNone;
+ TInt failRate = 0;
+
+ do
+ {
+ // The OOM loop
+ ++failRate;
+ //set the heap failure test to fail
+ __UHEAP_SETFAIL(RHeap::EDeterministic, failRate);
+ //Mark the biging of the heap to test for the heap failure test
+ __UHEAP_MARK;
+ // Do the tests
+ TRAP(error, CallOOM());
+ //Mark the end of the heap to test for the heap failure test
+ __UHEAP_MARKEND;
+ //Reset the heap mark
+ __UHEAP_RESET;
+ if(error != KErrNone && error != KErrNoMemory)
+ {
+ INFO_PRINTF3(_L("Unexpected error occured in %S: %D"), &TestStepName(), error);
+ SetTestStepResult(EFail);
+ break;
+ }
+ else
+ {
+ SetTestStepResult(EPass);
+ }
+ }while(error != KErrNone);
+
+ return TestStepResult();
+ }
+
+
+//CallOOM function use the LoadCpm and UnLoadCpm API to test for heap failure test
+void CHeapAllocationFailure::CallOOM()
+ {
+
+ INFO_PRINTF1(_L("OOM load started \n"));
+ _LIT8(KNameDummyCpm,"DummyCpm");
+
+ //iConfigurator Load the DummyCpm CPM
+ iConfigurator.LoadCpm(KNameDummyCpm(), iStatus);
+ //Waits for a specific asynchronous request to complete.
+ User::WaitForRequest(iStatus);
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("Heap failure test DummyCpm Loaded Successfully \n"));
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("Heap failure test LoadCpm (DummyCpm) returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Heap failure test LoadCpm (DummyCpm) returned Error (%d) \n"), iStatus.Int());
+ }
+
+ INFO_PRINTF1(_L("OOM load end \n"));
+ //iConfigurator to unload the DummyCpm CPM
+ iConfigurator.UnloadCpm(KNameDummyCpm(), EImmediate, iStatus);
+ User::WaitForRequest(iStatus);
+
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("Heap failure test DummyCpm UnLoaded Successfully \n"));
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("Heap failure test UnLoadCpm (DummyCpm) returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Heap failure test UnLoadCpm (DummyCpm) returned Error (%d) \n"), iStatus.Int());
+ }
+ }
+
+
+//NET-iConfigurator-I-0030-HP
+//Heap Allocation failure test for load unload and cancel load API
+CHeapFailurecancelLoad ::~CHeapFailurecancelLoad ()
+/**
+ * Destructor
+ */
+ {
+ }
+CHeapFailurecancelLoad ::CHeapFailurecancelLoad ()
+/**
+ * Constructor
+ */
+ {
+ SetTestStepName(KHeapFailurecancelLoad );
+ }
+
+/**
+ * @see HeapFailurecancelLoad test case NET-iConfigurator-I-00029-HP
+ *
+ * doTestStepL virtual function does the below action
+ * it test the heap failure test for the fuction called
+ * in the trap function
+ * Expected:-HeapFailurecancelLoad return EPass
+*/
+TVerdict CHeapFailurecancelLoad ::doTestStepL()
+ {
+ SetTestStepResult(EFail);
+ TInt error = KErrNone;
+ TInt failRate = 0;
+
+ do
+ {
+ // The OOM loop
+ ++failRate;
+ //set the heap failure test to fail
+ __UHEAP_SETFAIL(RHeap::EDeterministic, failRate);
+ //Mark the biging of the heap to test for the heap failure test
+ __UHEAP_MARK;
+ // Do the tests
+ TRAP(error, CancelLoad());
+ //Mark the end of the heap to test for the heap failure test
+ __UHEAP_MARKEND;
+ //Reset the heap mark
+ __UHEAP_RESET;
+
+ if(error != KErrNone && error != KErrNoMemory)
+ {
+ INFO_PRINTF3(_L("Unexpected error occured in %S: %D"), &TestStepName(), error);
+ SetTestStepResult(EFail);
+ break;
+ }
+ else
+ {
+ SetTestStepResult(EPass);
+ }
+ }while(error != KErrNone);
+ return TestStepResult();
+ }
+
+
+//CancelLoad function use the LoadCpm,UnLoadCpm,cancelLoadCpm API to test for heap failure test
+void CHeapFailurecancelLoad::CancelLoad()
+ {
+ _LIT8(KNameDummyCpm,"DummyCpm");
+
+ //iConfigurator Load the DummyCpm CPM
+ iConfigurator.LoadCpm(KNameDummyCpm(), iStatus);
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("DummyCpm Loaded Successfully"));
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("LoadCpm returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("LoadCpm returned Error (%d) \n"), iStatus.Int());
+ }
+
+ //iConfigurator to call Cancel Load request preveously called
+ iConfigurator.CancelLoadCpm(KNameDummyCpm());
+ User::WaitForRequest(iStatus);
+ iConfigurator.LoadCpm(KNameDummyCpm(), iStatus);
+ //iConfigurator Load the DummyCpm CPM
+ User::WaitForRequest(iStatus);
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("CancelLoadCpm Loaded Successfully"));
+ }
+ else if(iStatus.Int() == KErrRSModuleAlreadyExist)
+ {
+ INFO_PRINTF1(_L("CancelLoading DummyCpm Failed\n"));
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("CancelLoading DummyCpm returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("CancelLoading DummyCpm Unknown status (%d) \n"), iStatus.Int());
+ }
+
+ //iConfigurator unLoad the DummyCpm CPM
+ iConfigurator.UnloadCpm(KNameDummyCpm(), EImmediate, iStatus);
+ User::WaitForRequest(iStatus);
+}
+
+//NET-iConfigurator-I-0031-HP
+//Heap Allocation failure test for load unload and cancel unload API
+CHeapFailurecancelUnLoad ::~CHeapFailurecancelUnLoad ()
+/**
+ * Destructor
+ */
+ {
+ }
+
+CHeapFailurecancelUnLoad ::CHeapFailurecancelUnLoad ()
+/**
+ * Constructor
+ */
+ {
+ SetTestStepName(KHeapFailurecancelUnLoad );
+ }
+
+/**
+ * HeapFailurecancelUnLoad test case NET-iConfigurator-I-0031-HP
+ *
+ * doTestStepL virtual function does the below action
+ * it test the heap failure test for the fuction called
+ * in the trap function
+ * Expected:-HeapFailurecancelUnLoad return EPass
+*/
+TVerdict CHeapFailurecancelUnLoad ::doTestStepL()
+ {
+ SetTestStepResult(EFail);
+ TInt error = KErrNone;
+ TInt failRate = 0;
+
+ do
+ {
+ // The OOM loop
+ ++failRate;
+ //set the heap failure test to fail
+ __UHEAP_SETFAIL(RHeap::EDeterministic, failRate);
+ //Mark the biging of the heap to test for the heap failure test
+ __UHEAP_MARK;
+ // Do the tests
+ TRAP(error, CancelUnLoad());
+ //Mark the end of the heap to test for the heap failure test
+ __UHEAP_MARKEND;
+ //Reset the heap mark
+ __UHEAP_RESET;
+
+ if(error != KErrNone && error != KErrNoMemory)
+ {
+ INFO_PRINTF3(_L("Unexpected error occured in %S: %D"), &TestStepName(), error);
+ SetTestStepResult(EFail);
+ break;
+ }
+ else
+ {
+ SetTestStepResult(EPass);
+ }
+ }while(error != KErrNone);
+
+ return TestStepResult();
+ }
+
+//CancelUnLoad function use the LoadCpm,UnLoadCpm,CancelUnLoadCpm API to test for heap failure test
+void CHeapFailurecancelUnLoad::CancelUnLoad()
+ {
+ _LIT8(KNameDummyCpm,"DummyCpm");
+
+ //iConfigurator Load the DummyCpm CPM
+ iConfigurator.LoadCpm(KNameDummyCpm(), iStatus);
+ User::WaitForRequest(iStatus);
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("DummyCpm Loaded Successfully"));
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("LoadCpm returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("LoadCpm returned Error (%d) \n"), iStatus.Int());
+ }
+
+ //iConfigurator to unload the DummyCpm CPM
+ iConfigurator.UnloadCpm(KNameDummyCpm(), EImmediate, iStatus);
+ //iConfigurator to cancel unload the DummyCpm CPM
+ iConfigurator.CancelUnloadCpm(KNameDummyCpm());
+ User::WaitForRequest(iStatus);
+ //iConfigurator Load the DummyCpm CPM
+ iConfigurator.LoadCpm(KNameDummyCpm(), iStatus);
+ User::WaitForRequest(iStatus);
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("CancelLoadCpm Loaded Successfully"));
+ SetTestStepResult(EFail);
+ }
+ else if(iStatus.Int() == KErrRSModuleAlreadyExist)
+ {
+ INFO_PRINTF1(_L("CancelLoading DummyCpm Failed\n"));
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("CancelLoading DummyCpm returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("CancelLoading DummyCpm Unknown status (%d) \n"), iStatus.Int());
+ }
+
+ //iConfigurator to unload the DummyCpm CPM
+ iConfigurator.UnloadCpm(KNameDummyCpm(), EImmediate, iStatus);
+ //Waits for a specific asynchronous request to complete.
+ User::WaitForRequest(iStatus);
+ }
+
+//NET-iConfigurator-I-0032-HP
+//Heap Allocation failure test for load unload and GetModuleIniData
+CHeapFailureconfigApi ::~CHeapFailureconfigApi()
+/**
+ * Destructor
+ */
+ {
+ }
+
+CHeapFailureconfigApi::CHeapFailureconfigApi ()
+/**
+ * Constructor
+ */
+ {
+ SetTestStepName(KHeapFailureconfigApi );
+ }
+
+TVerdict CHeapFailureconfigApi ::doTestStepL()
+ {
+ SetTestStepResult(EFail);
+ TInt error = KErrNone;
+ TInt failRate = 0;
+ do
+ {
+ // The OOM loop
+ ++failRate;
+ //set the heap failure test to fail
+ //__UHEAP_SETFAIL(RHeap::EDeterministic, failRate);
+ //Mark the biging of the heap to test for the heap failure test
+ __UHEAP_MARK;
+ // Do the tests
+ TRAP(error, ConfiguratorApis());
+ //Mark the end of the heap to test for the heap failure test
+ __UHEAP_MARKEND;
+ //Reset the heap mark
+ __UHEAP_RESET;
+
+ if(error != KErrNone && error != KErrNoMemory)
+ {
+ INFO_PRINTF3(_L("Unexpected error occured in %S: %D"), &TestStepName(), error);
+ SetTestStepResult(EFail);
+ break;
+ }
+ else
+ {
+ SetTestStepResult(EPass);
+ }
+ }while(error != KErrNone);
+
+ return TestStepResult();
+
+ }
+
+//iConfiguratorApis function use the LoadCpm,UnLoadCpm,GetModuleIniData,EnumerateModules API to test for heap failure test
+void CHeapFailureconfigApi::ConfiguratorApis()
+ {
+ _LIT8(KNameDummyCpm,"DummyCpm");
+
+ //iConfigurator Load the DummyCpm CPM
+ iConfigurator.LoadCpm(KNameDummyCpm(), iStatus);
+ User::WaitForRequest(iStatus);
+
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("DummyCpm Loaded Successfully"));
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("LoadCpm returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("LoadCpm returned Error (%d) \n"), iStatus.Int());
+ }
+
+ //iConfigurator unLoad the DummyCpm
+ iConfigurator.UnloadCpm(KNameDummyCpm(), EImmediate, iStatus);
+ User::WaitForRequest(iStatus);
+ if(iStatus.Int() == KErrNone)
+ {
+ INFO_PRINTF1(_L("UnLoadCpm Loaded Successfully"));
+ }
+ else if(iStatus.Int() == KErrRSModuleAlreadyExist)
+ {
+ INFO_PRINTF2(_L("UnLoadCpm DummyCpm Unknown status (%d) \n"), iStatus.Int());;
+ }
+ else if(iStatus.Int() == KErrRSModuleUnknown)
+ {
+ INFO_PRINTF2(_L("UnLoadCpm DummyCpm returned KErrRSModuleUnknown(%d) \n"), iStatus.Int());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("UnLoadCpm DummyCpm Unknown status (%d) \n"), iStatus.Int());
+ }
+
+ RBuf8 data;
+ data.Create(100);
+ TInt actualdatasize;
+ //iConfigurator call to get the module inidata section
+ TInt error = iConfigurator.GetModuleIniData(KNameDummyCpm(), data, actualdatasize);
+ if (error == KErrOverflow)
+ {
+ INFO_PRINTF2(_L("GetModuleIniData returned KErrOverflow (%d) \n"), error);
+ data.ReAlloc(actualdatasize);
+ error = iConfigurator.GetModuleIniData(KNameDummyCpm(), data, actualdatasize);
+ SetTestStepResult(EFail);
+ }
+ else if (error == KErrRSModuleUnknown )
+ {
+ INFO_PRINTF2(_L("GetModuleIniData returned KErrRSModuleUnknown (%d) \n"), error);
+ SetTestStepResult(EFail);
+ }
+ else if (error == KErrNone)
+ {
+ INFO_PRINTF1(_L("GetModuleIniData Sucessful"));
+ }
+ else
+ {
+ INFO_PRINTF2(_L("GetModuleIniData (DummyCpm) returned Error (%d) \n"), error);
+ }
+
+ data.Close();
+ TRSIter position;
+ TCFModuleName moduleName;
+ _LIT8(KGroupName, "Group1");
+ TCFGroupName groupName(KGroupName);
+ //Enables the client to assemble a list of modules for matching one group by retrieving the
+ // name of one module at a time from all modules
+ while(KErrNone == iConfigurator.EnumerateModules(groupName, position , moduleName))
+ {
+ INFO_PRINTF1(_L("EnumerateModules Sucessful\n"));
+ }
+ }
+
+//NET-iConfigurator-I-0033-HP
+//Heap Allocation failure test for GetIni API
+CHeapFailurecancelGetIni ::CHeapFailurecancelGetIni ()
+/**
+ * Destructor
+ */
+ {
+ }
+
+CHeapFailurecancelGetIni ::~CHeapFailurecancelGetIni ()
+/**
+ * Constructor
+ */
+ {
+ SetTestStepName(KHeapFailurecancelGetIni );
+ }
+
+TVerdict CHeapFailurecancelGetIni ::doTestStepL()
+ {
+
+ SetTestStepResult(EFail);
+ TInt error = KErrNone;
+ TInt failRate = 0;
+
+ do
+ {
+ // The OOM loop
+ ++failRate;
+ //set the heap failure test to fail
+ //__UHEAP_SETFAIL(RHeap::EDeterministic, failRate);
+ //Mark the biging of the heap to test for the heap failure test
+ __UHEAP_MARK;
+ // Do the tests
+ TRAP(error, CancelGetIni());
+ //Mark the end of the heap to test for the heap failure test
+ __UHEAP_MARKEND;
+ //Reset the heap mark
+ __UHEAP_RESET;
+ if(error != KErrNone && error != KErrNoMemory)
+ {
+ INFO_PRINTF3(_L("Unexpected error occured in %S: %D"), &TestStepName(), error);
+ SetTestStepResult(EFail);
+ break;
+ }
+ else
+ {
+ SetTestStepResult(EPass);
+ }
+ }while(error != KErrNone);
+
+ return TestStepResult();
+ }
+
+//CancelGetIni function use the LoadCpm,UnLoadCpm,GetModuleIniData,EnumerateModules API to test for heap failure test
+void CHeapFailurecancelGetIni::CancelGetIni()
+ {
+
+ TCFModuleName DummyCpm;
+ _LIT8(KNameDummyCpm,"DummyCpm");
+ DummyCpm.Copy(KNameDummyCpm);
+ RBuf8 data;
+ data.Create(100);
+ TInt actualdatasize;
+
+ TInt error = iConfigurator.GetModuleIniData(DummyCpm, data, actualdatasize);
+ if (error == KErrOverflow)
+ {
+ INFO_PRINTF2(_L("GetModuleIniData returned KErrOverflow (%d) \n"), error);
+ data.ReAlloc(actualdatasize);
+ error = iConfigurator.GetModuleIniData(DummyCpm, data, actualdatasize);
+ }
+ else
+ if (error == KErrRSModuleUnknown )
+ {
+ INFO_PRINTF2(_L("GetModuleIniData returned KErrRSModuleUnknown (%d) \n"), error);
+ }
+ else
+ if (error == KErrNone)
+ {
+ INFO_PRINTF1(_L("GetModuleIniData Sucessful"));
+ }
+ else
+ {
+ INFO_PRINTF2(_L("GetModuleIniData (DummyCpm) returned Error (%d) \n"), error);
+ }
+ data.Close();
+ }
+
+//NET-iConfigurator-I-0034-HP
+//Heap Allocation failure test for GetIni API
+CHeapFailureEnumerateGrp ::CHeapFailureEnumerateGrp ()
+/**
+ * Destructor
+ */
+ {
+ }
+
+CHeapFailureEnumerateGrp ::~CHeapFailureEnumerateGrp ()
+/**
+ * Constructor
+ */
+ {
+ SetTestStepName(KHeapFailureEnumerateGrp );
+ }
+
+TVerdict CHeapFailureEnumerateGrp ::doTestStepL()
+ {
+
+ SetTestStepResult(EFail);
+ TInt error = KErrNone;
+ TInt failRate = 0;
+
+ do
+ {
+ // The OOM loop
+ ++failRate;
+ //set the heap failure test to fail
+ //__UHEAP_SETFAIL(RHeap::EDeterministic, failRate);
+ //Mark the biging of the heap to test for the heap failure test
+ __UHEAP_MARK;
+ // Do the tests
+ TRAP(error, EnumerateGrp());
+ //Mark the end of the heap to test for the heap failure test
+ __UHEAP_MARKEND;
+ //Reset the heap mark
+ __UHEAP_RESET;
+
+ if(error != KErrNone && error != KErrNoMemory)
+ {
+ INFO_PRINTF3(_L("Unexpected error occured in %S: %D"), &TestStepName(), error);
+ SetTestStepResult(EFail);
+ break;
+ }
+ else
+ {
+ SetTestStepResult(EPass);
+ }
+ }while(error != KErrNone);
+
+ return TestStepResult();
+ }
+
+
+void CHeapFailureEnumerateGrp::EnumerateGrp()
+ {
+ TRSIter position;
+ TCFModuleName moduleName;
+ _LIT8(KGroupName, "Group1");
+
+ TCFGroupName groupName(KGroupName);
+ //Enables the client to assemble a list of modules for matching group.
+ while(KErrNone == iConfigurator.EnumerateModules(groupName, position , moduleName))
+ {
+ INFO_PRINTF1(_L("EnumerateModules Sucessful\n"));
+ }
+
+ }
+
+
+