diff -r 000000000000 -r dfb7c4ff071f commsprocess/commsrootserverconfig/Te_Configurator/src/heapfailureStep.cpp --- /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")); + } + + } + + +