diff -r 000000000000 -r e686773b3f54 phonebookengines/contactsmodel/tsrc/Integration/TestImpExvCard/src/TestImpOOM.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/contactsmodel/tsrc/Integration/TestImpExvCard/src/TestImpOOM.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,141 @@ +// 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: +// + +#include "TestImpOOM.h" + +CTestImpOOM::~CTestImpOOM() +/** + * Destructor + */ + { + } + +CTestImpOOM::CTestImpOOM() +/** + * Constructor + */ + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KTestImpOOM); + } + +TVerdict CTestImpOOM::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Start Import of vCards in OOM Test")); + + iScheduler = new (ELeave) CActiveScheduler; + CActiveScheduler::Install(iScheduler); + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TVerdict CTestImpOOM::doTestStepL() +/** + * @return - TVerdict code + * Override of base class pure virtual + */ + { + SetTestStepResult(EPass); + TInt tryCount = 1; + TInt err = KErrNone; + TBool success = EFalse; + CArrayPtr* item = NULL; + + CContactDatabase *dBase = NULL; + _LIT(KTestDbName, "c:importcontact.cdb"); + RFs fsSession; + RFileReadStream readStream; + + //replace existing database + dBase = CContactDatabase::ReplaceL(KTestDbName); + CleanupStack::PushL(dBase); + + //connect to file system + User::LeaveIfError(fsSession.Connect()); + CleanupClosePushL(fsSession); + + TFileName fileName; +#ifdef __WINS__ + fileName.Append(_L("c:")); +#else + TFileName processFileName = RProcess().FileName(); + TParsePtrC parse(processFileName); + fileName.Append(parse.Drive()); +#endif + fileName.Append(KImportOOM()); + + //Opens a file containing a stream and prepares the stream for reading + User::LeaveIfError(readStream.Open(fsSession, fileName, EFileRead)); + CleanupClosePushL(readStream); + + for ( ;; ) + { + __UHEAP_SETFAIL(RHeap::EFailNext, tryCount); + TRAP(err, item = dBase->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl), readStream, success, CContactDatabase::EDefault)); + + if ( err == KErrNone ) + { + __UHEAP_RESET; + INFO_PRINTF1(_L("OOM testing of CContactDatabase::ImportContactsL Api is done")); + break; + } + if ( err != KErrNoMemory ) + { + SetTestStepResult(EFail); + break; + } + __UHEAP_SETFAIL(RHeap::ENone, 0); + tryCount++; + } + + // item = dBase->ImportContactsL(TUid::Uid(KUidVCardConvDefaultImpl), readStream, success, CContactDatabase::EDefault); + INFO_PRINTF2(_L("TRYCOUNT %d"), tryCount); + TInt contactsCount = (*item).Count(); + INFO_PRINTF2(_L("Total number of contacts imported is %d "), contactsCount); + if (contactsCount == 0) + { + SetTestStepResult(EFail); + } + + readStream.Close(); + + // Cleanup + item->ResetAndDestroy(); + delete item; + CleanupStack::PopAndDestroy(&readStream); + fsSession.Close(); + CleanupStack::PopAndDestroy(&fsSession); + CleanupStack::PopAndDestroy(dBase); + + return TestStepResult(); + } + +TVerdict CTestImpOOM::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + CActiveScheduler::Install(NULL); + delete iScheduler; + INFO_PRINTF1(_L("Completed Import of vCards in OOM Test")); + return TestStepResult(); + } +