commsfwutils/commsbufs/TE_mbufmgr/src/TestStepCTMbufmgr.cpp
author hgs
Mon, 06 Sep 2010 13:49:23 +0100
changeset 72 ae47d0499bee
permissions -rw-r--r--
201033_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     2
// All rights reserved.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     7
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    10
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    11
// Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    12
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    13
// Description:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    14
// Contains definition of CTestStepCTMbufmgr which is the base class
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    15
// for all the Mbufmgr Test Step classes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    16
// 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    17
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    18
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    19
// EPOC includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    20
//#include <e32base.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    21
//#include <es_sock.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    22
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    23
// Test system includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    24
#include <es_mbuf.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    25
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    26
//#ifdef SYMBIAN_OLD_EXPORT_LOCATION
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    27
//#include "networking/log.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    28
//#include "networking/teststep.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    29
//#include "networking/testsuite.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    30
//#else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    31
//#include <networking/log.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    32
//#include <networking/teststep.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    33
//#include <networking/testsuite.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    34
//#endif
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    35
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    36
#include "TestStepCTMbufmgr.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    37
#include <comms-infras/commsbufpond.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    38
#include <comms-infras/commsbufpondop.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    39
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    40
// constructor
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    41
CTestStepCTMbufmgr::CTestStepCTMbufmgr() 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    42
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    43
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    44
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    45
// destructor
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    46
CTestStepCTMbufmgr::~CTestStepCTMbufmgr()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    47
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    48
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    49
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    50
void CTestStepCTMbufmgr::StripeMem(TUint8 *aBuf, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    51
								   TInt aStartPos, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    52
								   TInt anEndPos, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    53
								   TUint aStartChar, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    54
								   TUint anEndChar)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    55
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    56
	TUint character=aStartChar;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    57
	for (TInt i=aStartPos;i<anEndPos;i++)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    58
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    59
		aBuf[i]=(TText8)character;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    60
		if(++character>anEndChar) character=aStartChar;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    61
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    62
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    63
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    64
void CTestStepCTMbufmgr::StripeDes(TDes8 &aBuf, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    65
								   TInt aStartPos, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    66
								   TInt anEndPos, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    67
								   TUint aStartChar, 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    68
								   TUint anEndChar)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    69
// Mark a buffer with repeating byte pattern
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    70
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    71
	__ASSERT_ALWAYS(aStartChar<=anEndChar, User::Panic(_L("MBufTest"),0));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    72
	__ASSERT_ALWAYS(aStartPos<=anEndPos, User::Panic(_L("MBufTest"),0));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    73
	__ASSERT_ALWAYS(anEndPos<=aBuf.Length(), User::Panic(_L("MBufTest"),0));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    74
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    75
	StripeMem((TUint8 *)aBuf.Ptr(), aStartPos, anEndPos, aStartChar, anEndChar);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    76
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    77
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    78
// create an mbuf manager instance with some arbitrary default mbuf size alloc info
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    79
// - refer CMBufManager::NewL notes regarding explaination of why this is deliberately not done within the mbuf manager
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    80
static const TInt KMBuf_MBufSize = 128;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    81
static const TInt KMBuf_MinGrowth = 64;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    82
static const TInt KMBuf_GrowthThreshold = 40;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    83
#define SYMBIAN_MBUFMGR_BACKGROUND_ALLOCATION
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    84
#ifndef SYMBIAN_MBUFMGR_BACKGROUND_ALLOCATION
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    85
static const TInt KMBuf_InitialAllocation = 128;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    86
#endif
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    87
void CTestStepCTMbufmgr::CreateInstanceMBufMgrL(TInt aMaxHeapSize)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    88
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    89
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    90
	RArray<TCommsBufPoolCreateInfo> poolInfoArray;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    91
	TCommsBufPoolCreateInfo createInfo;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    92
#ifdef SYMBIAN_MBUFMGR_BACKGROUND_ALLOCATION
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    93
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    94
	// this method used for tests that dont do background allocation so make the 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    95
	// pool big enough to fill the heap
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    96
	createInfo.iBufSize = KMBuf_MBufSize;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    97
	createInfo.iInitialBufs = (aMaxHeapSize/(KMBuf_MBufSize+sizeof(RMBuf)))-1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    98
	createInfo.iGrowByBufs = KMBuf_MinGrowth;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    99
	createInfo.iMinFreeBufs = KMBuf_GrowthThreshold;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   100
	createInfo.iCeiling = aMaxHeapSize/KMBuf_MBufSize;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   101
#else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   102
	createInfo.iBufSize = KMBuf_MBufSize;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   103
	createInfo.iInitialBufs = KMBuf_InitialAllocation;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   104
	createInfo.iGrowByBufs = KMBuf_MinGrowth;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   105
	createInfo.iMinFreeBufs = KMBuf_GrowthThreshold;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   106
	createInfo.iCeiling = aMaxHeapSize/KMBuf_MBufSize;	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   107
#endif
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   108
	poolInfoArray.Append ( createInfo );		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   109
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   110
	User::LeaveIfError(iBufPond.Open(poolInfoArray));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   111
	poolInfoArray.Close ();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   112
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   113
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   114
void CTestStepCTMbufmgr::CreateInstanceMBufMgrL(RArray<TCommsBufPoolCreateInfo>& aPoolCreateInfo)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   115
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   116
	User::LeaveIfError(iBufPond.Open(aPoolCreateInfo));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   117
	}