--- a/smsprotocols/smsstack/smsprot/Test/TE_SMSPRTSTRESS/TE_smsprtstressbase.cpp Fri Mar 19 09:55:57 2010 +0200
+++ b/smsprotocols/smsstack/smsprot/Test/TE_SMSPRTSTRESS/TE_smsprtstressbase.cpp Fri Apr 16 16:12:37 2010 +0300
@@ -18,310 +18,33 @@
*/
#include "TE_smsprtstressbase.h"
+
#include <sacls.h>
#include <cfshared.h>
#include <c32root.h>
-
#include <connect/sbdefs.h>
-using namespace conn;
-TVerdict CSmsPrtStressTestStep::doTestStepPreambleL( void )
- {
- __UHEAP_MARK;
+//using namespace conn;
- iScheduler = new(ELeave) CActiveScheduler;
- CActiveScheduler::Install(iScheduler);
+TVerdict CSmsPrtStressTestStep::doTestStepPreambleL()
+ {
+ //base class preamble - marks the heap
+// CSmsBaseTestStep::doTestStepPreambleL();
- iSecureBackupEngine = CSBEClient::NewL();
- iSecureBackupEngine->SetBURModeL(TDriveList(_L8("C")),
- EBURNormal, ENoBackup);
-
- User::LeaveIfError(iFs.Connect());
-
- iSmsStackTestUtils = CSmsStackTestUtils::NewL(this, iFs);
+// iSecureBackupEngine = CSBEClient::NewL();
+// iSecureBackupEngine->SetBURModeL(TDriveList(_L8("C")),
+// EBURNormal, ENoBackup);
return TestStepResult() ;
}
-TVerdict CSmsPrtStressTestStep::doTestStepPostambleL( void )
+TVerdict CSmsPrtStressTestStep::doTestStepPostambleL()
{
- delete iSmsStackTestUtils;
- iSmsStackTestUtils = NULL;
-
- iFs.Close();
+// delete iSecureBackupEngine;
+// iSecureBackupEngine = NULL;
- delete iSecureBackupEngine;
- iSecureBackupEngine = NULL;
-
- delete iScheduler;
- iScheduler = NULL;
-
- __UHEAP_MARKEND;
-
- DoESockMemoryLeakTestL();
+ //base class postamble - unmarks the heap
+// CSmsBaseTestStep::doTestStepPostambleL();
return TestStepResult() ;
}
-
-
-void CSmsPrtStressTestStep::InitGlobalsL()
-/**
- * Initialise global variables.
- */
- {
- TRAPD( ret, ParseSettingsFromFileL());
-
- if (ret != KErrNone)
- INFO_PRINTF2(_L("ParseSettingsFromFileL [err=%d]"), ret);
-
- GetCmdLineArguments();
-
- INFO_PRINTF2(_L("TelNo: [%S]"), &iTelephoneNumber);
- INFO_PRINTF2(_L("ScNo: [%S]"), &iServiceCenterNumber);
-
- CommInit();
-
- iSmsStackTestUtils->CopyConfigFileL(KTSmsPrtStressConfigFileName);
- }
-
-
-void CSmsPrtStressTestStep::PrepareRegTestLC(RSocketServ& aSocketServer, TInt aTestNumber)
-/**
- * Run a specified test.
- * The test number is passed via property KUidPSSimTsyCategory. This will notify the SIM tsy
- * SIM tsy uses test number to parse correct script from config.txt
- * @param aTestNumber The test number corresponding the test case
- */
- {
- RProperty testNumberProperty;
- User::LeaveIfError(testNumberProperty.Attach(KUidPSSimTsyCategory, KPSSimTsyTestNumber));
- CleanupClosePushL(testNumberProperty);
-
- TRequestStatus status;
- testNumberProperty.Subscribe(status);
- User::LeaveIfError(testNumberProperty.Set(KUidPSSimTsyCategory,KPSSimTsyTestNumber,aTestNumber));
- User::WaitForRequest(status);
- TEST(status.Int() == KErrNone);
- TInt testNumberCheck;
- User::LeaveIfError(testNumberProperty.Get(testNumberCheck));
- if (aTestNumber != testNumberCheck)
- User::Leave(KErrNotFound);
-
- CleanupStack::PopAndDestroy(&testNumberProperty);
-
- INFO_PRINTF1(_L("Connecting to SocketServer ..."));
- TInt ret=aSocketServer.Connect(KSocketMessageSlots);
- TEST(ret == KErrNone);
- CleanupClosePushL(aSocketServer);
-
- INFO_PRINTF1(_L("Deleting segmentation and reassembly stores..."));
-
- // delete segmentation and reassembly store files before the test
- _LIT(KReassemblyStoreName,"C:\\Private\\101F7989\\sms\\smsreast.dat");
- _LIT(KSegmentationStoreName,"C:\\Private\\101F7989\\sms\\smssegst.dat");
-
- iFs.Delete(KReassemblyStoreName);
- iFs.Delete(KSegmentationStoreName);
- }
-
-
-TBool CSmsPrtStressTestStep::DoGetCmdLineArguments(TDes& aCmdarg, const TDesC& aToFind, TDes& aCmd)
- {
- if(( aCmdarg.FindF(aToFind)) != KErrNotFound )
- {
- TLex myLex( aCmdarg );
- myLex.Inc(aCmdarg.FindF(_L("="))+1);
- myLex.SkipSpace();
- myLex.Mark(); // remember where we are
- myLex.SkipCharacters(); // move to end of character token
- if (myLex.TokenLength() != 0) // if valid potential token
- {
- aCmd.Copy(myLex.MarkedToken()); // extract token
- return ETrue;
- }
- }
- return EFalse;
- }
-
-void CSmsPrtStressTestStep::GetCmdLineArguments()
- {
- CCommandLineArguments *cmdLine = NULL;
- TRAPD(err, cmdLine = CCommandLineArguments::NewL());
- if (err==KErrNone)
- {
- TInt numCmds = cmdLine->Count();
- TInt i=0;
- while (++i < numCmds)
- {
- TBuf<256> arg = cmdLine->Arg(i);
-
- // Reading the Service Centre Number
- _LIT( KSCno, "sc=");
- _LIT( KSCNO, "SC=");
- if( DoGetCmdLineArguments( arg, KSCno, iServiceCenterNumber )
- || DoGetCmdLineArguments( arg, KSCNO, iServiceCenterNumber ))
- continue;
-
- // Reading the Recipient Telephone Number
- _LIT( KTELno, "tel=");
- _LIT( KTELNO, "TEL=");
- if( DoGetCmdLineArguments( arg, KTELno, iTelephoneNumber )
- || DoGetCmdLineArguments( arg, KTELNO, iTelephoneNumber ))
- continue;
- }
- }
- delete cmdLine;
- cmdLine = NULL;
- }
-
-void CSmsPrtStressTestStep::ParseSettingsFromFileL()
- {
- CTestConfig* configFile = CTestConfig::NewLC(iFs,KGmsSmsConfigFileDir,KGmsSmsConfigFileName);
- const CTestConfigSection* cfgFile = configFile->Section(KSetupTelNumbers);
- if (cfgFile == NULL)
- User::Leave(KErrNotFound);
-
- const CTestConfigItem* item = cfgFile->Item(KServiceCenter,0);
- if (item == NULL)
- User::Leave(KErrNotFound);
-
- iServiceCenterNumber.Copy(item->Value());
-
- item = cfgFile->Item(KTelefoneNumber,0);
- if (item == NULL)
- User::Leave(KErrNotFound);
-
- iTelephoneNumber.Copy(item->Value());
-
- // beginning of the destruction
- CleanupStack::PopAndDestroy(configFile);//configFile
- }
-
-void CSmsPrtStressTestStep::EndRegTest()
-/**
- * Closes objects used at test harness
- */
- {
- INFO_PRINTF1(_L("Closing Reg Test"));
- User::After(2000000); //Wait a couple of seconds to avoid closing the SMS stack too early
- CleanupStack::PopAndDestroy(); //socketServer
- User::After(2000000); //Wait a couple of seconds to avoid closing the SMS stack too early
- }
-
-
-#if defined (__WINS__)
-#define PDD_NAME _L("ECDRV")
-#define PDD_NAME2 _L("ECDRV")
-#define LDD_NAME _L("ECOMM")
-#else
-#define PDD_NAME _L("EUART1")
-#define LDD_NAME _L("ECOMM")
-#endif
-
-
-TInt CSmsPrtStressTestStep::CommInit()
- {
- RFs fs;
- TInt err=fs.Connect(); // make sure the FileServer is alive (only needed for WINS test code)
- fs.Close();
-
- INFO_PRINTF1(_L("CommInit: Loading PDD ") );
- INFO_PRINTF1(PDD_NAME);
- INFO_PRINTF1(_L(""));
- err=User::LoadPhysicalDevice(PDD_NAME);
- if (err!=KErrNone && err!=KErrAlreadyExists)
- return(err);
-
- INFO_PRINTF1(_L("CommInit: Loading LDD ") );
- INFO_PRINTF1(LDD_NAME);
- INFO_PRINTF1(_L(""));
- err=User::LoadLogicalDevice(LDD_NAME );
- if (err!=KErrNone && err!=KErrAlreadyExists)
- return(err);
-
- INFO_PRINTF1(_L("CommInit: Starting C32 ") );
-
- err = StartC32();
- return (err == KErrNone || err == KErrAlreadyExists) ? KErrNone : err;
- }
-
-
-void CSmsPrtStressTestStep::DoESockMemoryLeakTestL()
- {
- //
- // Find the current number of leaked cells in ESock...
- //
- TInt ret, startLeakCounter;
-
- ret = RProperty::Get(KUidCommsProcess, KUidCommsModuleLeakCounter, startLeakCounter);
- if (ret == KErrNotFound)
- {
- // No variable to monitor, ESock is probably not in debug mode.
- return;
- }
- else
- {
- TESTL(ret == KErrNone);
- }
-
- //
- // Connect to Rootserver...
- //
- RRootServ rootserver;
-
- User::LeaveIfError(rootserver.Connect());
- CleanupClosePushL(rootserver);
-
- //
- // Shutdown all the ESock CPMs gracefully...
- //
- TRSIter iter;
- TCFModuleName modName;
- TRSModuleInfo modInfo;
- TRequestStatus statusArray[16];
- TInt statusCount = 0;
-
- while (rootserver.EnumerateModules(iter, modName) == KErrNone)
- {
- if (rootserver.GetModuleInfo(modName, modInfo) == KErrNone &&
- modInfo.iParams.iDll.MatchF(_L("*ESOCKSVR.DLL")) >= 0)
- {
- rootserver.UnloadCpm(statusArray[statusCount++], modInfo.iParams.iName,
- EGraceful);
- }
- }
-
- while (statusCount > 0)
- {
- statusCount--;
- User::WaitForRequest(statusArray[statusCount]);
- TEST(statusArray[statusCount] == KErrNone);
- }
-
- //
- // Close Rootserver session...
- //
- CleanupStack::PopAndDestroy(1, &rootserver);
-
- //
- // Get the latest number of leaked cells in ESock...
- //
- TInt finalLeakCounter;
-
- ret = RProperty::Get(KUidCommsProcess, KUidCommsModuleLeakCounter, finalLeakCounter);
- TESTL(ret == KErrNone);
-
- if (finalLeakCounter > startLeakCounter)
- {
- INFO_PRINTF1(_L("<font size=2 color=FF0000><B>A memory leak has been detected inside ESock - Check SMS Stack!</B></font>"));
- TEST(finalLeakCounter == startLeakCounter);
- }
-
- //
- // Restart C32...
- //
- _LIT(KDummyCMI, "");
- WarmBootC32(KDummyCMI);
- } // CSmsPrtStressTestStep::DoESockMemoryLeakTestL
-
-