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