diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/clientmtms/test/src/T_MIUT10.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/clientmtms/test/src/T_MIUT10.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,347 @@ +// Copyright (c) 1998-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: +// Name of test harness: T_MIUT10 +// Component: IMCM +// Owner: EH +// Brief description of test harness: +// Cachemanager tests - Automatic test that proves that the cachemanager +// recursively prunes bodytext and attachment data. +// Detailed description of test harness: +// The test harness checks that each message has no child entires since, +// prune-messages should leave message entry +// and therefore each message should have no child entries. +// please see function doMainL(), section commented DEF066273 +// for further details. +// Input files required to run test harness: +// \MSG\IMCMTSRC\plain_text.txt :\msgtest\IMCM\rfc822\plain_text.txt +// \MSG\IMCMTSRC\html_with_attachment.txt :\msgtest\IMCM\rfc822\html_with_attachment.txt +// Intermediate files produced while running test harness: +// :\msglogs\T_MIUT10\Entry_822Headers.txt +// :\msglogs\T_MIUT10\Entry_MimeHeaders.txt +// :\msglogs\T_MIUT10\Entry_RichTextBodies.txt +// :\msglogs\T_MIUT10\Entry_Structure.txt +// Output files produced by running test harness: +// :\msglogs\T_MIUT10...LOG.txt +// Description of how to build test harness: +// cd \msg\imcm\ +// bldmake bldfiles +// abld test build +// Description of how to run test harness: +// The following instructions are the same for all platforms: +// 1. Build T_DB test harness from COMMDB component: +// cd \commdb\group +// bldmake bldfiles +// abld test build t_db +// 2. Build the test utilities: +// cd \msg\testutils\group\ +// bldmake bldfiles +// abld build +// WINS running instructions: +// 1. \epoc32\release\wins\\T_MIUT10.exe can be used at the command prompt +// or executable can be run from Windows Explorer. +// All other platform running instructions: +// 1. Copy \epoc32\release\\\T_MIUT10.exe onto the other platform +// 2. Copy \epoc32\release\\\MSVTESTUTILS.DLL into +// :\system\libs on the other platform +// 3. Copy \epoc32\release\\\EMAILTESTUTILS.DLL into +// :\system\libs on the other platform +// 4. Run T_MIUT10.exe on the other platform +// +// + +#include "emailtestutils.h" +#include +#include + +// local variables etc // + +// Message file names +_LIT(K_T_MIUT10_PLAIN_MSG, "c:\\mailtest\\rfc822\\plain_text.txt"); +_LIT(K_T_MIUT10_HTML_ATTACHMENT_MSG, "c:\\mailtest\\rfc822\\html_with_attachment.txt" ); + +// Logging strings +_LIT(K_T_MIUT10_TEST_INFO, "MIUT10 - Cache Management Tests"); +_LIT(K_T_MIUT10_DESCRIPTION, "Testing pruning of a remote service containing plain test and MHTML mails."); +_LIT(K_T_MIUT10_PROGRESS, " Messages pruned %d/%d \n"); +_LIT(K_T_MIUT10_MSG_NOT_PRUNED,"\nWarning email not pruned\n* BODY text or attachment data still exists!*---Message entry id: %d--"); +_LIT(K_T_MIUT10_MSG_PRUNED,"\nSuccess: email pruned!--Message entry id: %d--"); + +RTest test(K_T_MIUT10_TEST_INFO); + +#define DONT_PRUNE_ID 0x100002 +#define KPeriod 10000 // period of timer +#define KErrMsgNotPruned 5601 +LOCAL_D TMsvId pop3Service; + +LOCAL_D CTrapCleanup* theCleanup; +LOCAL_D CEmailTestUtils* testUtils; + +class CFilteredCacheManager : public CImCacheManager + { +public: + CFilteredCacheManager(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus); + static CFilteredCacheManager* NewL(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus); + +private: + TBool Filter() const; + }; + +CFilteredCacheManager::CFilteredCacheManager(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus) : CImCacheManager(aSession, aObserverRequestStatus) + { + } + +CFilteredCacheManager* CFilteredCacheManager::NewL(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus) + { + CFilteredCacheManager* self = new (ELeave) CFilteredCacheManager(aSession, aObserverRequestStatus); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); // self + return self; + } + +TBool CFilteredCacheManager::Filter() const + { + return (iCurrentEntry->Entry().Id() == DONT_PRUNE_ID) ? EFalse : ETrue; + } + + +// + + +class CImCacheManager; +class TestUiTimer : public CTimer + { +public: + static TestUiTimer* NewLC(CConsoleBase* aConsole, CImCacheManager* aCacheManager); + void RunL(); + void DoCancel(); + void ConstructL(); + void IssueRequest(); + + CConsoleBase* iConsole; + CImCacheManager* iCacheManager; + TTimeIntervalMicroSeconds32 period; +protected: + TInt iCount; + TBool iClosing; + TestUiTimer(CConsoleBase* aConsole, CImCacheManager* aCacheManager); + }; + +// +// Progress timer +// +TestUiTimer* TestUiTimer::NewLC(CConsoleBase* aConsole, CImCacheManager* aCacheManager) + { + TestUiTimer* self = new(ELeave) TestUiTimer(aConsole, aCacheManager); + CleanupStack::PushL(self); + self->iCacheManager = aCacheManager; + self->ConstructL(); + return self; + } + +TestUiTimer::TestUiTimer(CConsoleBase* aConsole, CImCacheManager* aCacheManager) + : CTimer(EPriorityStandard+3), iCacheManager(aCacheManager) + { +// counter =0; + iConsole = aConsole; + period = KPeriod; + iClosing = EFalse; + iCount = 0; + } + +void TestUiTimer::ConstructL() + { + CTimer::ConstructL(); + CActiveScheduler::Add(this); + } + +void TestUiTimer::IssueRequest() + { + After(period); + } + +void TestUiTimer::DoCancel() + { + CTimer::DoCancel(); + } + +void TestUiTimer::RunL() + { + // display the current progress + TImCacheManagerProgress temp; + TPckgC paramPack(temp); + + const TDesC8& progBuf = iCacheManager->ProgressL(); + paramPack.Set(progBuf); + TImCacheManagerProgress progress=paramPack(); + + TBuf<128> strProgress; + strProgress.Format(K_T_MIUT10_PROGRESS, progress.iMessagesProcessed, + progress.iTotalMessages); + + test.Printf(strProgress); + + // write progress info to log file, too (to test DEF042552) + testUtils->WriteComment(strProgress); + + IssueRequest(); + }; + +// + +LOCAL_C void InitL() + { + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CActiveScheduler::Install(scheduler); + CleanupStack::PushL(scheduler); + + testUtils = CEmailTestUtils::NewLC(test); + testUtils->CreateAllTestDirectories(); + + testUtils->WriteComment(K_T_MIUT10_TEST_INFO); + + testUtils->FileSession().SetSessionPath(_L("C:\\")); + testUtils->CleanMessageFolderL(); + testUtils->ClearEmailAccountsL(); + } + +LOCAL_C void Closedown() + { + CleanupStack::PopAndDestroy(2); //testUtils, scheduler + } + +LOCAL_C void doMainL() + { + InitL(); + + TInt globalError = KErrNone; + testUtils->FileSession().SetSessionPath(_L("c:\\")); + + testUtils->GoClientSideL(); + testUtils->CreateSmtpServiceL(); + pop3Service = testUtils->CreatePopServiceL(); + testUtils->GoServerSideL(); + + testUtils->CreateMessageL(K_T_MIUT10_PLAIN_MSG, pop3Service, pop3Service); + testUtils->CreateMessageL(K_T_MIUT10_PLAIN_MSG, pop3Service, pop3Service); + testUtils->CreateMessageL(K_T_MIUT10_HTML_ATTACHMENT_MSG, pop3Service, pop3Service); + + test.Printf(_L("\nPerforming Cache Management Tests\n")); + + testUtils->GoClientSideL(); + + testUtils->iMsvEntry->SetEntryL(pop3Service); + TMsvEntry entry = testUtils->iMsvEntry->Entry(); + entry.SetVisible(ETrue); + testUtils->iMsvEntry->ChangeL(entry); + + + + + + TRequestStatus observerStatus; + CImCacheManager* cacheManager = CFilteredCacheManager::NewL(*testUtils->iMsvSession, observerStatus); + CleanupStack::PushL(cacheManager); + TestUiTimer* testUiTimer = TestUiTimer::NewLC(test.Console(), cacheManager); + CTestActive* testActive = new (ELeave) CTestActive(); + CleanupStack::PushL(testActive); + + testActive->StartL(); + testUiTimer->IssueRequest(); + + testUtils->TestStart(0, K_T_MIUT10_DESCRIPTION); + + cacheManager->StartL(pop3Service, testActive->iStatus); + + CActiveScheduler::Start(); + +// DEF066273: rewrite-Messaging regression test T_MIUT10 failing consistently +// DEF049479: is no longer valid it has therefore not been taken into consideration + + //ensure at correct service entry + testUtils->iMsvEntry->SetEntryL(pop3Service); + //store msg entires of this service + CMsvEntrySelection* popEntrySelection; + popEntrySelection=testUtils->iMsvEntry->ChildrenL(); + CleanupStack::PushL(popEntrySelection); + + TInt count=popEntrySelection->Count(); + TInt childEntries; + TMsvId msgId; + TMsvEntry msgEntry; + TBuf<128> msgFail,msgPass; + + + for(TInt i=0; iAt(i); + testUtils->iMsvEntry->SetEntryL(msgId); + // testUtils->iMsvEntry->Entry(); + + //ensure that there are no more child entries + childEntries=testUtils->iMsvEntry->Count(); + + if (childEntries!=0 && DONT_PRUNE_ID!=msgId) + { + //body text or attachments still exist + msgFail.Format(K_T_MIUT10_MSG_NOT_PRUNED,msgId); + testUtils->WriteComment(msgFail); + globalError = KErrMsgNotPruned; + + } + else + { + //email successfully-prunned header saved. + msgPass.Format(K_T_MIUT10_MSG_PRUNED,msgId); + testUtils->WriteComment(msgPass); + + } + + } + + + testUtils->TestFinish(0, globalError); + + if (globalError == KErrNone) + { + testUtils->TestHarnessCompleted(); + } + else + { + testUtils->TestHarnessFailed(globalError); + } + + CleanupStack::PopAndDestroy(4,cacheManager); // testActive, testUiTimer, cacheManager,popEntrySelection + + Closedown(); + + } + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + test.Start(_L("T_MIUT10 Test CImCacheManager class\n")); + theCleanup=CTrapCleanup::New(); + TRAPD(ret,doMainL()); + test(ret==KErrNone); + delete theCleanup; + test.End(); + test.Close(); + __UHEAP_MARKEND; + User::Heap().Check(); + return(KErrNone); + } +