diff -r 238255e8b033 -r 84d9eb65b26f messagingappbase/smsmtm/test/src/t_SmsSpecialIndicationsStep.cpp --- a/messagingappbase/smsmtm/test/src/t_SmsSpecialIndicationsStep.cpp Fri Apr 16 14:56:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,448 +0,0 @@ -// Copyright (c) 2005-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: -// - -#include -#include "t_smsspecialindicationsstep.h" -#include -#include -#include -#include -#include -#include "gsmuieoperations.h" -#include - -using namespace CommsDat; -LOCAL_D RTest test(_L("TestTextE_1_1")); -_LIT(KTestMessageDir,""); - -const TTimeIntervalMicroSeconds32 KWaitForWatchersToStart = 20000000; -const TTimeIntervalMicroSeconds32 KWaitForWatchersToStartDisplayInterval = 5000000; - -_LIT(KMessageData, "This is a simple text message"); -_LIT(KRecipientOk, "+44111111111"); // has to be valid number and switched on - - -void EntryObserver::HandleEntryEventL(TMsvEntryEvent aEvent, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/) - { - switch (aEvent) - { - case EMsvEntryChanged: - { - break; - } - case EMsvNewChildren: - { - CActiveScheduler::Stop(); - break; - } - - default: - { - break; - } - } - } - -CSmsSpecialIndicationsStep::CSmsSpecialIndicationsStep() -:CTestStep() - { - } - -CSmsSpecialIndicationsStep::~CSmsSpecialIndicationsStep() - { - delete iTestUtils; - delete iEntry; - delete iScheduler; - delete iEntryObserver; - delete iSessionObserver; - delete iSession; - delete iWatchers; - delete iOperation; - delete iTestActive; - test.End(); - test.Close(); - __UHEAP_MARKEND; - } - -void CSmsSpecialIndicationsStep::InitialiseSpecialIndicationsStepL() - { - SetTestStepName(KSmsSpecialIndicationsStep1); - iScheduler = new (ELeave) CActiveScheduler; - CActiveScheduler::Install(iScheduler); - } - -void CSmsSpecialIndicationsStep::InitialiseTestL() - { - INFO_PRINTF1(_L("Initialising the test...")); - iTestUtils = CSmsTestUtils::NewL(test); - // Notify the system agent that the phone is on. - iTestUtils->NotifySaPhoneOnL(); - - // Restore the service settings. - iTestUtils->SetEntryL(iTestUtils->iSmsServiceId); - CSmsAccount* account = CSmsAccount::NewLC(); - account->LoadSettingsL(*iTestUtils->iServiceSettings); - - // Remove the default service centres from the service settings - TInt count = iTestUtils->iServiceSettings->ServiceCenterCount(); - while( count-- ) - { - iTestUtils->iServiceSettings->RemoveServiceCenter(count); - } - - // Add the Vodafone service centre - store the settings. - iTestUtils->iServiceSettings->AddServiceCenterL(_L("Vodafone"), _L("+447785016005")); - - // Set delivery options - do matching and make reports visible. - iTestUtils->iServiceSettings->SetDeliveryReport(ETrue); - iTestUtils->iServiceSettings->SetStatusReportHandling(CSmsSettings::EMoveReportToInboxVisibleAndMatch); - - account->SaveSettingsL(*iTestUtils->iServiceSettings); - CleanupStack::PopAndDestroy(account); - - // set up an opserver to observe the inbox - iEntryObserver = new (ELeave) EntryObserver(); - iSessionObserver = new (ELeave) SessionObserver(); - iSession = CMsvSession::OpenSyncL(*iSessionObserver); - TMsvSelectionOrdering ordering; - iEntry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryIdValue,ordering); - iEntry->AddObserverL(*iEntryObserver); - - //used for acynchronous calls - iTestActive=new(ELeave) CTestActive; - - INFO_PRINTF1(_L("Successfully initialised test")); - -} - -void CSmsSpecialIndicationsStep::InitialiseSimTsyL() - { - - INFO_PRINTF1(_L("Initialising the SimTsy...")); - - _LIT(KDefaultTsyName, "SIM"); - HBufC* tsyName =KDefaultTsyName().AllocLC(); - - //Initialize TSY using the System Agent - TInt testState; - TInt testNumber=1; - if(KErrNone != RProperty::Get(KUidPSSimTsyCategory, KPSSimTsyTestNumber, testState)) - { - User::LeaveIfError(RProperty::Define(KUidPSSimTsyCategory, KPSSimTsyTestNumber, RProperty::EInt)); - } - User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, testNumber)); - if(KErrNone != RProperty::Get(KUidSystemCategory, KMsvTestUidPhonePwrValue, testState)) - { - User::LeaveIfError(RProperty::Define(KUidSystemCategory, KMsvTestUidPhonePwrValue, RProperty::EInt)); - } - User::LeaveIfError(RProperty::Set(KUidSystemCategory, KMsvTestUidPhonePwrValue, EMsvTestPhoneOn)); - - User::LeaveIfError(RProperty::Get(KUidPSSimTsyCategory, KPSSimTsyTestNumber, testNumber)); - - RTelServer etelServer; - User::LeaveIfError(etelServer.Connect()); - CleanupClosePushL(etelServer); - User::LeaveIfError(etelServer.LoadPhoneModule(tsyName->Des())); - - // Find the phone corresponding to this TSY and open a number of handles on it - TInt numPhones; - User::LeaveIfError(etelServer.EnumeratePhones(numPhones)); - TBool found=EFalse; - - RMobilePhone iPhone; - while (!found && numPhones--) - { - TName phoneTsy; - User::LeaveIfError(etelServer.GetTsyName(numPhones,phoneTsy)); - if (phoneTsy.CompareF(tsyName->Des())==KErrNone) - { - found = ETrue; - RTelServer::TPhoneInfo info; - User::LeaveIfError(etelServer.GetPhoneInfo(numPhones,info)); - CleanupClosePushL(iPhone); - User::LeaveIfError(iPhone.Open(etelServer,info.iName)); - User::LeaveIfError(iPhone.Initialise()); - //Required Pause to Allow SMSStack to Complete its Async Init call to the TSY and finish its StartUp. - TTimeIntervalMicroSeconds32 InitPause=9000000; - User::After(InitPause); - - CleanupStack::PopAndDestroy(&iPhone); - } - } - - CleanupStack::PopAndDestroy(&etelServer); - - CMDBSession* dbSession = CMDBSession::NewL(CMDBSession::LatestVersion()); - CleanupStack::PushL(dbSession); - CMDBRecordSet globalSettingsRecord(KCDTIdGlobalSettingsRecord); - TRAPD(err, globalSettingsRecord.LoadL(*dbSession)); - if(err != KErrNone) - { - User::Leave(KErrNotFound); - } - - CCDModemBearerRecord *modemRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord)); - CleanupStack::PushL(modemRecord); - modemRecord->SetRecordId(((CCDGlobalSettingsRecord*)globalSettingsRecord.iRecords[0])->iModemForPhoneServicesAndSMS); - modemRecord->LoadL(*dbSession); - modemRecord->iTsyName.SetMaxLengthL(tsyName->Des().Length()); - modemRecord->iTsyName = tsyName->Des(); - modemRecord->ModifyL(*dbSession); - CleanupStack::PopAndDestroy(3); //tsyName, dbSession, modemRecord - - INFO_PRINTF1(_L("Successfully initialised the Sim Tsy")); - } - -void CSmsSpecialIndicationsStep::StartWatcherL() - { - INFO_PRINTF1(_L("Start the Watcher")); - - if( WatchersAlreadyRunningL() ) - { - INFO_PRINTF1(_L("Watchers are already running\n")); - return; - } - - iWatchers = CTestUtilsWatcherStarter::NewL(); - - TTimeIntervalMicroSeconds32 wait = KWaitForWatchersToStart; - TBool started = EFalse; - while( !started && wait.Int() > 0 ) - { - INFO_PRINTF2(_L("Waiting %d secs for watchers to start..."), wait.Int() / 1000000); - wait = wait.Int() - KWaitForWatchersToStartDisplayInterval.Int(); - User::After(KWaitForWatchersToStartDisplayInterval); - started = WatchersAlreadyRunningL(); - } - - if( !WatchersAlreadyRunningL() ) - { - INFO_PRINTF1(_L("WARNING: NBS Watcher has not started yet\n")); - } - } - -TBool CSmsSpecialIndicationsStep::WatchersAlreadyRunningL() - { - RSocketServ server; - RSocket socket; - - User::LeaveIfError(server.Connect()); - CleanupClosePushL(server); - - // test if it's there... - TProtocolDesc protoInfo; - TProtocolName protocolname; - protocolname.Copy(KSmsDatagram); - User::LeaveIfError(server.FindProtocol(protocolname,protoInfo)); - - User::LeaveIfError(socket.Open(server, - protoInfo.iAddrFamily, - protoInfo.iSockType, - protoInfo.iProtocol)); - CleanupClosePushL(socket); - - - TSmsAddr addr; - addr.SetSmsAddrFamily(ESmsAddrRecvAny); - TInt err = socket.Bind(addr); - - CleanupStack::Pop(2, &server); - socket.CancelAll(); - socket.Close(); - server.Close(); - return (err == KErrAlreadyExists); - } - -void CSmsSpecialIndicationsStep::SetRecipientsL(CSmsHeader& aHeader) - { - iTestUtils->Printf(_L("--Setting single recipient\n")); - - CSmsNumber* rcpt = CSmsNumber::NewL(); - CleanupStack::PushL(rcpt); - rcpt->SetAddressL(KRecipientOk); - aHeader.Recipients().AppendL(rcpt); - CleanupStack::Pop(rcpt); - } - -void CSmsSpecialIndicationsStep::CreateMessageL() - { - INFO_PRINTF1(_L("Creating message...")); - - TMsvEntry entry; - entry.SetVisible(ETrue); - entry.SetInPreparation(ETrue); - entry.iServiceId = iTestUtils->iSmsServiceId; - entry.iType = KUidMsvMessageEntry; - entry.iMtm = KUidMsgTypeSMS; - entry.iDate.HomeTime(); - entry.iSize = 0; - entry.iDescription.Set(KNullDesC); - entry.iDetails.Set(KNullDesC); - entry.SetSendingState(KMsvSendStateScheduled); - - // Create the SMS header object... - CSmsHeader* header = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *iTestUtils->iRichText); - CleanupStack::PushL(header); - - // Set the body text... - iTestUtils->iRichText->Reset(); - iTestUtils->iRichText->InsertL(0, KMessageData); - - // Copy the message settings... - header->SetSmsSettingsL(*iTestUtils->iServiceSettings); - - // Set the service centre - TInt defaultIndex = iTestUtils->iServiceSettings->DefaultServiceCenter(); - header->SetServiceCenterAddressL(iTestUtils->iServiceSettings->GetServiceCenter(defaultIndex).Address()); - - // Set recipient - ask derived class - SetRecipientsL(*header); - - // Update entry description and details... - CArrayPtrFlat& recipient = header->Recipients(); - entry.iDetails.Set(recipient[0]->Address()); - entry.iDescription.Set(iTestUtils->iRichText->Read(0, iTestUtils->iServiceSettings->DescriptionLength())); - entry.SetInPreparation(EFalse); - - // Create the entry - set context to the global outbox. - iTestUtils->iMsvEntry->SetEntryL(KMsvGlobalOutBoxIndexEntryId); - iTestUtils->iMsvEntry->CreateL(entry); - - // Create new store and save header information - iTestUtils->iMsvEntry->SetEntryL(entry.Id()); - CMsvStore* store = iTestUtils->iMsvEntry->EditStoreL(); - CleanupStack::PushL(store); - header->StoreL(*store); - store->StoreBodyTextL(*iTestUtils->iRichText); - store->CommitL(); - CleanupStack::PopAndDestroy(2, header); - - iMessageId = entry.Id(); - - } - -void CSmsSpecialIndicationsStep::SendMessageL() - { - INFO_PRINTF1(_L("Sending message...")); - - delete iOperation; - iOperation = NULL; - - CMsvEntrySelection* sel = new (ELeave) CMsvEntrySelection(); - CleanupStack::PushL(sel); - sel->AppendL(iMessageId); - iTestUtils->DisplayMessageL(iMessageId); - iTestUtils->iMsvEntry->SetEntryL(KMsvGlobalOutBoxIndexEntryId); - iOperation = iTestUtils->iMsvEntry->CopyL(*sel, iTestUtils->iSmsServiceId,iTestActive->iStatus); - iTestActive->StartL(); - CActiveScheduler::Start(); - CleanupStack::PopAndDestroy(sel); - } - -TBool CSmsSpecialIndicationsStep::CheckMessageL() - { - - INFO_PRINTF1(_L("Received new message in Inbox - should be status report...")); - - TMsvSelectionOrdering ordering; - ordering.ShowInvisibleEntries(); - CMsvEntry* entry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId,ordering); - CleanupStack::PushL(entry); - - CMsvEntrySelection* msvEntrySelection; - msvEntrySelection=entry->ChildrenL(); - CleanupStack::PushL(msvEntrySelection); - - // Check how many mesasges there are - should be just 1 - TInt count = msvEntrySelection->Count(); - INFO_PRINTF3(_L("Number of new messages: %d, should be: %d"), count, 1); - - // Restore the message - CSmsHeader* header = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *iTestUtils->iRichText); - CleanupStack::PushL(header); - entry->SetEntryL((*msvEntrySelection)[0]); - - CMsvStore* store = entry->ReadStoreL(); - CleanupStack::PushL(store); - header->RestoreL(*store); - - if(store->HasBodyTextL()) - { - store->RestoreBodyTextL(*iTestUtils->iRichText); - } - - TBuf desc; - User::LeaveIfError(TSmsUtilities::GetDescription(header->Message(), desc)); - CleanupStack::PopAndDestroy(4,entry); - - INFO_PRINTF1(desc); - - _LIT(KMsg,"14 Messages Waiting"); - if(desc==KMsg) - { - return ETrue; - } - else - { - return EFalse; - } - } - -TVerdict CSmsSpecialIndicationsStep::doTestStepPreambleL() - { - __UHEAP_MARK; - SetTestStepResult(EPass); - test.Start(_L("sdf")); - InitialiseTestL(); - InitialiseSimTsyL(); - StartWatcherL(); - iTestUtils->DeleteSmsMessagesL(KMsvGlobalOutBoxIndexEntryId); - iTestUtils->DeleteSmsMessagesL(KMsvGlobalInBoxIndexEntryId); - iTestUtils->DeleteSmsMessagesL(KMsvSentEntryId); - CreateMessageL(); - SendMessageL(); - //wait for message to be received... - CActiveScheduler::Start(); - - return TestStepResult(); - } - - -TVerdict CSmsSpecialIndicationsStep::doTestStepL() - { - if(CheckMessageL()) - { - SetTestStepResult(EPass); - } - else - { - SetTestStepResult(EFail); - } - - return TestStepResult(); - } - -TVerdict CSmsSpecialIndicationsStep::doTestStepPostambleL() -/** - * @return - TVerdict code - * Override of base class virtual - */ - { - return TestStepResult(); - } - - - -