commsfwutils/commsbufs/TS_mbufmgr/test17requestsizelimits.cpp
changeset 72 ae47d0499bee
parent 68 5da8188e392b
child 77 c9776eadbffd
--- a/commsfwutils/commsbufs/TS_mbufmgr/test17requestsizelimits.cpp	Tue Aug 24 14:43:02 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
-// Copyright (c) 2002-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:
-// Contains MBufMgr Test Step 17 for getting mbufs within request size limits
-// 
-//
-
-
-#include <e32base.h>
-
-// Test system includes
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-#include "networking/log.h"
-#include "networking/teststep.h"
-#else
-#include <networking/log.h>
-#include <networking/teststep.h>
-#endif
-#include "TestStepCTMbufmgr.h"
-#include "TestSuiteCTMbufmgr.h"
-
-#include "test17requestsizelimits.h"
-
-// RHeap information
-#include <comms-infras/mbufallocator.h>
-#include <comms-infras/commsbufpond.h>
-
-
-CTest17RequestSizeLimits::CTest17RequestSizeLimits()
-	{
-	iTestStepName = _L("MBufMgrTest17");// Store the name of this test case
-	}
-
-CTest17RequestSizeLimits::~CTest17RequestSizeLimits()
-	{
-	}
-
-void CTest17RequestSizeLimits::FillDes(TDes8 &aBuf, TInt aStartPos, TInt anEndPos, TUint aStartChar, TUint anEndChar)
-	{
-	StripeDes(aBuf, aStartPos, anEndPos, aStartChar, anEndChar);
-	}
-
-enum TVerdict CTest17RequestSizeLimits::doTestStepL(void)
-	{
-	__UHEAP_MARK;
-	
-#ifdef __CFLOG_ACTIVE
-	__CFLOG_CREATEL;
-	__CFLOG_OPEN;
-#endif
-	
-	//-------------- substep 1 --------------------
-	Log(_L("  01 Create CMBufManager and install active scheduler:"));
-    CleanupStack::PushL( iActSch = new(ELeave) CActiveScheduler );
-	CActiveScheduler::Install(iActSch);
-
-	// Create some initial pools
-	// AddL(KMBuf_MBufSize, KMBuf_InitialAllocation, KMBuf_MinGrowth, KMBuf_GrowthThreshold)
-	// Background memory allocation (CMBufPoolManager::RunL) is used more frequently if
-	// the KMBuf_MinGrowth and the KMBuf_GrowthThreshold are similar in size
-	// Synchronous allocation (AllocPool(*poolChain, growth, ETrue)) occurs when the
-	// requested size (iChain.CopyIn(size)) is larger than the KMBuf_MinGrowth
-	// Multiple threads attempt to grow different poolchains at the same time when there
-	// are a greater variety of pool sizes to grow.
-	// 16384
-	TInt totalPools = 5;
-	TInt poolSize = KMBufDefaultHeapSize/totalPools;	
-	RArray<TCommsBufPoolCreateInfo> createInfoArray;
-	
-	TCommsBufPoolCreateInfo createInfo;
-	createInfo.iBufSize = 128;
-	createInfo.iInitialBufs = 128;
-	createInfo.iGrowByBufs = 64;
-	createInfo.iMinFreeBufs = 40;
-	createInfo.iCeiling = poolSize/createInfo.iBufSize;
-
-	TCommsBufPoolCreateInfo createInfo2;
-	createInfo2.iBufSize = 256;
-	createInfo2.iInitialBufs = 64;
-	createInfo2.iGrowByBufs = 7;
-	createInfo2.iMinFreeBufs = 6;
-	createInfo2.iCeiling = poolSize/createInfo.iBufSize;	
-
-	TCommsBufPoolCreateInfo createInfo3;
-	createInfo3.iBufSize = 512;
-	createInfo3.iInitialBufs = 32;
-	createInfo3.iGrowByBufs = 6;
-	createInfo3.iMinFreeBufs = 5;
-	createInfo3.iCeiling = poolSize/createInfo.iBufSize;	
-
-	TCommsBufPoolCreateInfo createInfo4;
-	createInfo4.iBufSize = 1024;
-	createInfo4.iInitialBufs = 16;
-	createInfo4.iGrowByBufs = 5;
-	createInfo4.iMinFreeBufs = 4;
-	createInfo4.iCeiling = poolSize/createInfo.iBufSize;	
-
-	TCommsBufPoolCreateInfo createInfo5;
-	createInfo5.iBufSize = 2048;
-	createInfo5.iInitialBufs = 8;
-	createInfo5.iGrowByBufs = 4;
-	createInfo5.iMinFreeBufs = 3;
-	createInfo5.iCeiling = poolSize/createInfo.iBufSize;	
-
-	createInfoArray.Append(createInfo);
-	createInfoArray.Append(createInfo2);
-	createInfoArray.Append(createInfo3);
-	createInfoArray.Append(createInfo4);
-	createInfoArray.Append(createInfo5);
-	// Create 262144
-	CreateInstanceMBufMgrL(createInfoArray);
-	CleanupClosePushL(iBufPond);
-	createInfoArray.Close ();
-	RMBufAllocator allocator;
-	
-	//-------------- substep 2 --------------------
-	Log(_L("  02 Fill in the Des1 with a pattern:"));
-	TBuf8<5000> *aDes1 = NULL;
-	TRAPD(ret, aDes1 = new(ELeave) TBuf8<5000>);
-	if(ret != KErrNone)
-		return EFail;
-
-	aDes1->SetLength(5000);
-	FillDes(*aDes1, 0, 5000, 1, 1);
-	
-	TBool firstAllocFail = EFalse;
-	TBool secondAllocFail = EFalse;
-	TBool thirdAllocFail = EFalse;
-	
-	TUint time;
-	RMBufChain aChain;
-		
-	//-------------- substep 3 --------------------
-	Log(_L("  03 Allocate 5000-bytes long RMBufChain with 128-bytes long RMBuf:"));
-
-	time = User::FastCounter();
-	ret = aChain.Alloc(5000, 128, 128, allocator);
-	time = User::FastCounter() - time;
-	if (ret != KErrNone)
-		{
-		Log(_L("Error: Couldn't allocate RMBufChain:"));
-		User::Leave(EFail);
-		}
-	
-	//Copy in Des1 into Chain
-	aChain.CopyIn(aDes1->LeftTPtr(5000));
-	if (aChain.Length() != 5000)
-		{
-		Log(_L("Error: Allocated RMBufChain size does not match requested:"));
-		firstAllocFail = ETrue;
-		}
-	
-	TInt count = 0;
-	//Check RMBuf size is really 128
-	RMBuf* mBuf = aChain.First();
-	while (mBuf != NULL)
-		{
-		count++;
-		if (mBuf->Size() != 128)
-			{
-			Log(_L("Error: RMBuf size does not match requested:"));
-			firstAllocFail = ETrue;
-			break;
-			}
-		mBuf = mBuf->Next();
-		}
-	
-	if (firstAllocFail == EFalse)
-		{
-		_LIT(aLog1, "     Info: Time to allocate 5000-bytes long RMBufChain with %d 128-bytes long RMBuf: %d"); 
-		Log(aLog1, count, time);
-		}
-	
-	//-------------- substep 4 --------------------
-	Log(_L("  04 Deallocating RMBufChain"));
-	aChain.Free();
-
-	//-------------- substep 5 --------------------
-	Log(_L("  05 Allocate 50-bytes long RMBufChain with 1024-bytes long RMBuf:"));
-
-	time = User::FastCounter();
-	ret = aChain.Alloc(50, 1024, 1024, allocator);
-	time = User::FastCounter() - time;
-	if (ret != KErrNone)
-		{
-		Log(_L("Error: Couldn't allocate RMBufChain:"));
-		User::Leave(EFail);
-		}
-	
-	//Copy in Des1 into Chain
-	aChain.CopyIn(aDes1->LeftTPtr(50));
-	if (aChain.Length() != 50)
-		{
-		Log(_L("Error: Allocated RMBufChain size does not match requested:"));
-		secondAllocFail = ETrue;
-		}
-	
-	count = 0;
-	//Check RMBuf size is really 1024
-	mBuf = aChain.First();
-	while (mBuf != NULL)
-		{
-		count++;
-		if (mBuf->Size() != 1024)
-			{
-			Log(_L("Error: RMBuf size does not match requested:"));
-			secondAllocFail = ETrue;
-			break;
-			}
-		mBuf = mBuf->Next();
-		}
-	
-	if (secondAllocFail == EFalse)
-		{
-		_LIT(aLog2, "     Info: Time to allocate 50-bytes long RMBufChain with %d 1024-bytes long RMBuf: %d"); 
-		Log(aLog2, count, time);
-		}
-	
-	//-------------- substep 6 --------------------
-	Log(_L("  06 Deallocating RMBufChain"));
-	aChain.Free();
-	
-	//-------------- substep 7 --------------------
-	Log(_L("  07 Allocate 1500-bytes long RMBufChain with RMBuf size between 1100 and 2000:"));
-
-	ret = aChain.Alloc(1500, 1100, 2000, allocator);
-	if (ret == KErrNone)
-		{
-		Log(_L("Error: Allocated with false size RMBuf:"));
-		thirdAllocFail = ETrue;
-		aChain.Free();
-		}
-	else
-		Log(_L("     Info: Couldn't allocate because no MBuf with size between 1100 and 2000:"));
-
-	//-------------- substep 8 --------------------
-	Log(_L("  08 Allocate 1500-bytes long RMBufChain with RMBuf min. size 2100:"));
-
-	ret = aChain.Alloc(1500, 2100, allocator);
-	if (ret == KErrNone)
-		{
-		Log(_L("Error: Allocated with false size RMBuf:"));
-		thirdAllocFail = ETrue;
-		aChain.Free();
-		}
-	else
-		Log(_L("     Info: Couldn't allocate because no MBuf with size greater than 2100:"));
-	
-	//-------------- substep 9 --------------------
-	Log(_L("  09 Allocate 1500-bytes long RMBufChain with RMBuf max. size 100:"));
-
-	ret = aChain.Alloc(1500, 0, 100, allocator);
-	if (ret == KErrNone)
-		{
-		Log(_L("Error: Allocated with false size RMBuf:"));
-		thirdAllocFail = ETrue;
-		aChain.Free();
-		}
-	else
-		Log(_L("     Info: Couldn't allocate because no MBuf with size smaller than 100:"));
-
-	//-------------- substep 10 --------------------
-	Log(_L("  10 Exhaust 512-bytes long RMBufChain :"));
-	
-	RMBufChain bChain;
-	
-	while (allocator.BytesAvailable(512) / 512 > 0)
-		{
-		ret = aChain.Alloc(500, allocator);
-		if (ret != KErrNone)
-			{
-			Log(_L("Error: Couldn't allocate RMBufChain:"));
-			User::Leave(EFail);
-			}
-	
-		// Now grow the chain
-		bChain.Append(aChain);
-		}
-	
-	//-------------- substep 11 --------------------
-	Log(_L("  15 Allocate 500-bytes long RMBufChain with 512-bytes long RMBuf:"));
-
-	ret = aChain.Alloc(500, 512, 512, allocator);
-	if (ret == KErrNone)
-		{
-		Log(_L("Error: Allocated with false size RMBuf:"));
-		thirdAllocFail = ETrue;
-		aChain.Free();
-		}
-	else
-		Log(_L("     Info: Couldn't allocate because no more 512-bytes long RMBuf:"));
-	
-	//-------------- substep 12 --------------------
-	Log(_L("  12 Deallocating RMBufChain"));
-	bChain.Free();
-
-	delete aDes1;
-	
-	//-------------- substep 13 --------------------
-	Log(_L("  13 Clean up stack:"));
-    CleanupStack::PopAndDestroy();
-	CActiveScheduler::Install(NULL);
-	CleanupStack::PopAndDestroy(iActSch);
-	
-#ifdef __CFLOG_ACTIVE
-	__CFLOG_CLOSE;
-	__CFLOG_DELETE;
-#endif
-
-	if (firstAllocFail || secondAllocFail || thirdAllocFail)
-		return EFail;
-	
-	__UHEAP_MARKEND;
-	return EPass;
-	}