phonebookengines_old/contactsmodel/tsrc/cntmodel2/t_requeststoretest.h
changeset 40 b46a585f6909
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/tsrc/cntmodel2/t_requeststoretest.h	Fri Jun 11 13:29:23 2010 +0300
@@ -0,0 +1,179 @@
+// 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:
+//
+
+#ifndef __T_REQUESTSTOREFAILURE_H__
+#define __T_REQUESTSTOREFAILURE_H__
+
+#include <e32test.h>
+#include <cntdb.h>
+
+enum TTestCodes
+    {
+    ELockDatabase,
+    EDeleteInvalidCnt
+    };
+
+const TTimeIntervalMicroSeconds32 KOneHalfSecondTimeOut =   500000;
+const TTimeIntervalMicroSeconds32 KSixtySecondsTimeOut  = 60000000;
+
+// forward declaration
+class CConcurrentTester;
+class CConcurrentController;
+
+
+//===========================================================
+// CLockDatabase Class
+//===========================================================
+//
+class CLockDatabase: private CActive
+    {
+    public:
+        ~CLockDatabase();
+        static CLockDatabase* NewLC();
+
+    public:
+        // from CActive
+        void DoCancel();
+        TInt RunError(TInt aError);
+        void RunL();
+
+    private:
+        // constructor & 2nd phase constructor
+        CLockDatabase();
+        void ConstructL();
+        
+        void OpenDatabaseL();        
+
+    private:
+        CContactDatabase* iContactDatabase;
+        RTest* iTest;
+        TBool iLocked;
+    };
+
+//===========================================================
+// CDeleteInvalidCnt Class
+//===========================================================
+//
+class CDeleteInvalidCnt: public CActive
+    {
+public:
+    ~CDeleteInvalidCnt();
+    static CDeleteInvalidCnt* NewLC();
+
+public:
+    // from CActive
+    void DoCancel();
+    TInt RunError(TInt aError);
+    void RunL();
+
+private:
+    // constructor and 2nd phase constructor
+    CDeleteInvalidCnt();
+    void ConstructL();
+
+    void OpenDatabaseL();
+
+private:
+    TInt iStep;
+    CContactDatabase* iContactDatabase;
+    RTest* iTest;
+    };
+
+
+//===========================================================
+// CEventResponse Class
+//
+// Responsible for signalling the controller.
+// It is created by the controller, passed into the Tester.
+// The tester contains the response, and destroys it.
+// The response is "completed" by the ThreadTest.
+//===========================================================
+//
+class CEventResponse : CActive
+    {
+public:
+    static CEventResponse* NewL(CConcurrentController& aController);
+    ~CEventResponse();
+    void CompleteRequest(TInt aError);
+    TRequestStatus& RequestStatus();
+
+private:
+    TInt RunError(TInt aError);
+    void RunL();
+    void DoCancel();
+    CEventResponse (CConcurrentController& aController);
+
+private:
+    CConcurrentController& iController;
+    };
+
+
+//===========================================================
+// CConcurrentController Class
+//===========================================================
+//
+class CConcurrentController : CBase
+    {
+public:
+    ~CConcurrentController();
+    static CConcurrentController* NewLC();
+    void  StartTestL();
+    void  PublishError(TInt aError);
+
+private:
+    void CreateContactsL(TInt aNumContacts);
+
+    void CreateTestersL(TInt aNoOfTesters);
+    void StartRequestStoreFailureTestL();
+
+    // constructor & 2nd-phase constructor
+    CConcurrentController();
+    void ConstructL();
+
+    TBool Completed();
+
+private:
+    RPointerArray<CConcurrentTester> iStore;
+    };
+
+
+//===========================================================
+// CConcurrentTester Class
+//===========================================================
+//
+class CConcurrentTester : CBase
+    {
+public:
+    ~CConcurrentTester();
+    static CConcurrentTester* NewL(CEventResponse* aResponse, const TDesC& aThreadName);
+    static TInt ThreadFunction(TAny* aResponse);
+    void RunTestThreadL(TInt iTestCode);
+    TBool IsCompleted();
+
+private:
+    inline CConcurrentTester(CEventResponse* aResponse, const TDesC& aThreadName) :
+                            iResponse(aResponse),
+                            iThreadName(aThreadName),
+                            iTestCode(-1) {}
+    void RunTestL();
+
+private:
+    RThread                 iThread;
+    CEventResponse*         iResponse;
+    TBuf<256>                iThreadName;
+    TInt                     iTestCode;
+    };
+
+#endif //__T_REQUESTSTOREFAILURE_H__