--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/tsrc/Integration/PerfFuncSuite/src/TimeoutStep.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,296 @@
+// Copyright (c) 2006-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:
+// Timeout tests involve:
+// Locking a contact then attempting to perform a crud operation on the contact
+// check the timeout and error returned are as expected.
+//
+//
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+#include "ccontactprivate.h"
+#include "TimeoutStep.h"
+#include "PerformanceFunctionalityDefs.h"
+
+_LIT(KRun1,"ContactLock");
+_LIT(KRun2,"TransactionLock");
+_LIT(KRun3,"TemplateLock");
+_LIT(KRun4,"TimeoutRange");
+_LIT(KRun5,"MultipleSessionContactLock");
+_LIT(KRun6,"MultipleSessionTransactionLock");
+_LIT(KRun7,"MultipleSessionTemplateLock");
+_LIT(KRun8,"MultipleSessionTimeoutRange");
+
+_LIT(KTest1, "Contact locking timeout tests");
+_LIT(KTest2, "Transaction locking timeout tests");
+_LIT(KTest3, "Transaction internal locking timeout tests");
+_LIT(KTest4, "Template locking timeout tests");
+_LIT(KTest5, "Value range timeout tests");
+
+_LIT(KErrOnIteration,"On iteration number %d :");
+
+const TInt KIterations = 5;
+
+#define KNumberOfContacts 50
+
+CTimeoutStep::CTimeoutStep()
+ : CTimeoutBaseStep( KNumberOfContacts, KDeviation )
+ {
+ SetTestStepName(KTimeoutStep);
+ }
+
+TVerdict CTimeoutStep::doTestStepL()
+ {
+ __UHEAP_MARK;
+ InitializeL();
+ _LIT(KDoStepPrint,"CTimeoutStep::doTestStepL()");
+ INFO_PRINTF1(KDoStepPrint); //Block start
+ iIterate->Reset();
+ CContactDatabase *contactsDatabase = CContactDatabase::OpenL();
+ CleanupStack::PushL( contactsDatabase );
+
+ const TDesC &run = ConfigSection();
+
+ if( run == KRun1 )
+ {
+ TEST1(ContactLockingTestL(iContactsDatabase), ETrue);
+ }
+ else if( run == KRun2 )
+ {
+ TEST1(TransactionInternalLockingTestL(), ETrue);
+ }
+ else if( run == KRun3 )
+ {
+ TEST1(TemplateLockingTestL(iContactsDatabase), ETrue);
+ }
+ else if( run == KRun4 )
+ {
+ TimeoutValuesTestL(iContactsDatabase);
+ }
+ else if( run == KRun5 )
+ {
+ TEST1(ContactLockingTestL(contactsDatabase), ETrue);
+ }
+ else if( run == KRun6 )
+ {
+ TEST1(TransactionLockingTestL(contactsDatabase), ETrue);
+ }
+ else if( run == KRun7 )
+ {
+ TEST1(TemplateLockingTestL(contactsDatabase), ETrue);
+ }
+ else if( run == KRun8 )
+ {
+ TimeoutValuesTestL(contactsDatabase);
+ }
+ else
+ {
+ MissingTestPanic();
+ }
+
+
+ CleanupStack::PopAndDestroy(contactsDatabase);
+ Cleanup();
+ __UHEAP_MARKEND;
+
+ return TestStepResult();
+ }
+
+TBool CTimeoutStep::ContactLockingTestL(CContactDatabase *aContactsDatabase)
+ {
+ INFO_PRINTF1(KTest1);
+ TBool ret = EFalse;
+ TContactItemId cid = 0;
+ TInt i = 0;
+ for(; i < KIterations ; ++i, iTimeOut += KDefaultTime )
+ {
+ cid = iIterate->NextL();
+ OpenL(cid);//locks contact with id == cid
+ ret = CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, cid, KErrInUse, iTimeOut);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckUpdateL, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckRead, aContactsDatabase, cid, KErrNone, 0, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckDelete, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse);
+ CloseL( ETrue );
+ if(!ret)
+ {
+ ERR_PRINTF2(KErrOnIteration,i+1);
+ break;
+ }
+ }
+ iTimeOut = KStartTime;
+ return ret;
+ }
+
+TBool CTimeoutStep::TransactionLockingTestL(CContactDatabase *aContactsDatabase)
+ {
+ INFO_PRINTF1(KTest2);
+ iTransaction = ETrue;
+ TBool ret = EFalse;
+ TContactItemId cid = 0;
+ TInt i = 0;
+ aContactsDatabase->DatabaseBeginLC( EFalse ); // locks the entire database
+ for(; i < KIterations ; ++i, iTimeOut += KDefaultTime )
+ {
+ cid = iIterate->NextL();
+ ret = CheckTimeOutL(&CTimeoutStep::CheckOpenL, iContactsDatabase, cid, KErrLocked, iTimeOut);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckUpdateL, iContactsDatabase, cid, KErrLocked, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckRead, iContactsDatabase, cid, KErrNone, 0, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckAddL, iContactsDatabase, cid, KErrLocked, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckDelete, iContactsDatabase, cid, KErrLocked, iTimeOut, EFalse);
+ if(!ret)
+ {
+ ERR_PRINTF2(KErrOnIteration,i+1);
+ break;
+ }
+
+ }
+ aContactsDatabase->DatabaseCommitLP( EFalse );
+ iTimeOut = KStartTime;
+ iTransaction = EFalse;
+ return ret;
+ }
+
+TBool CTimeoutStep::TransactionInternalLockingTestL()
+ {
+ INFO_PRINTF1(KTest3);
+ iTransaction = ETrue;
+ TBool ret = EFalse;
+ TContactItemId cid = 0;
+ TInt i = 0;
+ iContactsDatabase->DatabaseBeginLC( EFalse );
+ for(; i < KIterations ; ++i, iTimeOut += KDefaultTime )
+ {
+ cid = iIterate->NextL();
+ OpenL(cid);//locks contact with id == cid
+ ret = CheckTimeOutL(&CTimeoutStep::CheckOpenL, iContactsDatabase, cid, KErrInUse, iTimeOut);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckUpdateL, iContactsDatabase, cid, KErrInUse, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckRead, iContactsDatabase, cid, KErrNone, 0, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckAddL, iContactsDatabase, cid, KErrNone, 0, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckDelete, iContactsDatabase, cid, KErrInUse, iTimeOut, EFalse);
+ CloseL( ETrue );
+ if(!ret)
+ {
+ ERR_PRINTF2(KErrOnIteration,i+1);
+ break;
+ }
+
+ }
+ iContactsDatabase->DatabaseCommitLP( EFalse );
+ iTimeOut = KStartTime;
+ iTransaction = EFalse;
+ return ret;
+ }
+
+TBool CTimeoutStep::TemplateLockingTestL(CContactDatabase *aContactsDatabase)
+ {
+ INFO_PRINTF1(KTest4);
+ TBool ret = EFalse;
+ TContactItemId cid = iIterate->NextL();
+
+ ReadL( cid );
+ _LIT(KTLabel,"UserDefined template");
+ CContactItem *ctemplate = iContactsDatabase->CreateContactCardTemplateLC(iContactItem, KTLabel);
+ cid = aContactsDatabase->AddNewContactL(*ctemplate);
+ CloseL( EFalse );
+
+ TInt i = 0;
+ for(; i < KIterations ; ++i, iTimeOut += KDefaultTime )
+ {
+ OpenL( ctemplate->Id() );//locks contact/template with id == cid
+ ret = CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, ctemplate->Id(), KErrInUse, iTimeOut);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckUpdateL, aContactsDatabase, ctemplate->Id(), KErrInUse, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckRead, aContactsDatabase, ctemplate->Id(), KErrNone, 0, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckDelete, aContactsDatabase, ctemplate->Id(), KErrInUse, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckUpdateL, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckRead, aContactsDatabase, cid, KErrNone, 0, EFalse);
+ ret = ret && CheckTimeOutL(&CTimeoutStep::CheckDelete, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse);
+ CloseL( ETrue );
+ if(!ret)
+ {
+ ERR_PRINTF2(KErrOnIteration,i+1);
+ break;
+ }
+ }
+ iTimeOut = KStartTime;
+ CleanupStack::PopAndDestroy( ctemplate );
+ return ret;
+ }
+
+void CTimeoutStep::TimeoutValuesTestL(CContactDatabase *aContactsDatabase)
+ {
+ INFO_PRINTF1(KTest5);
+ TContactItemId cid = iIterate->NextL();
+
+ iTimeOut = KStartTime;
+ TRAPD(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT(KErrNone == err);
+
+
+ iTimeOut = KMinTInt;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT(KErrArgument == err);
+ OpenL( cid );
+ TESTPRINT( CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, cid, KErrInUse, KStartTime, EFalse) );
+ CloseL( ETrue );
+
+ iTimeOut = -1;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT(KErrArgument == err);
+ OpenL( cid );
+ TESTPRINT(CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, cid, KErrInUse, KStartTime, EFalse) );
+ CloseL( ETrue );
+
+ iTimeOut = 0;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT( KErrNone == err );
+ OpenL( cid );
+ TESTPRINT( CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse) );
+ CloseL( ETrue );
+
+ iTimeOut = 1;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT(KErrNone == err);
+ OpenL( cid );
+ TESTPRINT( CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse) );
+ CloseL( ETrue );
+
+ iTimeOut = KFiveMins - 1;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT(KErrNone == err);
+
+ iTimeOut = KFiveMins;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT( KErrNone == err );
+ OpenL( cid );
+ TESTPRINT( CheckTimeOutL(&CTimeoutStep::CheckOpenL, aContactsDatabase, cid, KErrInUse, iTimeOut, EFalse) );
+ CloseL( ETrue );
+
+ iTimeOut = KFiveMins + 1;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT(KErrArgument == err);
+
+ iTimeOut = KMaxTInt;
+ TRAP(err, SetTimeOutL( aContactsDatabase ) );
+ TESTPRINT(KErrArgument == err);
+
+
+ iTimeOut = KStartTime;
+ SetTimeOutL();
+ }
+
+