email/pop3andsmtpmtm/popservermtm/test/src/T_popsCancelProgress.cpp
changeset 0 72b543305e3a
--- /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();
+	}
+
+//------------------------------------------------------------------------------
+