pimappservices/calendar/tsrc/tcal_servershutdown.h
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappservices/calendar/tsrc/tcal_servershutdown.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,226 @@
+// Copyright (c) 2007-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:
+// tcal_servershutdown:
+// This test is intended to test the delay added to the calendar file before it is closed
+// 
+//
+
+#ifndef __TCAL_SERVERSHUTDOWN_H__
+#define __TCAL_SERVERSHUTDOWN_H__
+
+#include <calsession.h>
+#include <calentryview.h>
+#include <hal.h>
+#include <ecom/ecom.h>
+#include <calprogresscallback.h>
+#include <coreappstest/testserver.h>
+#include "caltestoom.h"
+#include "caltestlib.h"
+
+
+#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
+#include <e32property.h>
+#include "ASCliSession.h"
+class CCalInstanceView;
+#endif
+
+
+
+_LIT(KTestName, "TCal_ServerShutdown");
+RTest test(KTestName);
+
+// Two sample calendar files
+_LIT(KServerShutdownCalFile, "c:tcal_servershutdown_calfile");
+_LIT(KServerShutdownCalFileMultifFile, "c:tcal_servershutdown_calfile_multi_file");
+
+// v9.1 calendar file - conversion test
+_LIT(KServerShutdown91CalFile, "c:tcal_servershutdown_calfile_v91");
+
+// Calendar file - delete test
+_LIT(KServerShutdownCalFileToDelete, "c:tcal_servershutdown_calfile_ToDelete");
+_LIT(KServerShutdownCalFileToDeleteRAM, "c:\\private\\10003a5b\\tcal_servershutdown_calfile_ToDelete"); 
+
+_LIT(KServerShutdownCalFileToDeleteOOM, "c:tcal_servershutdown_calfile_ToDelete");
+_LIT(KServerShutdownCalFileToDeleteRAM_OOM, "c:\\private\\10003a5b\\tcal_servershutdown_calfile_ToDelete"); 
+
+// Non-existent calendar filename
+_LIT(KServerShutdownBadCalFileName, "c:tcal_servershutdown_calfile_ShouldNotExist");
+
+// Calendar files in ROM (origin)
+_LIT(KServerShutdownCalFileROM, "z:\\private\\10003a5b\\tcal_servershutdown_calfile");
+_LIT(KServerShutdownCalFileMultiFileROM, "z:\\private\\10003a5b\\tcal_servershutdown_calfile_multi_file");
+_LIT(KServerShutdown91CalFileROM, "z:\\private\\10003a5b\\tcal_servershutdown_calfile_v91");
+
+// Calendar files in RAM (Destination)
+_LIT(KServerShutdownCalFileRAM, "c:\\private\\10003a5b\\tcal_servershutdown_calfile");
+_LIT(KServerShutdownCalFileMultiFileRAM, "c:\\private\\10003a5b\\tcal_servershutdown_calfile_multi_file");
+_LIT(KServerShutdown91CalFileRAM, "c:\\private\\10003a5b\\tcal_servershutdown_calfile_v91");
+
+// Expectd minimum delay before the calendar file is closed
+const TTimeIntervalMicroSeconds32 KServerShutdownDelayMin = 5000000;
+// Maximum possible delay before the calendar file is closed
+const TTimeIntervalMicroSeconds32 KServerShutdownDelayMax = 6000000;
+
+// Delay to test the cancellation of the calendar close delay timers
+const TTimeIntervalMicroSeconds32 KServerCancelDelay = 3000000;
+
+const TUid KServerUid2 = {0x1000008D};
+const TUid KServerUid3 = {0x101F502A};
+_LIT(KConsoleAlarmAlertServerImg, "ConsoleAlarmAlertServer");	
+
+class CServerShutdownTestManager : public CActive, public MCalProgressCallBack, public MCalTestOomCallBack
+	{
+public:
+	enum TTestCases
+		{
+		ETestServerShutdownWithIndex,
+		ETestServerShutdownCancelWithIndexStart,
+		ETestServerShutdownCancelWithIndexCancelled,
+		ETestServerShutdownCancelWithIndexShutdown,
+		ETestServerShutdownDeleteFile,
+		ETestServerShutdownDeleteMultiFiles,
+		ETestServerShutdownProcessExit,
+		ETestServerShutdownOOMDeleteFile,
+		ETestServerShutdownOOMOpenCloseFile,
+		ETestServerSingleSessionOpenTwiceStart,
+		ETestServerSingleSessionOpenTwiceShutdown,
+		ETestServerMultiSessionSingleFileOpenStart,
+		ETestServerMultiSessionSingleFileOpen,
+		ETestServerMultiSessionSingleFileOpenShutdown,
+		ETestServerMultiSessionMultiFileOpenStart,
+		ETestServerMultiSessionMultiFileOpenShutdown,
+		ETestServerShutdownOpenInvalidFileLeave,
+		ETestServerShutdownv91CalendarFileConversion,
+#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
+		ETestServerShutdownWithSystemStateNotification,
+		ETestServerShutdownWithSystemStateNotificationAsync,
+		ETestServerShutdownWithSystemStateNotificationInstance,
+		ETestServerShutdownWithSystemStateNotificationNormal
+#endif
+		};
+	
+#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
+	enum TSystemStateNotifications
+		{
+		ESystemStateNormal,
+		ESystemStateShutdown,
+		ESystemStateAck
+		};
+#endif
+
+	static CServerShutdownTestManager* NewLC(TInt aPriority);
+	~CServerShutdownTestManager();
+	
+	void RunAllTestsL();
+	
+private:
+	void RunL();
+	void DoCancel();
+	
+	void ProcessLogonL();
+	void ShutdownProcessL(const TDesC& aProcessUid);
+	
+	// from MCalProgressCallBack
+	void Progress(TInt aPercentageCompleted);
+	void Completed(TInt aError);
+	TBool NotifyProgress();
+	
+	// from MCalTestOomCallBack
+	void OomTestL(TType aType, TInt aFailAt);
+	
+	CServerShutdownTestManager(TInt aPriority);
+	void ConstructL();
+	
+	void TestServerShutdownWithIndexL();
+	void TestServerShutdownCancelWithIndexL();
+	void TestServerShutdownDeleteFileL();
+	void TestServerShutdownDeleteMultiFilesL();
+	void TestServerShutdownDeleteFileOOML(TInt aFailAt);
+	void TestServerShutdownOpenCloseFileOOML();
+	void TestServerShutdownProcessExitL();
+	void TestServerShutdownOOML();
+	void TestServerShutdownSingleSessionOpenTwiceL();
+	void TestServerShutdownMultiSessionSingleFileOpenL();
+	void TestServerShutdownMultiSessionMultiFileOpenL();
+	void TestServerShutdownOpenInvalidFileLeaveL();
+	void TestServerShutdownTestOldCalendarFileConversionL();
+#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
+	void TestServerShutdownWithSystemStateNotificationsL();
+	void TestServerShutdownWithSystemStateNotificationsAsyncL();
+	void TestServerShutdownWithStateNotificationAndInstanceViewL();
+	void TestServerShutdownWithNormalSystemStateNotification();
+	void CreateSystemStateNotificationProperty();
+	void TestSystemAckNotification();
+	void TestPostShutdownOperationsL(const TDesC8& aGuid, TInt aErr, TInt aAlarmCount = 0);
+	void TestAsycnDeleteOperationL();
+	void TestInstanceViewOperationsL();
+	void ClearAllAlarmsL();
+#endif
+	
+	// Record a timestamp before initiating server shutdown
+	void RecordTimeStampBeforeServerShutdown();
+	// Record a timestamp after initiating server shutdown, calculate the period of shutdown and ensure that is within the expected range
+	void TestServerShutdownTime();
+	
+	void CreateSessionL();
+	void CreateAdditionalSessionL();
+	
+	void CloseSession(TBool aWaitToClose);
+	void CloseAdditionalSession(TBool aWaitToClose);
+#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
+	void CreateEntry(const TDesC8& aGuid);
+	void CreateRecurringEntriesL(const TDesC8& aGuid);
+	void CreateInstanceViewL(TBool aWaitToOpen);
+#endif
+	void CreateEntryViewL(const TDesC& aCalFile, TBool aWaitToOpen);
+	
+	void CreateAdditionalEntryViewL(const TDesC& aCalFile, TBool aWaitToOpen);
+	
+	void CloseEntryView();
+	void CloseAdditionalEntryView();
+#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
+	void CloseInstanceView();
+	void SendSystemStateNotification(TSystemStateNotifications aSystemStateNotification);
+	void SubscribeToSystemNotification();
+#endif
+	
+	// Async delay helper functions
+	void AsyncDelay(TTimeIntervalMicroSeconds32 aMicroseconds);
+	static TInt AsyncDelayCallBack(TAny* aPtr);
+
+	RProcess iProcess;
+	RPIMTestServer iPIMTestServer;
+	CTestRegister*    iFileRegister; 
+
+	CPeriodic* iPeriodic;
+	
+	CCalSession* iSession;
+	CCalSession* iAdditionalSession;
+	CCalEntryView* iEntryView;
+	CCalEntryView* iAdditionalEntryView;
+
+	TUint32 iSrvTimerStartTicks; 
+	TInt iNanoTickPeriod;
+	
+	TInt iTestCase;
+#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
+	CCalInstanceView* iInstanceView;
+	RProperty iSystemStateNotification;
+	TUid iMyUid;
+	TInt itcal_key;
+	RASCliSession iAlarmServer;
+#endif
+	};
+
+#endif