--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/pop3andsmtpmtm/popservermtm/test/src/T_popsCancelProgress.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,247 @@
+// 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_PopsCancelProgress
+// Component: POPS
+// Brief description of test harness:
+// Tests that a cancelling a CImTextServerSession connect operation leaves the
+// object in a consistent state, allowing it's progress to be queried safely
+// after cancelling.
+// Detailed description of test harness:
+// See "INC040630 - AV20 Panic while disconnecting a service"
+// Output files produced by running test harness:
+// <DRIVE>:\msglogs\T_PopsCancelProgress.<PLATFORM>.<VARIANT>.LOG.txt
+//
+//
+
+#include "emailtestutils.h"
+#include "scripttestutils.h"
+#include "miutlog.h"
+#include "miutmsg.h"
+#include <txtrich.h>
+#include <popsmtm.h>
+#include <cemailaccounts.h>
+
+//------------------------------------------------------------------------------
+
+class CPopsCancelProgressTest : public CBase
+ {
+public:
+ static CPopsCancelProgressTest* NewLC(CEmailTestUtils& aTestUtils);
+ void StartTestL();
+ void InitL();
+ void ResetL();
+ void SetUpPopServiceL();
+ void EndTestL();
+ void EndTestHarnessL();
+
+ ~CPopsCancelProgressTest();
+
+private:
+ CPopsCancelProgressTest(CEmailTestUtils& aTestUtils);
+ void ConstructL();
+ void ResetMtmL();
+
+public:
+ CMsvEntrySelection* iSelection;
+ CEmailTestUtils& iTestUtils;
+
+private:
+ TInt iTestError;
+ TInt iTestNumber;
+ TInt iGlobalError;
+ TMsvId iPop3Service;
+ };
+
+LOCAL_D CTrapCleanup* theCleanup;
+_LIT(KImcmTest, "T_PopsCancelProgress Test");
+RTest test(KImcmTest);
+
+//------------------------------------------------------------------------------
+
+LOCAL_C void doMainL()
+ {
+ CActiveScheduler* scheduler;
+ scheduler = new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(scheduler);
+ CActiveScheduler::Install(scheduler);
+
+ CEmailTestUtils* testUtils = CEmailTestUtils::NewLC(test);
+ CPopsCancelProgressTest* popsTestHarness = CPopsCancelProgressTest::NewLC(*testUtils);
+
+ popsTestHarness->SetUpPopServiceL();
+ popsTestHarness->ResetL();
+ popsTestHarness->StartTestL();
+ popsTestHarness->EndTestL();
+ popsTestHarness->EndTestHarnessL();
+
+ CleanupStack::PopAndDestroy(3); // popsTestHarness, testUtils, scheduler
+ }
+
+//------------------------------------------------------------------------------
+
+GLDEF_C TInt E32Main()
+ {
+ __UHEAP_MARK;
+ test.Start(_L("T_PopsCancelProgress Test"));
+
+ theCleanup = CTrapCleanup::New();
+
+ TRAPD(ret,doMainL());
+
+ test(ret == KErrNone);
+ delete theCleanup;
+ test.End();
+ test.Close();
+
+ __UHEAP_MARKEND;
+ User::Heap().Check();
+ return(KErrNone);
+ }
+
+//------------------------------------------------------------------------------
+
+CPopsCancelProgressTest* CPopsCancelProgressTest::NewLC(CEmailTestUtils& aTestUtils)
+ {
+ CPopsCancelProgressTest* self = new (ELeave) CPopsCancelProgressTest(aTestUtils);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::ResetMtmL()
+ {
+ // Get server MTM.
+ iTestUtils.Reset();
+ iTestUtils.CleanMessageFolderL();
+ iTestUtils.GoServerSideL();
+ SetUpPopServiceL();
+ iTestUtils.InstantiatePopServerMtmL();
+ }
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::ResetL()
+ {
+ ResetMtmL();
+ }
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::EndTestL()
+ {
+ if ((iTestError != KErrNone) && (iGlobalError == KErrNone))
+ {
+ iGlobalError = iTestError;
+ }
+
+ iTestUtils.TestFinish(iTestNumber, iTestError);
+ }
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::EndTestHarnessL()
+ {
+ if (iGlobalError == KErrNone)
+ {
+ iTestUtils.TestHarnessCompleted();
+ }
+ else
+ {
+ iTestUtils.TestHarnessFailed(iGlobalError);
+ }
+ }
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::InitL()
+ {
+ iTestUtils.FileSession().SetSessionPath(_L("C:\\"));
+ iTestUtils.FileSession().Delete(_L("c:\\logs\\email\\imsk110.scr"));
+ iTestUtils.CleanMessageFolderL();
+ iTestUtils.GoServerSideL();
+ }
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::ConstructL()
+ {
+ InitL();
+ iSelection = new (ELeave) CMsvEntrySelection;
+ }
+
+//------------------------------------------------------------------------------
+
+CPopsCancelProgressTest::~CPopsCancelProgressTest()
+ {
+ delete iSelection;
+ }
+
+//------------------------------------------------------------------------------
+
+CPopsCancelProgressTest::CPopsCancelProgressTest(CEmailTestUtils& aTestUtils)
+: iTestUtils(aTestUtils),
+ iGlobalError(KErrNone)
+{}
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::StartTestL()
+ {
+ TRequestStatus mtmStatus;
+ TBuf8<128> parameter;
+
+ iTestUtils.Printf(_L("Starting POP Server Mtm Cancel/Progress Test.\n"));
+ iTestUtils.Printf(_L("Putting the POP Server Mtm into the EPopConnecting state.\n"));
+ iTestUtils.iPopServerMtm->StartCommandL(
+ *iSelection, KPOP3MTMConnect, parameter, mtmStatus);
+ iTestUtils.Printf(_L("Cancelling the POP Server Mtm EPopConnecting operation.\n"));
+ iTestUtils.iPopServerMtm->Cancel();
+ iTestUtils.Printf(_L("Querying the POP Server Mtm progress...\n"));
+ iTestUtils.iPopServerMtm->Progress();
+ }
+
+//------------------------------------------------------------------------------
+
+void CPopsCancelProgressTest::SetUpPopServiceL()
+ {
+ iTestUtils.GoClientSideL();
+
+ // Create the POP3 service and set the settings for this test.
+ iPop3Service = iTestUtils.CreatePopServiceL();
+ iSelection->AppendL(iPop3Service);
+
+ CImPop3Settings* settings = new(ELeave) CImPop3Settings();
+ CleanupStack::PushL(settings);
+ settings->Reset();
+ _LIT(KPopServer, "pop3.demon.co.uk");
+ settings->SetServerAddressL(KPopServer);
+ settings->SetLoginNameL(iTestUtils.MachineName());
+ settings->SetPasswordL(iTestUtils.MachineName());
+ settings->SetPort(110);
+ settings->SetDisconnectedUserMode(ETrue);
+
+ CEmailAccounts* accounts = CEmailAccounts::NewLC();
+
+ TPopAccount id;
+ accounts->GetPopAccountL(iPop3Service, id);
+ accounts->SavePopSettingsL(id, *settings);
+
+ CleanupStack::PopAndDestroy(2, settings); // accounts/store, settings
+ iTestUtils.GoServerSideL();
+ }
+
+//------------------------------------------------------------------------------
+