--- /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 <DRIVE>:\msgtest\IMCM\rfc822\plain_text.txt
+// \MSG\IMCMTSRC\html_with_attachment.txt <DRIVE>:\msgtest\IMCM\rfc822\html_with_attachment.txt
+// Intermediate files produced while running test harness:
+// <DRIVE>:\msglogs\T_MIUT10\Entry_822Headers.txt
+// <DRIVE>:\msglogs\T_MIUT10\Entry_MimeHeaders.txt
+// <DRIVE>:\msglogs\T_MIUT10\Entry_RichTextBodies.txt
+// <DRIVE>:\msglogs\T_MIUT10\Entry_Structure.txt
+// Output files produced by running test harness:
+// <DRIVE>:\msglogs\T_MIUT10.<PLATFORM>.<VARIANT>.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\<VARIANT>\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\<PLATFORM>\<VARIANT>\T_MIUT10.exe onto the other platform
+// 2. Copy \epoc32\release\<PLATFORM>\<VARIANT>\MSVTESTUTILS.DLL into
+// <DRIVE>:\system\libs on the other platform
+// 3. Copy \epoc32\release\<PLATFORM>\<VARIANT>\EMAILTESTUTILS.DLL into
+// <DRIVE>:\system\libs on the other platform
+// 4. Run T_MIUT10.exe on the other platform
+//
+//
+
+#include "emailtestutils.h"
+#include <miutlog.h>
+#include <cacheman.h>
+
+// 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<TImCacheManagerProgress> 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; i<count; ++i)
+ {
+
+ //ensure at correct location
+ msgId=popEntrySelection->At(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);
+ }
+