commsfwutils/commsbufs/TS_mbufmgr/Test06SplitL.cpp
branchRCL_3
changeset 29 9644881fedd0
parent 0 dfb7c4ff071f
child 66 cbb19216b74d
--- a/commsfwutils/commsbufs/TS_mbufmgr/Test06SplitL.cpp	Tue May 11 17:20:19 2010 +0300
+++ b/commsfwutils/commsbufs/TS_mbufmgr/Test06SplitL.cpp	Tue May 25 14:00:39 2010 +0300
@@ -61,6 +61,8 @@
 		{
 		return EFail;
 		}
+	TBool forceSmallBuf = EFalse;
+    bRet = GetIntFromConfig(_L("MBufMgrTest06"), _L("ForceSmallBuf"), forceSmallBuf);
  	Log(_L("     ------- Chain & Desc LENGTH   = %d --"), aLength);
  	Log(_L("     ------- OFFSET where to Split = %d --"), aOffset);
 	if ( (aLength > 1000)    ||(aLength <0) ||
@@ -79,7 +81,36 @@
 	Log(_L("  01 Creating CMBufManager and installing active scheduler:"));
     CleanupStack::PushL( iActSch = new(ELeave) CActiveScheduler );
 	CActiveScheduler::Install(iActSch);
-	CreateInstanceMBufMgrL(KMBufDefaultHeapSize);
+
+	enum { KBigBuf = 256, KSmallBuf = 128 };
+	if(forceSmallBuf)
+	    {
+        RArray<TCommsBufPoolCreateInfo> createInfoArray;
+        
+        TCommsBufPoolCreateInfo createInfo;
+        createInfo.iBufSize = KSmallBuf;
+        createInfo.iInitialBufs = 128;
+        createInfo.iGrowByBufs = 64;
+        createInfo.iMinFreeBufs = 40;
+        createInfo.iCeiling = 410; 
+        createInfoArray.AppendL(createInfo);
+        
+        createInfo.iBufSize = KBigBuf;
+        createInfo.iInitialBufs = 3;
+        createInfo.iGrowByBufs = 1;
+        createInfo.iMinFreeBufs = 1;
+        createInfo.iCeiling = 3;
+        createInfoArray.AppendL(createInfo);
+
+        CreateInstanceMBufMgrL(createInfoArray);
+
+        createInfoArray.Close();
+	    }	
+	else
+	    {
+        CreateInstanceMBufMgrL(KMBufDefaultHeapSize);
+	    }
+	
 	CleanupClosePushL(iBufPond);
 
 	//-------------- substep 2 --------------------
@@ -111,6 +142,18 @@
 #endif
 		User::Leave(EFail);
 		}
+	
+	if(forceSmallBuf)
+	    {
+        for(RMBuf* buf = aChain1.First(); buf; buf = buf->Next())
+            {
+            if(buf->Size() != KBigBuf)
+                {
+                Log(_L("-- initial chain should be composed of %d buf, found %d buf"), KBigBuf, buf->Size());
+                User::Leave(EFail);
+                }
+            }
+	    }
 
 	//-------------- substep 6 --------------------
 	Log(_L("  06 Copy in Des1 into Chain1:"));
@@ -158,6 +201,16 @@
 #endif
 		User::Leave(EFail);
 		}
+	
+    if(forceSmallBuf)
+        {
+        if(!aChain2.First() || aChain2.First()->Size() != KSmallBuf ||
+           !aChain2.First()->Next() || aChain2.First()->Next()->Size() != KSmallBuf)
+            {
+            Log(_L("-- split chain should start with two %d buf"), KSmallBuf);
+            User::Leave(EFail);
+            }
+        }
 
 	//-------------- substep 9 --------------------
 	Log(_L("  09 Copy out Chain1 into Des2:"));
@@ -184,7 +237,7 @@
 	//-------------- substep 12 --------------------
 	Log(_L("  12 Copy out the whole Chain2 into Des2 at offset = OFFSET"));
 	TPtr8 dest((TUint8*)aDes2->Ptr() + aOffset, aLength-aOffset, aLength - aOffset);
-	aChain1.CopyOut(dest);
+	aChain2.CopyOut(dest);
 
 	//-------------- substep 13 --------------------
 	Log(_L("  13 Compare the content of Des1 & Des2:"));