diff -r 4697dfb2d7ad -r 238255e8b033 messagingappbase/smsmtm/test/src/T_SmcmFail.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/smsmtm/test/src/T_SmcmFail.cpp Fri Apr 16 14:56:15 2010 +0300 @@ -0,0 +1,678 @@ +// Copyright (c) 2000-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 "T_SmcmFail.h" +#include + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + test.Start(_L("Setup")); + theCleanup = CTrapCleanup::New(); + TRAPD(ret,doMainL()); + test(ret==KErrNone); + delete theCleanup; + test.Console()->SetPos(0, 13); + test.End(); + test.Close(); + __UHEAP_MARKEND; + return(KErrNone); + } + +LOCAL_C void doMainL() + { + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CleanupStack::PushL(scheduler); + CActiveScheduler::Install(scheduler); + + CSmsTestUtils* smsTest = CSmsTestUtils::NewL(test); + CleanupStack::PushL(smsTest); + TInt nextTest = 0; + + CSmcmFailTest* SmcmTest = CSmcmFailTest::NewL(*smsTest, KNullDesC, nextTest); + CleanupStack::PushL(SmcmTest); + + SmcmTest->StartL(); + + CleanupStack::PopAndDestroy(3); //SmcmTest. scheduler + } + +CSmcmFailTest::CSmcmFailTest(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aCurrentTest) +: CSmsTestBase(aSmsTest, aScriptFile, aCurrentTest) + { + } + +void CSmcmFailTest::RunAutoL() + { + iSmsTest.TestStart(++iNextTest, _L("CSmsSettings Fail")); + TestSettingsFailL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsNumber Fail")); + TestNumberFailL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("CSmsHeader Fail")); + TestHeaderFailL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("Load Fail")); + TestLoadFailL(); //Cannot be done 'cause of defect in message server + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("Save Fail")); + TestSaveFailL(); //Cannot be done 'cause of defect in message server + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("Addressee Fail")); + TestAddresseeFailL(); //Cannot be done 'cause of defect in message server + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("Bio Fail")); + this->TestBifFailL(); + iSmsTest.TestFinish(iNextTest); + + + iSmsTest.TestStart(++iNextTest, _L("Reply Fail")); + TestReplyFailL(); + iSmsTest.TestFinish(iNextTest); + + iSmsTest.TestStart(++iNextTest, _L("Forward Fail")); + TestForwardFailL(); //Cannot be done 'cause of defect in message server + iSmsTest.TestFinish(iNextTest); + } + +CSmcmFailTest::~CSmcmFailTest() + { + delete iRichText; + delete iParaLayer; + delete iCharLayer; + } + +void CSmcmFailTest::ConstructL() + { + iSmsTest.SetLogToFile(); + iSmsTest.InstantiateClientMtmsL(); + + iSelection = new (ELeave) CMsvEntrySelection(); + iTimer = CTestTimer::NewL(); + + iParaLayer =CParaFormatLayer::NewL(); + iCharLayer = CCharFormatLayer::NewL(); + iRichText = CRichText::NewL(iParaLayer, iCharLayer, CEditableText::EFlatStorage,256); + + CActiveScheduler::Add(this); + } + +CSmcmFailTest* CSmcmFailTest::NewL(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aCurrentTest) + { + CSmcmFailTest* self = new (ELeave) CSmcmFailTest(aSmsTest, aScriptFile, aCurrentTest); + CleanupStack::PushL(self); + + self->ConstructL(); + + CleanupStack::Pop(); + return self; + } + +void CSmcmFailTest::ShowMenuL() + { + iSmsTest.ResetMenu(); + + iSmsTest.AppendToMenuL(_L("Start")); + + TInt result = iSmsTest.DisplayMenu(_L("SMS Client MTM Test")); + + if (result <= 0) + return; + + switch (result) + { + case 1: + RunAutoL(); + break; + default: + User::Leave(KErrArgument); + break; + } + + if (!iSmsTest.RunAuto()) + { + iSmsTest.Printf(_L("Press any key to continue...\n")); + test.Getch(); + } + + ShowMenuL(); + } + +void CSmcmFailTest::TestSettingsFailL() + { + CSmsSettings* settings = NULL; + + TInt error; + TInt failCount = 0; + + //Failure Test CSmsSettings::NewL + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, settings = CSmsSettings::NewL()); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + + } + while (error); + + iSmsTest.Printf(_L("CSmsSettings::NewL Fail Count %d\n"), failCount); + CleanupStack::PushL(settings); + + failCount = 0; + + //Failure Test CSmsSettings::AddServiceCenterL() + do + { + __UHEAP_FAILNEXT(failCount++); + + TInt scCount = settings->ServiceCenterCount(); + TRAP(error, settings->AddServiceCenterL(_L("Anthony"), _L("+44"))); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + test(scCount == settings->ServiceCenterCount()); + } + else + { + test(scCount == settings->ServiceCenterCount() - 1); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsSettings::AddSCAddress Fail Count %d\n"), failCount); + CSmsSettings* settings2 = CSmsSettings::NewL(); + CleanupStack::PushL(settings2); + failCount = 0; + + //Failure Test CSmsSettings::CopyL() + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, settings2->CopyL(*settings)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsSettings::CopyL Fail Count %d\n"), failCount); + + CleanupStack::PopAndDestroy(); //settings2 + CleanupStack::PopAndDestroy(); //settings + } + +void CSmcmFailTest::TestHeaderFailL() + { + CSmsHeader* header = NULL; + + TInt error; + TInt failCount = 0; + + //Failure Test CSmsHeader::NewL, Deliver + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, header = CSmsHeader::NewL(CSmsPDU::ESmsDeliver,*iRichText)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + + } + while (error); + + iSmsTest.Printf(_L("CSmsHeader::NewL (Deliver) Fail Count %d\n"), failCount); + delete header; + + failCount = 0; + + //Failure Test CSmsHeader::NewL, StatusReport + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, header = CSmsHeader::NewL(CSmsPDU::ESmsStatusReport,*iRichText)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsHeader::NewL (StatusReport) Fail Count %d\n"), failCount); + delete header; + + failCount = 0; + + //Failure Test CSmsHeader::NewL, Submit + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, header = CSmsHeader::NewL(CSmsPDU::ESmsSubmit,*iRichText)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + + } + while (error); + + iSmsTest.Printf(_L("CSmsHeader::NewL (Submit) Fail Count %d\n"), failCount); + delete header; + } + +void CSmcmFailTest::TestNumberFailL() + { + CSmsNumber* number = NULL; + + TInt error; + TInt failCount = 0; + + //Failure Test CSmsNumber::NewL + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, number = CSmsNumber::NewL()); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + + } + while (error); + + iSmsTest.Printf(_L("CSmsNumber::NewL Fail Count %d\n"), failCount); + CleanupStack::PushL(number); + CSmsNumber* number2 = NULL; + + failCount = 0; + + //Failure Test CSmsNumber::NewL,2 + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, number2 = CSmsNumber::NewL(*number)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + + } + while (error); + + iSmsTest.Printf(_L("CSmsNumber::NewL (Number) Fail Count %d\n"), failCount); + CleanupStack::PushL(number2); + + number->SetAddressL(_L("44")); + number->SetNameL(_L("AA")); + + failCount = 0; + + //Failure Test CSmsNumber::CopyL + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, number2->CopyL(*number)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + else + { + test(number->Name() == number2->Name()); + test(number->Address() == number2->Address()); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsNumber::CopyL Fail Count %d\n"), failCount); + CleanupStack::PopAndDestroy(); //number + CleanupStack::PopAndDestroy(); //number2 + } + + +void CSmcmFailTest::TestReplyFailL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Reply Fail")); + + CMsvOperationWait* wait = CMsvOperationWait::NewLC(); + CMsvOperation* op = NULL; + TInt error; + TMsvPartList part=0; + TInt failCount = 0; + + do + { + CleanFolderL(KMsvDraftEntryId); + CleanFolderL(KMsvGlobalOutBoxIndexEntryId); + CleanFolderL(KMsvGlobalInBoxIndexEntryId); + + TMsvId id = iSmsTest.CreateDummyMessageToReceiveL(); + Session().CleanupEntryPushL(id); + Client().SwitchCurrentEntryL(id); // Lets go to the received area + Client().LoadMessageL(); + + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, op = Client().ReplyL(KMsvDraftEntryId, part, wait->iStatus)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + + if (failCount % 100 == 0) + iSmsTest.Printf(_L("CSmsClientMtm::ReplyL still failing, count = %d\n"), failCount); + } + + CleanupStack::PopAndDestroy(); //id + } + while (error); + + iSmsTest.Printf(_L("CSmsClientMtm::ReplyL Fail Count %d\n"), failCount); + CleanupStack::PushL(op); + wait->Start(); + CActiveScheduler::Start(); + + CleanupStack::PopAndDestroy(2); //op, wait + } + +void CSmcmFailTest::CleanFolderL(TMsvId aFolder) + { + CMsvOperationWait* wait = CMsvOperationWait::NewLC(); + CMsvOperation* op = NULL; + + iSmsTest.SetEntryL(aFolder); + CMsvEntrySelection* sel = MsvEntry().ChildrenL(); + + CleanupStack::PushL(sel); + if (sel->Count()) + { + iSmsTest.Printf(_L("Deleting %d existing messages\n"), sel->Count()); + op = MsvEntry().DeleteL(*sel, wait->iStatus); + CleanupStack::PushL(op); + wait->Start(); + CActiveScheduler::Start(); + CleanupStack::PopAndDestroy(); //op + } + CleanupStack::PopAndDestroy(2); //sel, wait + } + +void CSmcmFailTest::TestForwardFailL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Forward Fail")); + + CleanFolderL(KMsvDraftEntryId); + CleanFolderL(KMsvGlobalOutBoxIndexEntryId); + CleanFolderL(KMsvGlobalInBoxIndexEntryId); + + TMsvId id = iSmsTest.CreateDummyMessageToReceiveL(); + Client().SwitchCurrentEntryL(id); + Client().LoadMessageL(); + + TMsvPartList part=0; + + TInt error; + TInt failCount = 0; + CMsvOperationWait* wait = CMsvOperationWait::NewLC(); + CMsvOperation* op = NULL; + + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, op = Client().ForwardL(KMsvDraftEntryId, part, wait->iStatus)); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + + if (failCount % 100 == 0) + iSmsTest.Printf(_L("CSmsClientMtm::ForwardL still failing, count = %d\n"), failCount); + } + + } + while (error); + + CleanupStack::PushL(op); + iSmsTest.Printf(_L("CSmsClientMtm::ForwardL Fail Count %d\n"), failCount); + wait->Start(); + CActiveScheduler::Start(); + + CleanupStack::PopAndDestroy(2); //op, wait + } + +void CSmcmFailTest::TestLoadFailL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Load Fail")); + + CleanFolderL(KMsvDraftEntryId); + CleanFolderL(KMsvGlobalOutBoxIndexEntryId); + CleanFolderL(KMsvGlobalInBoxIndexEntryId); + + TMsvId id = iSmsTest.CreateDummyMessageToSendL(); + Client().SwitchCurrentEntryL(id); + + TInt error; + TInt failCount = 0; + + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, Client().LoadMessageL()); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsClientMtm::LoadMessageL Fail Count %d\n"), failCount); + } + +void CSmcmFailTest::TestSaveFailL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Save Fail")); + + CleanFolderL(KMsvDraftEntryId); + CleanFolderL(KMsvGlobalOutBoxIndexEntryId); + CleanFolderL(KMsvGlobalInBoxIndexEntryId); + + TMsvId id = iSmsTest.CreateDummyMessageToSendL(); + Client().SwitchCurrentEntryL(id); + Client().LoadMessageL(); + + TInt error; + TInt failCount = 0; + + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, Client().SaveMessageL()); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsClientMtm::SaveMessageL Fail Count %d\n"), failCount); + } + +void CSmcmFailTest::TestAddresseeFailL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Save Fail")); + + CleanFolderL(KMsvDraftEntryId); + CleanFolderL(KMsvGlobalOutBoxIndexEntryId); + CleanFolderL(KMsvGlobalInBoxIndexEntryId); + + TMsvId id = iSmsTest.CreateDummyMessageToSendL(); + Client().SwitchCurrentEntryL(id); + Client().LoadMessageL(); + + TInt error; + TInt failCount = 0; + + do + { + __UHEAP_FAILNEXT(failCount++); + + TInt count = Client().AddresseeList().Count(); + TRAP(error, Client().AddAddresseeL(_L("44"))); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + test(count == Client().AddresseeList().Count()); + } + else + { + test(count == Client().AddresseeList().Count() - 1); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsClientMtm Addressee1 Fail Count %d\n"), failCount); + + failCount = 0; + + do + { + __UHEAP_FAILNEXT(failCount++); + + TInt count = Client().AddresseeList().Count(); + TRAP(error, Client().AddAddresseeL(_L("44"), _L("AA"))); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory); + test(count == Client().AddresseeList().Count()); + } + else + { + test(count == Client().AddresseeList().Count() - 1); + } + } + while (error); + + iSmsTest.Printf(_L("CSmsClientMtm Addressee2 Fail Count %d\n"), failCount); + } + +void CSmcmFailTest::TestBifFailL() + { + iSmsTest.Test().Next(_L("CSmsClientMtm Bio Fail")); + + CleanFolderL(KMsvDraftEntryId); + CleanFolderL(KMsvGlobalOutBoxIndexEntryId); + CleanFolderL(KMsvGlobalInBoxIndexEntryId); + + TMsvId id = iSmsTest.CreateDummyMessageToSendL(); + Client().SwitchCurrentEntryL(id); + Client().LoadMessageL(); + + TInt error; + TInt failCount = 0; + + CBIODatabase* bdb = CBIODatabase::NewLC(Session().FileSession()); + + if (!bdb->BIOCount()) + { + CleanupStack::PopAndDestroy(); //bdb + iSmsTest.Printf(_L("No Bio messages in Bio DB\n")); + return; + } + + // Get the whole bif file class + const CBioInfoFileReader& reader = bdb->BifReader(0); + + do + { + __UHEAP_FAILNEXT(failCount++); + + TRAP(error, Client().BioTypeChangedL(reader.MessageTypeUid())); + + __UHEAP_RESET; + + if (error) + { + test(error == KErrNoMemory || error == KErrNotFound); + } + } + while (error && error != KErrNotFound); + + iSmsTest.Printf(_L("CSmsClientMtm::BioTypeChangedL Fail Count %d\n"), failCount); + CleanupStack::PopAndDestroy(); //bdb + }