telephonyprotocols/psdagt/TS_PsdAgt/PsdAgtTestOOM.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/psdagt/TS_PsdAgt/PsdAgtTestOOM.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,249 @@
+// Copyright (c) 2001-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:
+// PsdAgtTestClosure.cpp
+// This contains PsdAgt TestCase Test 13.1 - 13.2
+// 
+//
+
+// EPOC includes
+#include <e32base.h>
+#include <in_sock.h>
+
+// Test system includes
+#include "networking/log.h"
+#include "networking/teststep.h"
+#include "TestStepPsdAgt.h"
+#include "TestSuitePsdAgt.h"
+
+// COMMDB Database Undo
+#include "DbUndo.h"
+
+// RPacketContext
+#include <etelpckt.h> 
+
+// EPsdStartingConfiguration
+#include <psdprog.h>
+
+// EConnectionOpen
+#include <connectprog.h>
+
+// Class definitions
+#include "PsdAgtTestOOM.h"
+
+
+#define MaxAllocationFailures 1000
+
+// Test case 15.1
+enum TVerdict CPsdAgtTest15_1::doPsdAgtTestStepL( void )
+	{
+	TInt failCount=1;
+	TInt ret=-1;
+
+	TRealAgtNotify agtNotify; 
+	
+	agtNotify.SetTestCase(1501);
+
+	while(failCount < MaxAllocationFailures)
+		{
+		// Mark heap and set allocation to fail
+		__UHEAP_MARK;		
+		__UHEAP_FAILNEXT(failCount);
+
+		Log(_L("Incrementing __HEAP_FAILNEXT() to %d"),failCount);
+
+		// Connect, most likely fail at some point
+		TRAP(ret,NormalConnectOOML());
+	
+		User::After(200000); // Allow async libraries to unload
+
+		// Check all heap is free'd
+		__UHEAP_MARKEND;
+		
+		if(ret == 0)
+			{
+			// Allocation failure has been moved all the way through the test
+			// Succeeded after failCount allocations
+			return iTestStepResult;
+			}
+		else 
+			{
+			Log(_L("NormalConnectL : Failed with %d"),ret);
+
+			// Reset test result to pass since the allocation failure most
+			// likely caused it to fail
+			iTestStepResult = EPass;
+
+			// Try failing a little further into the process
+			failCount++;
+			}
+		}
+
+	// We must have reached our maximum number of allocation failures
+	// There must be some other problem within the NormalConnect() function
+	iTestStepResult=EFail;
+
+	return iTestStepResult;
+	}
+
+// Test case 15.2
+enum TVerdict CPsdAgtTest15_2::doPsdAgtTestStepL( void )
+	{
+	TInt failCount=1;
+	TInt ret=-1;
+	
+	TRealAgtNotify agtNotify; 
+	agtNotify.SetTestCase(1502);
+	SetGPRSModeL(agtNotify);
+	
+	while(failCount < MaxAllocationFailures)
+		{
+		// Mark heap and set allocation to fail
+		__UHEAP_MARK;		
+		__UHEAP_FAILNEXT(failCount);
+
+		Log(_L("Incrementing __HEAP_FAILNEXT() to %d"),failCount);
+
+		// Connect, most likely fail at some point
+		TRAP(ret,NormalConnectOOML());
+	
+		User::After(200000); // Allow async libraries to unload
+
+		// Check all heap is free'd
+		__UHEAP_MARKEND;
+		
+			
+		if(ret==0)
+			{
+			// Allocation failure has been moved all the way through the test
+			// Succeeded after failCount allocations
+			return iTestStepResult;
+			}
+		else 
+			{
+			// Reset test result to pass since the allocation failure most
+			// likely caused it to fail
+			iTestStepResult = EPass;
+	
+			// Try failing a little further into the process
+			failCount++;
+			}
+		}
+
+	// We must have reached our maximum number of allocation failures
+	// There must be some other problem within the NormalConnect() function
+	iTestStepResult=EFail;
+
+	return iTestStepResult;
+	}
+
+// Test case 15.3
+enum TVerdict CPsdAgtTest15_3::doPsdAgtTestStepL( void )
+	{
+	TInt failCount=1;
+	TInt ret=-1;
+	
+	TRealAgtNotify agtNotify; 
+	agtNotify.SetTestCase(1503);
+
+	while(failCount < MaxAllocationFailures)
+		{
+		// Mark heap and set allocation to fail
+		__UHEAP_MARK;		
+		__UHEAP_FAILNEXT(failCount);
+
+		Log(_L("Incrementing __HEAP_FAILNEXT() to %d"),failCount);
+
+		// Connect, most likely fail at some point
+		TRAP(ret,ReConnectOOML());
+	
+		User::After(200000); // Allow async libraries to unload
+
+		// Check all heap is free'd
+		__UHEAP_MARKEND;
+		
+		
+		if(ret==0)
+			{
+			// Allocation failure has been moved all the way through the test
+			// Succeeded after failCount allocations
+			return iTestStepResult;
+			}
+		else 
+			{
+			// Reset test result to pass since the allocation failure most
+			// likely caused it to fail
+			iTestStepResult = EPass;
+	
+			// Try failing a little further into the process
+			failCount++;
+			}
+		}
+
+	// We must have reached our maximum number of allocation failures
+	// There must be some other problem within the ReConnectL() function
+	iTestStepResult=EFail;
+
+	return iTestStepResult;
+	}
+
+// Test case 15.4
+enum TVerdict CPsdAgtTest15_4::doPsdAgtTestStepL( void )
+	{
+	TInt failCount=1;
+	TInt ret=-1;
+	
+	TRealAgtNotify agtNotify; 
+	agtNotify.SetTestCase(1504);
+	SetGPRSModeL(agtNotify);
+	
+	while(failCount < MaxAllocationFailures)
+		{
+		// Mark heap and set allocation to fail
+		__UHEAP_MARK;		
+		__UHEAP_FAILNEXT(failCount);
+
+		Log(_L("Incrementing __HEAP_FAILNEXT()to %d"),failCount);
+
+		// Connect, most likely fail at some point
+		TRAP(ret,ReConnectOOML());
+	
+		User::After(200000); // Allow async libraries to unload
+
+		// Check all heap is free'd
+		__UHEAP_MARKEND;
+		
+			
+		if(ret==0)
+			{
+			// Allocation failure has been moved all the way through the test
+			// Succeeded after failCount allocations
+			return iTestStepResult;
+			}
+		else 
+			{
+			// Reset test result to pass since the allocation failure most
+			// likely caused it to fail
+			iTestStepResult = EPass;
+	
+			// Try failing a little further into the process
+			failCount++;
+			}
+		}
+
+	// We must have reached our maximum number of allocation failures
+	// There must be some other problem within the NormalConnect() function
+	iTestStepResult=EFail;
+
+	return iTestStepResult;
+	}