smsprotocols/smsstack/smsprot/Test/TE_SMSEMSPRT/TE_SMSEMSPRTBASE.cpp
changeset 20 244d7c5f118e
parent 0 3553901f7fa8
child 24 6638e7f4bd8f
--- a/smsprotocols/smsstack/smsprot/Test/TE_SMSEMSPRT/TE_SMSEMSPRTBASE.cpp	Fri Mar 19 09:55:57 2010 +0200
+++ b/smsprotocols/smsstack/smsprot/Test/TE_SMSEMSPRT/TE_SMSEMSPRTBASE.cpp	Fri Apr 16 16:12:37 2010 +0300
@@ -17,284 +17,26 @@
  @file
 */
 
-#include <commsdattypesv1_1.h>
-#include "metadatabase.h"
-
 #include "TE_SMSEMSPRTBASE.h"
-#include <sacls.h>
 
-#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
+#include <commsdattypesv1_1.h>
+#include <sacls.h>
+#include <metadatabase.h>
+
+#include "smsstacktestconsts.h"
 
 using namespace CommsDat;
 
-CSmsMessage* CSmsEmsPrtTestStep::ConfigCreateSmsMessageLC(const TDesC& aDes,
-				TSmsDataCodingScheme::TSmsAlphabet aAlphabet)
-	{
-	_LIT(KRadiolinjaSC,"+358508771010");	// Radiolinja SC
-	_LIT(KPekka,"+358408415528");			// Pekka's telephone number
-
-	// Set destination and SC numbers
-	iTelephoneNumber=KPekka;
-	iServiceCenterNumber=KRadiolinjaSC;
-
-	CSmsMessage* smsMessage = CreateSmsMessageL(aDes, aAlphabet);
-	CleanupStack::PushL(smsMessage);
-	return smsMessage;
-	}
-
-CSmsMessage* CSmsEmsPrtTestStep::CreateSmsMessageL(const TDesC& aDes, TSmsDataCodingScheme::TSmsAlphabet aAlphabet, CSmsPDU::TSmsPDUType aType)
-/**
- *  Create a uninitialised SMS message
- *  @param aDes contains text that will be inserted to the pdu
- *  @param aAlphabet describes the alphabet of the pdu
- *  @return CSmsMessage* :Pointer to the created CSmsMessage object.
- */
-	{
-	CSmsBuffer* buffer=CSmsBuffer::NewL();
-	CSmsMessage* smsMessage=CSmsMessage::NewL(iFs, aType, buffer);
-	CleanupStack::PushL(smsMessage);
-
-	TSmsUserDataSettings smsSettings;
-	smsSettings.SetAlphabet(aAlphabet);
-	smsSettings.SetTextCompressed(EFalse);
-	smsMessage->SetUserDataSettingsL(smsSettings);
-
-	smsMessage->SetToFromAddressL(iTelephoneNumber);
-	smsMessage->SmsPDU().SetServiceCenterAddressL(iServiceCenterNumber);
-	buffer->InsertL(0,aDes);
-	CleanupStack::Pop(smsMessage);
-	return smsMessage;
-	}
-
-TBool CSmsEmsPrtTestStep::SendReceiveMsgL(CSmsMessage& aMsg)
-	{
-	// Send SMS
-	SendSmsL(&aMsg,iSocket);
-
-	CSmsMessage* rxMsg;
-
-	// Now receive and compare
-	INFO_PRINTF1(_L("waiting for incoming SMS...") );
-	WaitForRecvL(iSocket);
-	rxMsg = RecvSmsL(iSocket);
-
-	CleanupStack::PushL(rxMsg);
-	TBool comp = EmsTestUtils::CompareEmsMsgL(aMsg, *rxMsg);
-	TEST(comp);
-
-	// compare OK
-	INFO_PRINTF1(_L("Sent and received PDUs compare OK..."));
-
-	// Now make sure the received message is valid - this can be
-	// tested by ensuring that NumMessagePDUsL can be called without
-	// leaving
-	rxMsg->NumMessagePDUsL();
-
-	CleanupStack::PopAndDestroy(rxMsg);
-
-	// return the result of the comparison
-	return comp;
-	}
-
-void CSmsEmsPrtTestStep::SendSmsL(const CSmsMessage* aSms, RSocket& aSocket)
-/**
- *  Stream aSms out to the socket server
- *  @param aSms contains the sms tpdu that will be streamed to the sms stack
- *  @param aSocket is used to stream the aSms to the sms stack
- *  @leave Leaves if streaming the message to the socket server doesn't succeed
- *  @leave Leaves if sending is completed with error code
- */
-	{
-	TBool tryAgain = ETrue;
-	TInt sendTry (0);
-	TRequestStatus status = KErrNone;
-
-	while (tryAgain && sendTry < 3)
-		{
-		RSmsSocketWriteStream writestream(aSocket);
-		TRAPD(ret,writestream << *aSms);
-
-		TRAP(ret,writestream.CommitL());
-
-		TPckgBuf<TUint> sbuf;
-		aSocket.Ioctl(KIoctlSendSmsMessage,status,&sbuf, KSolSmsProv);
-		User::WaitForRequest(status);
-		INFO_PRINTF2(_L("SendSmsL - sendSmsMessage returned %d"),status.Int());
-		if (status.Int() )
-			{
-			tryAgain = ETrue;
-			INFO_PRINTF1(_L("Try again... "));
-			sendTry++;
-			}
-		else tryAgain = EFalse;
-		}
-
-	TEST(status.Int() == KErrNone);
-
-    PrintMessageL(aSms);
-	}
-
-void CSmsEmsPrtTestStep::PrintMessageL(const CSmsMessage* aSms)
-/**
- *  Print the content of SMS to the console
- */
-	{
-	CSmsBuffer& smsbuffer = (CSmsBuffer&)aSms->Buffer();
-	const TInt len = smsbuffer.Length();
-	HBufC* hbuf = HBufC::NewL(len);
-	TPtr ptr = hbuf->Des();
-	smsbuffer.Extract(ptr,0,len);
-	INFO_PRINTF1(_L("SMS contains..."));
-
-	for (TInt j = 0; j < len; j++)
-        ptr[j]=IsCharDisplayable((TText8)ptr[j]);
-
-
-    INFO_PRINTF1(ptr);
-	INFO_PRINTF1(_L(""));
-
-	delete hbuf;
-	}
-
-TText8 CSmsEmsPrtTestStep::IsCharDisplayable( const TText8 aChar )
-	{
-	if(( aChar >= 0x20) && (aChar <= 0x80))
-		return aChar;
-	else
-		return '.';
-	}
-
-
-
-void CSmsEmsPrtTestStep::WaitForRecvL(RSocket& aSocket)
-/**
- *  Wait for an Sms to be received
- *  @param aSocket The status is return to this socket
- *  @leave Leaves if receiving is completed with error code
- */
-	{
-	TPckgBuf<TUint> sbuf;
-	sbuf()=KSockSelectRead;
-	TRequestStatus status;
-	aSocket.Ioctl(KIOctlSelect,status,&sbuf,KSOLSocket);
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);
-	}
-
-CSmsMessage* CSmsEmsPrtTestStep::RecvSmsL(RSocket& aSocket, TInt aIoctl)
-/**
- *  Receive an Sms
- *  @param aSocket is used to stream the sms message from the socket server
- *  @return CSmsMessage* :Sms message from Sms stack
- *  @leave Leaves if streaming the message from the socket server doesn't succeed
- */
-	{
-	CSmsBuffer* buffer=CSmsBuffer::NewL();
-	CSmsMessage* smsMessage=CSmsMessage::NewL(iFs, CSmsPDU::ESmsSubmit,buffer);
-	CleanupStack::PushL(smsMessage);
-
-	RSmsSocketReadStream readstream(aSocket);
-	TRAPD(ret,readstream >> *smsMessage);
-	TEST(ret == KErrNone);
-
-	TPckgBuf<TUint> sbuf;
-	TRequestStatus status;
-	aSocket.Ioctl(aIoctl, status, &sbuf, KSolSmsProv);
-	User::WaitForRequest(status);
-
-	CleanupStack::Pop(smsMessage);
-	return smsMessage;
-	}
-
-void CSmsEmsPrtTestStep::PrepareRegTestL()
-/**
- *  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);
-	TInt testNumber = GetTestNumber();
-	User::LeaveIfError(testNumberProperty.Set(KUidPSSimTsyCategory,KPSSimTsyTestNumber,testNumber));
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);
-	TInt testNumberCheck;
-	User::LeaveIfError(testNumberProperty.Get(testNumberCheck));
-	if (testNumber != testNumberCheck)
-		User::Leave(KErrNotFound);
-
-	CleanupStack::PopAndDestroy(&testNumberProperty);
-
-    INFO_PRINTF1(_L("Connecting to SocketServer ..."));
-	TInt ret=iSocketServ.Connect(KSocketMessageSlots);
-    TEST(ret == KErrNone);
-
-	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);
-	}
-
-void CSmsEmsPrtTestStep::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
-	iSocketServ.Close();
-	User::After(2000000); //Wait a couple of seconds to avoid closing the SMS stack too early
-	}
-
 TVerdict CSmsEmsPrtTestStep::doTestStepPreambleL()
 	{
-	__UHEAP_MARK;
-
-	User::LeaveIfError(iFs.Connect());
-
-    TRAPD(ret, ParseSettingsFromFileL());
-	if (ret != KErrNone)
-		INFO_PRINTF2(_L("ParseSettingsFromFileL [err=%d]"), ret);
-
-	iSmsStackTestUtils = CSmsStackTestUtils::NewL(this, iFs);
-
-	PrepareRegTestL() ;
-
-	iSmsStackTestUtils->OpenSmsSocketL(iSocketServ, iSocket, ESmsAddrRecvAny);
+	//base class preamble - marks the heap
+	CSmsBaseTestStep::doTestStepPreambleL();
+	
+	iSmsStackTestUtils->OpenSmsSocketL(iSocketServer, iSocket, ESmsAddrRecvAny);
 
-#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
-	CMDBSession* db = CMDBSession::NewL(KCDVersion1_2);
-#else
-	CMDBSession* db = CMDBSession::NewL(KCDVersion1_1);
-#endif
-    CleanupStack::PushL(db);
-
-    CMDBField<TUint32>* smsReceiveModeField = new(ELeave) CMDBField<TUint32>(KCDTIdSMSReceiveMode);
-    CleanupStack::PushL(smsReceiveModeField);
-	*smsReceiveModeField = RMobileSmsMessaging::EReceiveUnstoredClientAck;
-	smsReceiveModeField->SetRecordId(1); //it's GlobalSettingsRecord
-	smsReceiveModeField->ModifyL(*db);
-
-	CleanupStack::PopAndDestroy(smsReceiveModeField);
-	CleanupStack::PopAndDestroy(db);
-
+    // Set destination and SC numbers
+    iTelephoneNumber=KPekka;
+    iServiceCenterNumber=KRadiolinjaSC;
 	return TestStepResult();
 	}
 
@@ -302,115 +44,37 @@
 	{
 	iSocket.Close();
 
-	EndRegTest() ;
-
-	delete iSmsStackTestUtils;
-	iSmsStackTestUtils = NULL;
-
-	iFs.Close();
-
-	__UHEAP_MARKEND;
+    //base class postamble - unmarks the heap
+    CSmsBaseTestStep::doTestStepPostambleL();
 
  	return TestStepResult();
 	}
 
-TInt CSmsEmsPrtTestStep::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 ") );
+ TBool CSmsEmsPrtTestStep::SendReceiveMsgL(CSmsMessage& aMsg)
+     {
+     // Send SMS
+     SendSmsL(&aMsg,iSocket);
 
-    err = StartC32();
-    return (err == KErrNone || err == KErrAlreadyExists) ? KErrNone : err;
-    }
-
- void CSmsEmsPrtTestStep::CreateCommDBL()
-/**
- *  @test Create a special CommDb Database for this test harness.
- */
-    {
-    INFO_PRINTF1(_L("Creating of the commdb for the TE_SmsEmsPrt") );
+     CSmsMessage* rxMsg;
 
-    
-#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
-	CMDBSession* db = CMDBSession::NewL(KCDVersion1_2);
-#else
-	CMDBSession* db = CMDBSession::NewL(KCDVersion1_1);
-#endif
-    CleanupStack::PushL(db);
-    db->OpenTransactionL();
-    CMDBRecordSet<CCDModemBearerRecord>* modemBearerRecordSet = new(ELeave) CMDBRecordSet<CCDModemBearerRecord>(KCDTIdModemBearerRecord);
-    CleanupStack::PushL(modemBearerRecordSet);
- 	modemBearerRecordSet->LoadL(*db);
-
-	_LIT(KDummy0, "DUMMY::0");
-	_LIT(KDummy, "DUMMY");
-	_LIT(KSim, "SIM");
+     // Now receive and compare
+     WaitForRecvL(iSocket);
+     rxMsg = RecvSmsL(iSocket);
 
-    RPointerArray<CCDModemBearerRecord>& resultSet = (RPointerArray<CCDModemBearerRecord>&) modemBearerRecordSet->iRecords;
-
-    CCDModemBearerRecord *modemRecord = static_cast<CCDModemBearerRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord));
-    CleanupStack::PushL(modemRecord);
+     CleanupStack::PushL(rxMsg);
+     TBool comp = EmsTestUtils::CompareEmsMsgL(aMsg, *rxMsg);
+     TEST(comp);
 
-    for (TInt i=0; i<resultSet.Count(); i++)
-    	{
-    		modemRecord = resultSet[i];
-    	    modemRecord->iPortName = KDummy0;
-       	    modemRecord->iCsyName = KDummy;
-       	    modemRecord->iTsyName = KSim;
-    		modemRecord->iMessageCentreNumber = iServiceCenterNumber;
-			modemRecord->ModifyL(*db);
-			modemRecord = NULL;
-    	}
-    db->CommitTransactionL();
-    resultSet.Close();
-    CleanupStack::PopAndDestroy(2);
-    CleanupStack::PopAndDestroy(db);
-    }
-
-
-// Here are the section names
-_LIT8(KSetupTelNumbers,           "Defaults");
+     // compare OK
+     INFO_PRINTF1(_L("Sent and received PDUs compare OK..."));
 
-// Here are the item names
-_LIT8(KServiceCenter,               "ServiceCenter");
-_LIT8(KTelefoneNumber,              "TelephoneNumber");
-
-void CSmsEmsPrtTestStep::ParseSettingsFromFileL()
-	{
-	CTestConfig* configFile = CTestConfig::NewLC(iFs,KGmsSmsConfigFileDir,KGmsSmsConfigFileName);
-	const CTestConfigSection* cfgFile = configFile->Section(KSetupTelNumbers);
-	if (cfgFile == NULL)
-		User::Leave(KErrNotFound);
+     // Now make sure the received message is valid - this can be
+     // tested by ensuring that NumMessagePDUsL can be called without
+     // leaving
+     rxMsg->NumMessagePDUsL();
 
-	const CTestConfigItem* item = cfgFile->Item(KServiceCenter,0);
-	if (item == NULL)
-		User::Leave(KErrNotFound);
-
-	iServiceCenterNumber.Copy(item->Value());
+     CleanupStack::PopAndDestroy(rxMsg);
 
-	item = cfgFile->Item(KTelefoneNumber,0);
-	if (item == NULL)
-		User::Leave(KErrNotFound);
-
-	iTelephoneNumber.Copy(item->Value());
-
-	// beginning of the destruction
-	CleanupStack::PopAndDestroy(configFile);//configFile
-	}
+     // return the result of the comparison
+     return comp;
+     }