--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp Mon Apr 19 14:40:05 2010 +0300
@@ -0,0 +1,1547 @@
+/*
+* Copyright (c) 2010 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: This file contains testclass implementation.
+*
+*/
+
+// change the level of RVCT compiler warning 'non-POD class passed thru ellipses' to a remark.
+#ifdef __MARM__
+#pragma diag_remark 1446
+#endif
+
+// [INCLUDE FILES] - do not remove
+#include "harvesterplugintester.h"
+#include <e32svr.h>
+#include <f32file.h>
+#include <stifparser.h>
+#include <stiftestinterface.h>
+#include <favouritesdb.h>
+#include <msvapi.h>
+#include <bautils.h>
+#include "harvesterobserver.h"
+#include "cmessageplugin.h"
+#include "cmessagesessionobserver.h" //For CMsvSession
+#include "ccpixsearcher.h"
+#include "bookmarksplugin.h"
+#include "applicationsplugin.h"
+#include "ccontactsplugin.h"
+#include "ccalendarplugin.h"
+#include "ccalendarobserver.h"
+#include "mediaplugin.h"
+#include <harvesterclient.h>
+#include "mdsitementity.h"
+#include "cpixmdedbmanager.h"
+//#include "CBlacklistMgr.h"
+#include "videoplugin.h"
+#include "imageplugin.h"
+
+_LIT(KAppBasePath,"@c:root file");
+const TInt KMsgPluginBaseAppClassMaxLen = 64;
+
+// For Notes --Start
+#include <d32dbms.h>
+#include <utf.h>
+#include "notesplugin.h"
+
+//Test Uid for testing Blacklist manager
+
+//const TUid KTestUid = { 0x101D6348 };
+
+#define MEDIA_QBASEAPPCLASS "@c:root media audio"
+#define LMEDIA_QBASEAPPCLASS L"@c:root media audio"
+#define VIDEO_QBASEAPPCLASS "@c:root media video"
+#define LVIDEO_QBASEAPPCLASS L"@c:root media video"
+#define IMAGE_QBASEAPPCLASS "@c:root media image"
+#define LIMAGE_QBASEAPPCLASS L"@c:root media image"
+
+// For Notes --End
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+void CHarvesterPluginTester::Delete()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// Run specified method. Contains also table of test mothods and their names.
+TInt CHarvesterPluginTester::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ // Copy this line for every implemented function.
+ // First string is the function name used in TestScripter script file.
+ // Second is the actual implementation member function.
+ ENTRY( "TestStartHarvester", CHarvesterPluginTester::TestStartHarvesterL ),
+ ENTRY( "TestFolderRename", CHarvesterPluginTester::TestFolderRenamingL ),
+ ENTRY( "TestFormBaseAppClass", CHarvesterPluginTester::TestFormBaseAppClass ),
+ ENTRY( "TestDatabasePath", CHarvesterPluginTester::TestDatabasePathL ),
+ ENTRY( "TestCreateIndexItemL_Add", CHarvesterPluginTester::TestCreateIndexItemL ),
+ ENTRY( "TestCreateIndexItemL_Update", CHarvesterPluginTester::TestCreateIndexItemL ),
+ ENTRY( "TestCreateIndexItemL_Delete", CHarvesterPluginTester::TestCreateIndexItemL ),
+ ENTRY( "TestMessaging", CHarvesterPluginTester::TestMessageHarvesterL ),
+ ENTRY( "TestMessageHarvesting", CHarvesterPluginTester::TestMessageHarvesterWithMessageL ),
+ ENTRY( "TestMessageDriveChange", CHarvesterPluginTester::TestMessageHarvesterChangeDriveL ),
+ ENTRY( "TestStartBookmarksHarvesterL", CHarvesterPluginTester::TestStartBookmarksHarvesterL ),
+ ENTRY( "TestAddBookmarkL", CHarvesterPluginTester::TestAddBookmarkL ),
+ ENTRY( "TestAddGetDomainL", CHarvesterPluginTester::TestAddGetDomainL ),
+ ENTRY( "TestStartApplicationsHarvesterL", CHarvesterPluginTester::TestStartApplicationsHarvesterL ),
+ ENTRY( "TestCreateApplicationsIndexItemL", CHarvesterPluginTester::TestCreateApplicationsIndexItemL ),
+ ENTRY( "TestStartNotesHarvesterL", CHarvesterPluginTester::TestStartNotesHarvesterL ),
+ ENTRY( "TestAddNoteL", CHarvesterPluginTester::TestAddNoteL ),
+ ENTRY( "TestAddLongNoteL", CHarvesterPluginTester::TestAddLongNoteL ),
+ ENTRY( "TestAddAlphaNumericNoteL", CHarvesterPluginTester::TestAddAlphaNumericNoteL ),
+ ENTRY( "TestDeleteNoteL", CHarvesterPluginTester::TestDeleteNoteL ),
+ ENTRY( "TestUpdateNoteL", CHarvesterPluginTester::TestUpdateNoteL ),
+ ENTRY( "TestContactsHarvesting", CHarvesterPluginTester::TestStartContactsHarvesterL ),
+ ENTRY( "TestCreateContactIndexItemL_Add", CHarvesterPluginTester::TestCreateContactIndexItemL ),
+ ENTRY( "TestCreateContactIndexItemL_Edit", CHarvesterPluginTester::TestCreateContactIndexItemL ),
+ ENTRY( "TestCreateContactIndexItemL_Delete", CHarvesterPluginTester::TestCreateContactIndexItemL ),
+ ENTRY( "TestCreateContactGroup", CHarvesterPluginTester::TestCreateContactGroupL ),
+ ENTRY( "TestCalenderHarvesting", CHarvesterPluginTester::TestStartCalenderHarvesterL ),
+ ENTRY( "TestCalenderEntry",CHarvesterPluginTester::TestCalenderEntryL ),
+ ENTRY( "TestCreateMMS",CHarvesterPluginTester::TestCreateMmsL ),
+ ENTRY( "TestCreateEmail",CHarvesterPluginTester::TestCreateEmailL ),
+ ENTRY( "TestAudioHarvesting",CHarvesterPluginTester::TestAudioHarvestingL ),
+ ENTRY( "TestMdsSyncController",CHarvesterPluginTester::TestMdsSyncControllerL ),
+ //ENTRY( "TestBlacklistPlugin",CHarvesterPluginTester::TestBlacklistPluginL ),
+ //ENTRY( "TestBlacklistPluginVersion",CHarvesterPluginTester::TestBlacklistPluginVersionL ),
+ ENTRY( "TestVideoHarvestingIndex",CHarvesterPluginTester::TestVideoHarvestingIndexL ),
+ ENTRY( "TestVideoHarvestingUpdateIndex",CHarvesterPluginTester::TestVideoHarvestingUpdateIndexL ),
+ ENTRY( "TestVideoHarvestingDeleteIndex",CHarvesterPluginTester::TestVideoHarvestingDeleteIndexL ),
+ ENTRY( "TestImageHarvestingAddIndex",CHarvesterPluginTester::TestImageHarvestingAddIndexL ),
+ ENTRY( "TestImageHarvestingUpdateIndex",CHarvesterPluginTester::TestImageHarvestingUpdateIndexL ),
+ ENTRY( "TestImageHarvestingDeleteIndex",CHarvesterPluginTester::TestImageHarvestingDeleteIndexL ),
+ ENTRY( "TestAudioMMCEventL",CHarvesterPluginTester::TestAudioMMCEventL ),
+ ENTRY( "TestVideoMMCEventL",CHarvesterPluginTester::TestVideoMMCEventL ),
+ ENTRY( "TestImageMMCEventL",CHarvesterPluginTester::TestImageMMCEventL ),
+ //ADD NEW ENTRY HERE
+ // [test cases entries] - Do not remove
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+_LIT( KNoErrorString, "No Error" );
+//_LIT( KErrorString, " *** Error ***" );
+
+void doLog( CStifLogger* logger, TInt error, const TDesC& errorString )
+ {
+ if( KErrNone == error ) logger->Log( KNoErrorString );
+ else logger->Log( errorString );
+ }
+
+// Example test method function.
+// -----------------------------------------------------------------------------
+TInt CHarvesterPluginTester::TestStartHarvesterL( CStifItemParser& /*aItem*/ )
+ {
+ // Print to UI
+ _LIT( KHarvesterPluginTester, "HarvesterPluginTester: %S" );
+ _LIT( KExample, "In TestStartHarvesterL" );
+ TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+
+ // Print to log file
+ iLog->Log( KExample );
+ CFilePlugin* filePlugin = CFilePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( filePlugin );
+ filePlugin->StartPluginL(); //Calls Add
+ filePlugin->StartHarvestingL( KAppBasePath );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ delete filePlugin;
+ delete iPluginTester;
+ doLog( iLog, KErrNone, KNoErrorString );
+ return KErrNone;
+ }
+
+//Same as before, except we rename a directory before calling wait->Start()
+TInt CHarvesterPluginTester::TestFolderRenamingL( CStifItemParser& /*aItem*/ )
+ {
+ CFilePlugin* filePlugin = CFilePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( filePlugin );
+ filePlugin->StartPluginL(); //Calls Add
+ filePlugin->StartHarvestingL( KAppBasePath );
+
+ _LIT( KDirectoryToRenameFrom, "C:\\data\\FileToTestRename" );
+ _LIT( KDirectoryToRenameTo, "C:\\data\\FileToTestRenamed" );
+ RFs fs;
+ fs.Connect();
+ TInt error = fs.Rename( KDirectoryToRenameFrom, KDirectoryToRenameTo );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ //rename it back to what it was.
+ error = fs.Rename( KDirectoryToRenameTo, KDirectoryToRenameFrom );
+
+ delete filePlugin;
+ delete iPluginTester;
+ doLog( iLog, error, _L("Error: TestFolderRename.") );
+
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestFormBaseAppClass( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KFilePluginBaseAppClass, "FormBaseAppClass" );
+ _LIT( KExample, "In TestFormBaseAppClass" );
+ TestModuleIf().Printf( 0, KFilePluginBaseAppClass, KExample );
+
+ TInt driveNumber;
+ TBuf<100> formedBaseAppClass;
+ TBuf<100> expectedBaseAppClass;
+ TChar driveChar;
+ CFilePlugin* filePlugin = CFilePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( filePlugin );
+ filePlugin->StartPluginL();
+
+ TInt error = KErrNone;
+ TInt errorNumber = 0;
+ _LIT( KBaseAppClassFormatString, "@%c:root file");
+ _LIT( KTestFormBaseAppClassNoError, "TestFormBaseAppClass: No Error" );
+
+ if( aItem.GetNextInt ( driveNumber ) == KErrNone && error == KErrNone )
+ {
+ filePlugin->FormBaseAppClass( static_cast<TDriveNumber>( driveNumber ), formedBaseAppClass );
+ if( aItem.GetNextChar ( driveChar ) == KErrNone )
+ {
+ expectedBaseAppClass.Format( KBaseAppClassFormatString, driveChar );
+ error = expectedBaseAppClass.Compare( formedBaseAppClass );
+ if( aItem.GetNextInt ( errorNumber ) == KErrNone )
+ error = ( KErrNone == error || -1 == errorNumber ) ? KErrNone : KErrGeneral ;
+ }
+ }
+ delete filePlugin;
+ delete iPluginTester;
+
+ doLog( iLog, error, KTestFormBaseAppClassNoError );
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestDatabasePathL( CStifItemParser& aItem )
+ {
+ TInt driveNumber;
+ CFilePlugin* filePlugin = CFilePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( filePlugin );
+ filePlugin->StartPluginL();
+
+ HBufC* buffer;
+ TBuf<KMaxFileName> returnedDbPath;
+ TBuf<KMaxFileName> expectedDbPath;
+ TInt error = KErrNone;
+ TInt errorNumber;
+ TChar driveChar;
+ _LIT( KTestDatabasePathNoError, "TestDatabasePathL: No Error" );
+
+ _LIT( KDbFormatString, "%c:\\Private\\2001f6f7\\indexing\\indexdb\\root\\file" );
+ if( aItem.GetNextInt ( driveNumber ) == KErrNone && error == KErrNone )
+ {
+ buffer = filePlugin->DatabasePathLC( static_cast<TDriveNumber>( driveNumber ) );
+ returnedDbPath.Copy( *buffer );
+ if( aItem.GetNextChar ( driveChar ) == KErrNone )
+ {
+ expectedDbPath.Format( KDbFormatString, driveChar );
+ error = expectedDbPath.Compare( returnedDbPath );
+ if( aItem.GetNextInt ( errorNumber ) == KErrNone )
+ error = ( KErrNone == error || -1 == errorNumber ) ? KErrNone : KErrGeneral ;
+ }
+ }
+ CleanupStack::PopAndDestroy( buffer );
+ delete filePlugin;
+ delete iPluginTester;
+ doLog( iLog, error, KTestDatabasePathNoError );
+ return error;
+ }
+
+//Helper functions
+enum TSearchType
+ {
+ ESearchTypeResultsExpected=0,
+ ESearchTypeNoResultsExpected
+ };
+
+TInt doSearch( const TDesC& aSearchString, const TDesC& aBaseAppClass, TSearchType aSearchType )
+ {
+ RSearchServerSession session;
+ User::LeaveIfError( session.Connect() );
+ CCPixSearcher* searcher = CCPixSearcher::NewLC( session );
+ searcher->OpenDatabaseL( aBaseAppClass );
+
+ TInt docCount = searcher->SearchL( aSearchString, KNullDesC);
+
+ CleanupStack::PopAndDestroy( searcher );
+ session.Close();
+
+ if( aSearchType == ESearchTypeResultsExpected )
+ {
+ return docCount > 0 ? KErrNone : KErrNotFound;
+ }
+ else
+ {
+ return 0 == docCount ? KErrNone : KErrNotFound;
+ }
+ }
+
+TInt CHarvesterPluginTester::TestCreateIndexItemL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC fileName;
+ TPtrC createIndexAction;
+ CFilePlugin* filePlugin = CFilePlugin::NewL();
+ CHarvesterObserver* observer = CHarvesterObserver::NewL( filePlugin );
+ filePlugin->StartPluginL();
+ _LIT( KFileNameFormat, "C:\\TestFramework\\" );
+ _LIT( KActionAdd, "add" );
+ _LIT( KActionDelete, "delete" );
+ _LIT( KActionUpdate, "update" );
+ _LIT( KCreateIndexItemNoError, "CreateIndexItemL: Error" );
+
+ TBuf<KMaxFileName> filePathName( KFileNameFormat );
+
+ if( aItem.GetNextString ( createIndexAction ) == KErrNone )
+ {
+ if( createIndexAction.Compare( KActionAdd ) == 0 )
+ {
+ if( aItem.GetNextString ( fileName ) == KErrNone && error == KErrNone )
+ {
+ filePathName.Append( fileName );
+ filePlugin->CreateFileIndexItemL( filePathName, ECPixAddAction );
+ TPtrC searchString;
+ while( aItem.GetNextString ( searchString ) == KErrNone && error == KErrNone )
+ {
+ error = doSearch( searchString, _L(FILE_QBASEAPPCLASS), ESearchTypeResultsExpected );
+ }
+ filePlugin->CreateFileIndexItemL( filePathName, ECPixRemoveAction );
+ }
+ }
+ if( createIndexAction.Compare( KActionDelete ) == 0 )
+ {
+ if( aItem.GetNextString ( fileName ) == KErrNone && error == KErrNone )
+ {
+ filePathName.Append( fileName );
+ filePlugin->CreateFileIndexItemL( filePathName, ECPixRemoveAction );
+ TPtrC searchString;
+ while( aItem.GetNextString ( searchString ) == KErrNone && error == KErrNone )
+ {
+ error = doSearch( searchString, _L(FILE_QBASEAPPCLASS), ESearchTypeNoResultsExpected );
+ }
+ }
+ }
+ if( createIndexAction.Compare( KActionUpdate ) == 0 )
+ {
+ if( aItem.GetNextString ( fileName ) == KErrNone && error == KErrNone )
+ {
+ filePathName.Append( fileName );
+ filePlugin->CreateFileIndexItemL( filePathName, ECPixUpdateAction );
+ TPtrC searchString;
+ while( aItem.GetNextString ( searchString ) == KErrNone && error == KErrNone )
+ {
+ error = doSearch( searchString, _L(FILE_QBASEAPPCLASS), ESearchTypeResultsExpected );
+ }
+ }
+ }
+ }
+ delete filePlugin;
+ delete observer;
+ doLog( iLog, error, KCreateIndexItemNoError );
+ return error;
+ }
+
+/**
+* Message harvester test method.
+* @since ?Series60_version
+* @param aItem Script line containing parameters.
+* @return Symbian OS error code.
+*/
+TInt CHarvesterPluginTester::TestMessageHarvesterL( CStifItemParser& /*aItem*/ )
+ {
+ // Print to UI
+ _LIT( KHarvesterPluginTester, "HarvesterPluginTester" );
+ _LIT( KExample, "In TestMessageHarvesterL" );
+ TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ CMessagePlugin* plugin = CMessagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ CMessageSessionObserver* sessionobserver = CMessageSessionObserver::NewL();
+ CMsvSession* msgSession = CMsvSession::OpenSyncL(*sessionobserver);
+ // Form the baseappclass for this media
+ TBuf<KMsgPluginBaseAppClassMaxLen> baseAppClass;
+ TInt drive = msgSession->CurrentDriveL();
+ CMessagePlugin::FormBaseAppClass(TDriveNumber(drive),baseAppClass);
+ //Get current base app class for drive
+ //CMessagePlugin::FormBaseAppClass
+ plugin->StartHarvestingL( baseAppClass );
+ iPluginTester->iWaitForHarvester->Start();
+
+ delete plugin;
+ delete iPluginTester;
+ delete sessionobserver;
+ delete msgSession;
+ doLog(iLog,KErrNone,KNoErrorString);
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestMessageHarvesterWithMessageL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KHarvesterPluginTester, "HarvesterPluginTester" );
+ _LIT( KExample, "In TestMessageHarvesterWithMessageL" );
+ TInt error(KErrNone);
+
+ TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+ CMessagePlugin* plugin = CMessagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ CMessageSessionObserver* sessionobserver = CMessageSessionObserver::NewL();
+ CMsvSession* msgSession = CMsvSession::OpenSyncL(*sessionobserver);
+ // Form the baseappclass for this media
+ TBuf<KMsgPluginBaseAppClassMaxLen> baseAppClass;
+ TInt drive = msgSession->CurrentDriveL();
+ //Get current base app class for drive
+ CMessagePlugin::FormBaseAppClass(TDriveNumber(drive),baseAppClass);
+ plugin->StartHarvestingL( baseAppClass );
+ //Create a new SMS message
+ TMsvId msgid = MessagingUtils::CreateMessageL(msgSession,
+ _L("+3584400220055"),
+ _L("+919845062437"),
+ _L("This is test from bhuvnesh"));
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL(_L("+919845062437"),baseAppClass,KNullDesC);
+ MessagingUtils::RemoveEntryL(msgSession,msgid);
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+
+ delete plugin;
+ delete iPluginTester;
+ delete sessionobserver;
+ delete msgSession;
+ doLog(iLog,error,_L("Error in TestMessageHarvesterWithMessageL"));
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestMessageHarvesterChangeDriveL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KHarvesterPluginTester, "HarvesterPluginTester" );
+ _LIT( KExample, "In TestMessageHarvesterChangeDriveL" );
+ TInt error(KErrNone);
+
+ TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+ CMessagePlugin* plugin = CMessagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ CMessageSessionObserver* sessionobserver = CMessageSessionObserver::NewL();
+ CMsvSession* msgSession = CMsvSession::OpenSyncL(*sessionobserver);
+ // Form the baseappclass for this media
+ TBuf<KMsgPluginBaseAppClassMaxLen> baseAppClass;
+ TInt drive = msgSession->CurrentDriveL();
+ //Get current base app class for drive
+ CMessagePlugin::FormBaseAppClass(TDriveNumber(drive),baseAppClass);
+ plugin->StartHarvestingL( baseAppClass );
+ iPluginTester->iWaitForHarvester->Start();
+ //Harvesting completed change the drive and make sure new message harvested
+ drive == EDriveC ? drive = EDriveE : drive = EDriveC;
+ TRequestStatus status = KRequestPending;
+ msgSession->ChangeDriveL(drive,status);
+ User::WaitForAnyRequest();
+ //User::WaitForRequest(status);//Wait to complete this request
+ plugin->StartHarvestingL( baseAppClass );
+ TMsvId msgid = MessagingUtils::CreateMessageL(msgSession,
+ _L("+3584400220055"),
+ _L("+919845062437"),
+ _L("This is test from bhuvnesh"));
+ iPluginTester->iWaitForHarvester->Start();//Start again
+ drive = msgSession->CurrentDriveL();
+ CMessagePlugin::FormBaseAppClass(TDriveNumber(drive),baseAppClass);
+ TInt count = SearchForTextL(_L("+919845062437"),baseAppClass,KNullDesC);
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ MessagingUtils::RemoveEntryL(msgSession,msgid);
+
+ delete plugin;
+ delete iPluginTester;
+ delete sessionobserver;
+ delete msgSession;
+ doLog(iLog,error,_L("Error in TestMessageHarvesterChangeDriveL"));
+ return error;
+ }
+
+TInt CHarvesterPluginTester::SearchForTextL(const TDesC& aQueryString, const TDesC& aBaseAppclass,const TDesC& aDefaultField)
+ {
+ TInt DocumentCount(KErrNotFound);
+ RSearchServerSession session;
+ User::LeaveIfError(session.Connect());
+ CCPixSearcher* searcher = CCPixSearcher::NewL(session);
+ searcher->OpenDatabaseL(aBaseAppclass);
+ // Send for indexing
+ if ( searcher )
+ {
+ DocumentCount = searcher->SearchL(aQueryString, aDefaultField);
+ }
+ return DocumentCount;
+ }
+
+TInt CHarvesterPluginTester::TestStartBookmarksHarvesterL( CStifItemParser& /*aItem */)
+ {
+ CBookmarksPlugin* plugin = CBookmarksPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ plugin->StartHarvestingL( _L(BOOKMARK_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ delete plugin;
+ delete iPluginTester;
+ doLog( iLog, KErrNone, KNoErrorString );
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestAddBookmarkL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ CBookmarksPlugin* plugin = CBookmarksPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //starts the bookmarks db monitor.
+
+ //now add a bookmark.
+ CFavouritesItem* item = CFavouritesItem::NewL();
+ RFavouritesDb favoritesDb;
+ RFavouritesSession favSession;
+ error = favSession.Connect();
+ if( KErrNone == error ) error = favoritesDb.Open( favSession, KBrowserBookmarks ) ;
+ if( KErrNone != error ) return error;
+
+ item->SetType( CFavouritesItem::EItem );
+ item->SetParentFolder( KFavouritesRootUid );
+
+ TPtrC string;
+ error = aItem.GetNextString( string );
+ if( KErrNone == error )
+ item->SetNameL( string );
+
+ error = aItem.GetNextString( string );
+ if( KErrNone == error )
+ item->SetUrlL( string );
+
+ if( KErrNone == error )
+ {
+ error = favoritesDb.Begin( ETrue );
+ if( KErrNone == error ) error = favoritesDb.Add( *item, ETrue ); //ETrue for Autorename. We are searching only by URL so this is fine.
+ if( KErrNone == error ) error = favoritesDb.Commit();
+ plugin->StartHarvestingL( _L(BOOKMARK_QBASEAPPCLASS) );
+ if( KErrNone == error ) iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ }
+
+ //now, search for URL.
+ if( KErrNone == error )
+ {
+ error = aItem.GetNextString( string );
+ if( KErrNone == error )
+ error = doSearch( string , _L( BOOKMARK_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ }
+
+ delete plugin;
+ delete iPluginTester;
+
+ favoritesDb.Close();
+ favSession.Close();
+
+ doLog( iLog, error, _L("Error in AddBookmarkL") );
+ return error;
+ }
+
+//Forward declare this function.
+//It is a local function in the .cpp file and hence not listed in .h file.
+//Forward declare it so that the compilation can go thru - the implementation
+//will be picked up by the linker.
+void GetDomainNameL( const TDesC& aUrl, TPtrC& aDomain );
+
+TInt CHarvesterPluginTester::TestAddGetDomainL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC inputString;
+ TPtrC domain;
+ while( aItem.GetNextString( inputString ) == KErrNone )
+ {
+ GetDomainNameL( inputString, domain );
+ if( aItem.GetNextString( inputString ) == KErrNone )
+ error = domain.Compare( inputString );
+ if( error != KErrNone ) return error;
+ }
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestStartApplicationsHarvesterL( CStifItemParser& /*aItem*/ )
+ {
+ CApplicationsPlugin* appsPlugin = CApplicationsPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( appsPlugin );
+ appsPlugin->StartPluginL(); //Calls Add
+ appsPlugin->StartHarvestingL( KNullDesC );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ delete appsPlugin;
+ delete iPluginTester;
+ doLog( iLog, KErrNone, KNoErrorString );
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestCreateApplicationsIndexItemL( CStifItemParser& /*aItem*/ )
+ {
+ CApplicationsPlugin* appsPlugin = CApplicationsPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( appsPlugin );
+ appsPlugin->StartPluginL();
+
+ //Force reharvesting:
+ appsPlugin->HandleAppListEvent( 1 ); //EListChanged = 1
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+
+ delete appsPlugin;
+ delete iPluginTester;
+ doLog( iLog, KErrNone, KNoErrorString );
+ return KErrNone;
+ }
+
+ TInt CHarvesterPluginTester::TestStartNotesHarvesterL( CStifItemParser& /*aItem*/ )
+ {
+ CNotesPlugin* plugin = CNotesPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ delete plugin;
+ delete iPluginTester;
+ doLog( iLog, KErrNone, KNoErrorString );
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestAddNoteL( CStifItemParser& aItem )
+ {
+ TPtrC string;
+ TPtrC searchstring;
+ TInt error = aItem.GetNextString( string );
+ error = aItem.GetNextString( searchstring );
+ error = PerformNotesTestL(string , searchstring);
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestAddLongNoteL( CStifItemParser& aItem )
+ {
+ TPtrC string;
+ TPtrC searchstring;
+ TInt error = aItem.GetNextString( string );
+ error = aItem.GetNextString( searchstring );
+ error = PerformNotesTestL(string , searchstring);
+ return error;
+ }
+TInt CHarvesterPluginTester::TestAddAlphaNumericNoteL( CStifItemParser& aItem )
+ {
+ TPtrC string;
+ TPtrC searchstring;
+ TInt error = aItem.GetNextString( string );
+ error = aItem.GetNextString( searchstring );
+ error = PerformNotesTestL(string , searchstring);
+ return error;
+ }
+TInt CHarvesterPluginTester::PerformNotesTestL( TPtrC aString1 , TPtrC aString2)
+ {
+ TInt error = KErrNone;
+ HBufC8* memo = NULL;
+ CNotesPlugin* plugin = CNotesPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //starts the Notes database notifier
+ if(aString1.Length() > 0)
+ {
+ RFs fssession;
+ User::LeaveIfError( fssession.Connect() );
+ RFile testfile;
+ error = testfile.Open(fssession,aString1,EFileRead);
+ if(error == KErrNone)
+ {
+ TInt size(0);
+ testfile.Size(size);
+ memo = HBufC8::NewL(size);
+ TPtr8 memoptr = memo->Des();
+ User::LeaveIfError( testfile.Read(memoptr, size ) );
+ //testfile.Read(memoptr,size);
+ testfile.Close();
+ fssession.Close();
+ }
+ }
+ if(error == KErrNone)
+ {
+ CCalendarObserver* session = CCalendarObserver::NewL();
+ session->AddNoteL(memo->Des());
+ plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ error = doSearch( aString2, _L(NOTES_QBASEAPPCLASS), ESearchTypeResultsExpected );
+
+ delete session;
+ doLog( iLog, error, KNoErrorString );
+ }
+ delete memo;
+ delete plugin;
+ delete iPluginTester;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestDeleteNoteL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ _LIT( KSearchError, "Search Failed" );
+
+ CNotesPlugin* plugin = CNotesPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+
+ CCalendarObserver* session = CCalendarObserver::NewL();
+ plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
+ // Add a Note entry
+ TPtrC searchstring;
+ error = aItem.GetNextString( searchstring );
+ HBufC8* buf8 = HBufC8::NewL(2*searchstring.Length());
+ buf8->Des().Copy(searchstring);
+ session->AddNoteL( buf8->Des());
+ delete buf8;
+ iPluginTester->iWaitForHarvester->Start();
+ error = doSearch( _L("TestNote"), _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ doLog( iLog, error, KSearchError );
+ if( error == KErrNone)
+ {
+ session->DeleteNoteEntryL();
+ plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();
+ //Delete the Note entry added previously and search for result
+ error = doSearch( _L("TestNote"), _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ //If the entery is succesfully deleted, make error to KErrNone.To show testcase success
+ if(error == KErrNotFound)
+ error = KErrNone;
+ }
+ delete session;
+ delete plugin;
+ delete iPluginTester;
+ doLog( iLog, error, KSearchError );
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestUpdateNoteL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ _LIT( KSearchError, "Search Failed" );
+ TPtrC oldString;
+ error = aItem.GetNextString( oldString );
+ TPtrC newString;
+ error = aItem.GetNextString( newString );
+ CNotesPlugin* plugin = CNotesPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ CCalendarObserver* session = CCalendarObserver::NewL();
+ plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
+ // Add a Note entry
+ HBufC8* oldbuf8 = HBufC8::NewL(2*oldString.Length());
+ oldbuf8->Des().Copy(oldString);
+ session->AddNoteL( oldbuf8->Des());
+ TBuf<20> oldsearchstring;
+ oldsearchstring.Copy( oldString );
+ iPluginTester->iWaitForHarvester->Start();
+ error = doSearch( oldsearchstring, _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ doLog( iLog, error, KSearchError );
+
+ TBuf<20> newsearchstring;
+ newsearchstring.Copy( newString );
+ HBufC8* newbuf8 = HBufC8::NewL(2*newString.Length());
+ newbuf8->Des().Copy(newString);
+ //update the Note entry and search for result
+ session->UpdateNoteEntryL( oldbuf8->Des(), newbuf8->Des() );
+ plugin->StartHarvestingL( _L(NOTES_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();
+ error = doSearch( newsearchstring, _L( NOTES_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ doLog( iLog, error, KSearchError );
+
+ delete newbuf8;
+ delete oldbuf8;
+ delete session;
+ delete plugin;
+ delete iPluginTester;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestStartContactsHarvesterL( CStifItemParser& /*aItem*/ )
+ {
+ CContactsPlugin* plugin = CContactsPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //start to moniter contacts db
+ plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ delete plugin;
+ delete iPluginTester;
+ doLog( iLog, KErrNone, KNoErrorString );
+ return KErrNone;
+ }
+
+TContactItemId CHarvesterPluginTester::CreateNewContactL( CContactDatabase& database,const TDesC& aName,const TDesC& aPhoneNumber )
+ {
+ // Create a contact card to contain the data
+ CContactCard* newCard = CContactCard::NewLC();
+
+ // Create the firstName field and add the data to it
+ CContactItemField* firstName = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldGivenName );
+ firstName->TextStorage()->SetTextL(aName);
+ newCard->AddFieldL(*firstName);
+ CleanupStack::Pop(firstName);
+
+ // Create the phoneNo field and add the data to it
+ CContactItemField* phoneNumber = CContactItemField::NewLC( KStorageTypeText, KUidContactFieldPhoneNumber );
+ phoneNumber->SetMapping(KUidContactFieldVCardMapTEL);
+ phoneNumber ->TextStorage()->SetTextL(aPhoneNumber);
+ newCard->AddFieldL(*phoneNumber);
+ CleanupStack::Pop(phoneNumber);
+
+ // Add newCard to the database
+ const TContactItemId contactId = database.AddNewContactL(*newCard);
+ CleanupStack::PopAndDestroy(newCard);
+ return contactId;
+ }
+
+TInt CHarvesterPluginTester::TestCreateContactIndexItemL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC IndexAction;
+ TPtrC ContactName;
+ TPtrC NewContactName;
+ _LIT( KActionAdd, "add" );
+ _LIT( KSearchError, "Search Failed" );
+ _LIT( KActionDelete, "delete" );
+ _LIT( KActionUpdate, "update" );
+
+ CContactsPlugin* plugin = CContactsPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //start to moniter contacts db
+ CContactDatabase* db = CContactDatabase::OpenL();
+
+ if( aItem.GetNextString ( IndexAction ) == KErrNone )
+ {
+ if( IndexAction.Compare( KActionAdd ) == 0 )
+ {
+ if( aItem.GetNextString ( ContactName ) == KErrNone )
+ {
+ TInt aContactId;
+ plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS) );
+ aContactId = CreateNewContactL( *db, ContactName, _L("1234") );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+
+ error = doSearch( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ db->DeleteContactL(aContactId);
+ }
+ }
+ if( IndexAction.Compare( KActionUpdate ) == 0 )
+ {
+ if( aItem.GetNextString ( ContactName ) == KErrNone )
+ {
+ TInt aContactId;
+ //Add a contact first and later edit the contact
+ aContactId = CreateNewContactL( *db, ContactName, _L("123") );
+
+ CContactItem* contactItem = db->OpenContactL( aContactId );
+ CleanupStack::PushL( contactItem );
+ // First get the item's field set
+ CContactItemFieldSet& fieldSet=contactItem->CardFields();
+ // Search the field set for the given name field
+ TInt index = fieldSet.Find( KUidContactFieldGivenName );
+ CContactItemField &field= fieldSet[index];
+ if( aItem.GetNextString ( NewContactName ) == KErrNone )
+ {
+ field.TextStorage()->SetTextL( NewContactName );
+ // Commit the change back to database and clean up
+ db->CommitContactL( *contactItem );
+ }
+ CleanupStack::PopAndDestroy(contactItem);
+
+ plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();
+ error = doSearch( NewContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ db->DeleteContactL( aContactId );
+ }
+ }
+ if( IndexAction.Compare( KActionDelete ) == 0 )
+ {
+ if( aItem.GetNextString ( ContactName ) == KErrNone )
+ {
+ TInt aContactId;
+ plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS));
+ //Add a contact to contactdatabase and later delete it
+ aContactId = CreateNewContactL( *db, ContactName, _L("123455"));
+ db->DeleteContactL(aContactId);
+ iPluginTester->iWaitForHarvester->Start();
+ error = doSearch( ContactName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ //If the contact is succesfully deleted, make error to KErrNone.To show testcase success
+ if(error == KErrNotFound)
+ error = KErrNone;
+ }
+ }
+ }
+
+ delete db;
+ delete plugin;
+ delete iPluginTester;
+
+ doLog( iLog, error, KSearchError );
+ return KErrNone;
+ }
+TInt CHarvesterPluginTester::TestCreateContactGroupL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ _LIT( KSearchError, "Search Failed" );
+ TPtrC GroupName;
+ CContactsPlugin* plugin = CContactsPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //start to moniter contacts db
+ CContactDatabase* db = CContactDatabase::OpenL();
+
+ if( aItem.GetNextString ( GroupName ) == KErrNone )
+ {
+ plugin->StartHarvestingL( _L(CONTACT_QBASEAPPCLASS) );
+ TInt aContactId = CreateNewContactL( *db, _L("Group Contact"), _L("123455") );
+ CContactItem* newitem = db->CreateContactGroupL( _L("TestGroup") );
+ db->AddContactToGroupL( aContactId, newitem->Id() );
+ iPluginTester->iWaitForHarvester->Start();
+ error = doSearch( GroupName, _L( CONTACT_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ db->DeleteContactL(aContactId);
+ db->DeleteContactL( newitem->Id() );
+ }
+
+ delete plugin;
+ delete iPluginTester;
+ delete db;
+ doLog( iLog, error, KSearchError );
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestStartCalenderHarvesterL( CStifItemParser& /*aItem*/ )
+ {
+ CCalendarPlugin* plugin = CCalendarPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //start to moniter contacts db
+ plugin->StartHarvestingL( _L(CALENDAR_QBASEAPPCLASS) );
+ iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+ delete plugin;
+ delete iPluginTester;
+ doLog( iLog, KErrNone, KNoErrorString );
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestCalenderEntryL( CStifItemParser& /*aItem*/ )
+ {
+ TInt error = KErrNone;
+ _LIT( KSearchError, "Search Failed" );
+ CCalendarPlugin* plugin = CCalendarPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+
+ CCalendarObserver* session = CCalendarObserver::NewL();
+ plugin->StartHarvestingL( _L(CALENDAR_QBASEAPPCLASS) );
+ // Add a calender entry
+ session->AddEntryL();
+ iPluginTester->iWaitForHarvester->Start();
+ User::After((TTimeIntervalMicroSeconds32)30000000);
+ error = doSearch( _L("scheduled"), _L( CALENDAR_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+ doLog( iLog, error, KSearchError );
+
+ plugin->StartHarvestingL( _L(CALENDAR_QBASEAPPCLASS) );
+ session->DeleteEntryL();
+ iPluginTester->iWaitForHarvester->Start();
+ //Delete the calender entry added previously and search for result
+ error = doSearch( _L("scheduled"), _L( CALENDAR_QBASEAPPCLASS ), ESearchTypeResultsExpected );
+
+ //If the entery is succesfully deleted, make error to KErrNone.To show testcase success
+ if(error == KErrNotFound)
+ error = KErrNone;
+
+ delete session;
+ delete plugin;
+ delete iPluginTester;
+ doLog( iLog, error, KSearchError );
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestCreateMmsL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ _LIT( KSearchError, "Search Failed" );
+ TPtrC filepath;
+ CMessagePlugin* plugin = CMessagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ CMessageSessionObserver* sessionobserver = CMessageSessionObserver::NewL();
+ CMsvSession* msgSession = CMsvSession::OpenSyncL(*sessionobserver);
+ TInt found = aItem.GetNextString( filepath );
+ TBuf<KMsgPluginBaseAppClassMaxLen> baseAppClass;
+ TInt drive = msgSession->CurrentDriveL();
+ CMessagePlugin::FormBaseAppClass(TDriveNumber(drive),baseAppClass);
+
+ plugin->StartHarvestingL( baseAppClass );
+
+ //Create MMS with text attachment for UTF encoded data
+ TMsvId msgid = MessagingUtils::CreateMmsMessageL(msgSession,
+ _L("+358440067886"),
+ _L("+919845062437"),
+ filepath);
+
+ iPluginTester->iWaitForHarvester->Start();
+
+ TInt count = SearchForTextL(_L("UTF"),baseAppClass,KNullDesC);
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ MessagingUtils::RemoveMmsEntryL( msgSession, msgid );
+ delete plugin;
+ delete iPluginTester;
+ delete sessionobserver;
+ delete msgSession;
+ doLog(iLog,error,KSearchError);
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestCreateEmailL( CStifItemParser& /*aItem */)
+ {
+ TInt error = KErrNone;
+ _LIT( KSearchError, "Search Failed" );
+ CMessagePlugin* plugin = CMessagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ CMessageSessionObserver* sessionobserver = CMessageSessionObserver::NewL();
+ CMsvSession* msgSession = CMsvSession::OpenSyncL( *sessionobserver );
+
+ TBuf<KMsgPluginBaseAppClassMaxLen> baseAppClass;
+ TInt drive = msgSession->CurrentDriveL();
+ CMessagePlugin::FormBaseAppClass( TDriveNumber(drive), baseAppClass );
+ plugin->StartHarvestingL( baseAppClass );
+ //Create Email entry using SMTP client
+ TMsvId msgid = MessagingUtils::CreateEmailEntryL( msgSession );
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL( _L("SampleEmail"), baseAppClass, KNullDesC );
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ MessagingUtils::RemoveMmsEntryL( msgSession, msgid );
+ delete plugin;
+ delete iPluginTester;
+ delete sessionobserver;
+ delete msgSession;
+ doLog(iLog,error,KSearchError);
+ return KErrNone;
+ }
+
+TInt CHarvesterPluginTester::TestAudioHarvestingL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KHarvesterPluginTester, "HarvesterPluginTester" );
+ _LIT( KExample, "In TestAudioHarvestingL" );
+ TInt error(KErrNone);
+ TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+ CAudioPlugin* plugin = CAudioPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //Initialize the Plugin
+ //Copy file path
+ RFs fileSession;
+ fileSession.Connect();
+ _LIT(KPathToMusic,"c:\\data\\music\\");
+ fileSession.Delete(_L("c:\\data\\music\\Eagle_Landed.mp3")); //Delete if already exist
+ //pause harvester while copy
+ RHarvesterClient harvester;
+ User::LeaveIfError(harvester.Connect() );
+ harvester.Pause();
+ TRAP_IGNORE( BaflUtils::EnsurePathExistsL(fileSession,KPathToMusic) );//Create folder
+ BaflUtils::CopyFile(fileSession,_L("c:\\data\\Eagle_Landed.mp3"),KPathToMusic);
+ //Resume harvester for this harvesting
+ harvester.Resume();
+ harvester.Close();
+ //Do harvesting and search for Eagle it should be available
+ plugin->StartHarvestingL(_L(MEDIA_QBASEAPPCLASS));
+ //Wait for one minutes after doc processing to Index and Flush to happen
+ iPluginTester->SetWaitTime((TTimeIntervalMicroSeconds32)60000000);
+ iPluginTester->iWaitForHarvester->Start(); //Start Wait AO and let it complete
+ TInt count = SearchForTextL(_L("Eagle"),_L(MEDIA_QBASEAPPCLASS),KNullDesC);
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ doLog(iLog,error,_L("Error in TestAudioHarvestingL"));
+ delete plugin;
+ delete iPluginTester;
+ fileSession.Close();
+ //End search
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestMdsSyncControllerL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KHarvesterPluginTester, "HarvesterPluginTester" );
+ _LIT( KExample, "In TestMdsSyncControllerL" );
+ TInt error(KErrNone);
+ TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+ CMDSEntity* entity;
+ CCPIXMDEDbManager* dbcontroller;
+ entity = CMDSEntity::NewL();
+ TUid uid = {0x101FB3E3};
+ dbcontroller = CCPIXMDEDbManager::NewL(uid);
+ entity->Setkey(1);
+ entity->SetUri(_L("\\music\\bhuvnesh.mp3"));
+ TDriveNumber drive = TDriveNumber(EDriveC);
+ entity->SetDrive(drive);
+ dbcontroller->AddL(entity->Key(),*entity);
+ error = dbcontroller->IsAlreadyExistL(entity->Key());
+ if( error )
+ {
+ iLog->Log( _L("Already exist") );
+ }
+ entity->Reset();
+ dbcontroller->GetItemL(1,*entity);
+ dbcontroller->RemoveL(entity->Key());
+ error = dbcontroller->IsAlreadyExistL( entity->Key() );
+ if( error )
+ {
+ iLog->Log( _L("Already exist") );
+ }
+ dbcontroller->ResetL();
+ delete entity;
+ delete dbcontroller;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestBlacklistPluginL( CStifItemParser& /*aItem*/ )
+ {
+ //@todo: This test case shoud be in IDS middleware harvester STIF cases
+ TInt err = KErrNone;
+ /*
+ CBlacklistMgr* blacklistmanager = CBlacklistMgr::NewL();
+ CleanupStack::PushL( blacklistmanager );
+ TInt version = 0;
+ aItem.GetNextInt(version);
+ //Add an Uid to Blacklist DB
+ blacklistmanager->AddL( KTestUid , version );
+ //Check if the Uid is added to database or not
+ TBool found = blacklistmanager->FindL(KTestUid , version );
+
+ if(!found) err = KErrNotFound;
+ //clear the UID from the database
+ blacklistmanager->Remove(KTestUid);
+ CleanupStack::PopAndDestroy( blacklistmanager );
+ doLog( iLog, err, KNoErrorString );
+ */
+ return err;
+ }
+
+TInt CHarvesterPluginTester::TestBlacklistPluginVersionL( CStifItemParser& /*aItem*/ )
+ {
+ //@todo: This test case shoud be in IDS middleware harvester STIF cases
+ TInt err = KErrNone;
+ /*
+ CBlacklistMgr* blacklistmanager = CBlacklistMgr::NewL();
+ CleanupStack::PushL( blacklistmanager );
+ TInt oldversion = 0;
+ TInt newversion = 0;
+ aItem.GetNextInt(oldversion);
+ aItem.GetNextInt(newversion);
+ //Add an Uid to Blacklist DB with old version
+ blacklistmanager->AddL( KTestUid , oldversion );
+ //Add an Uid to Blacklist DB with new version
+ blacklistmanager->AddL( KTestUid , newversion );
+ //Check if the Uid with old version exists
+ TBool found = blacklistmanager->FindL(KTestUid , oldversion );
+ if( found )
+ {
+ err = KErrNotFound;
+ }
+ else
+ {
+ //check with new version
+ found = blacklistmanager->FindL(KTestUid , newversion );
+ if(!found) err = KErrNotFound;
+ }
+ //clear the UID from the database
+ blacklistmanager->Remove(KTestUid);
+ CleanupStack::PopAndDestroy( blacklistmanager );
+ doLog( iLog, err, KNoErrorString );*/
+ return err;
+ }
+TInt CHarvesterPluginTester::TestVideoHarvestingIndexL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC filepath;
+ TPtrC filename;
+ TPtrC newFile;
+ CVideoPlugin* plugin = CVideoPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ RFs fSession;
+ fSession.Connect();
+ CleanupClosePushL( fSession );
+ if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
+ {
+ TBuf<KMaxFileName> desPath(_L("c:\\data\\Videos\\"));
+ desPath.Append( filename );
+ //Delete the file if it already exists
+ fSession.Delete( desPath );
+ //To ensure video plugin is loaded, pause the harvester
+ RHarvesterClient harvester;
+ User::LeaveIfError(harvester.Connect());
+ harvester.Pause();
+ BaflUtils::EnsurePathExistsL( fSession, desPath );//Create folder
+ BaflUtils::CopyFile( fSession, filepath, desPath );
+ //Resume harvester for this harvesting
+ harvester.Resume();
+ harvester.Close();
+ //Now start video plugin harvesting
+ plugin->StartHarvestingL( _L(VIDEO_QBASEAPPCLASS) );
+ //wait for index to flush
+ iPluginTester->SetWaitTime( (TTimeIntervalMicroSeconds32)60000000 );
+ //wait till video harvesting completes
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL( filename, _L(VIDEO_QBASEAPPCLASS), KNullDesC );
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ }
+ else
+ error = KErrNotFound;
+ CleanupStack::PopAndDestroy();
+ delete plugin;
+ delete iPluginTester;
+ doLog( iLog, error, _L("Error in TestVideoHarvestingIndexL") );
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestVideoHarvestingUpdateIndexL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC filepath;
+ TPtrC filename;
+ TPtrC newFile;
+ TBuf<KMaxFileName> srcPath(_L("c:\\data\\Videos\\"));
+ TBuf<KMaxFileName> desPath;
+ desPath.Copy( srcPath );
+ CVideoPlugin* plugin = CVideoPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ RFs fSession;
+ fSession.Connect();
+ CleanupClosePushL( fSession );
+ if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
+ {
+ srcPath.Append( filename );
+ if( aItem.GetNextString(newFile) == KErrNone )
+ {
+ desPath.Append( newFile );
+ RHarvesterClient harvester;
+ User::LeaveIfError(harvester.Connect());
+ harvester.Pause();
+ TBool fileExist = BaflUtils::FileExists( fSession, srcPath );
+ if(!fileExist)
+ {
+ BaflUtils::EnsurePathExistsL( fSession, srcPath );//Create folder
+ BaflUtils::CopyFile( fSession, filepath, srcPath );
+ }
+ BaflUtils::RenameFile( fSession, srcPath, desPath );
+ harvester.Resume();
+ harvester.Close();
+ plugin->StartHarvestingL( _L(VIDEO_QBASEAPPCLASS) );
+ //wait for index to flush
+ iPluginTester->SetWaitTime( (TTimeIntervalMicroSeconds32)60000000 );
+ //wait till video harvesting completes
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL(_L("Falls"), _L(VIDEO_QBASEAPPCLASS), KNullDesC );
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ doLog( iLog, error, _L("Error in TestVideoHarvestingUpdateIndexL") );
+ }
+ }
+ else
+ doLog( iLog, KErrNotFound, _L("Error in TestVideoHarvestingUpdateIndexL") );
+ CleanupStack::PopAndDestroy();
+ delete plugin;
+ delete iPluginTester;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestVideoHarvestingDeleteIndexL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC filepath;
+ TPtrC filename;
+ TBuf<KMaxFileName> srcPath(_L("c:\\data\\Videos\\"));
+ CVideoPlugin* plugin = CVideoPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ RFs fSession;
+ fSession.Connect();
+ CleanupClosePushL( fSession );
+ if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
+ {
+ srcPath.Append( filename );
+ RHarvesterClient harvester;
+ User::LeaveIfError(harvester.Connect());
+ harvester.Pause();
+ TBool fileExist = BaflUtils::FileExists( fSession, srcPath );
+ if(!fileExist)
+ {
+ BaflUtils::EnsurePathExistsL( fSession, srcPath );//Create folder
+ BaflUtils::CopyFile( fSession, filepath, srcPath );
+ }
+ BaflUtils::DeleteFile( fSession, srcPath );
+ harvester.Resume();
+ harvester.Close();
+ plugin->StartHarvestingL( _L(VIDEO_QBASEAPPCLASS) );
+ //wait for index to flush
+ iPluginTester->SetWaitTime( (TTimeIntervalMicroSeconds32)60000000 );
+ //wait till video harvesting completes
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL(_L("Niagara"), _L(VIDEO_QBASEAPPCLASS), KNullDesC );
+ if(count <= 0)
+ {
+ // If the search is not found,then testcase is success
+ doLog( iLog, error, _L("Error in TestVideoHarvestingDeleteIndexL") );
+ }
+ }
+ else
+ doLog( iLog, KErrNotFound, _L("Error in TestVideoHarvestingDeleteIndexL") );
+ CleanupStack::PopAndDestroy();
+ delete plugin;
+ delete iPluginTester;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestImageHarvestingAddIndexL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC filepath;
+ TPtrC filename;
+ TPtrC newFile;
+ CImagePlugin* plugin = CImagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ RFs fSession;
+ fSession.Connect();
+ CleanupClosePushL( fSession );
+ if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
+ {
+ TBuf<KMaxFileName> desPath(_L("c:\\data\\Images\\"));
+ desPath.Append( filename );
+ //Delete the file if it already exists
+ fSession.Delete( desPath );
+ //To ensure video plugin is loaded, pause the harvester
+ RHarvesterClient harvester;
+ User::LeaveIfError(harvester.Connect());
+ harvester.Pause();
+ BaflUtils::EnsurePathExistsL( fSession, desPath );//Create folder
+ BaflUtils::CopyFile( fSession, filepath, desPath );
+ //Resume harvester for this harvesting
+ harvester.Resume();
+ harvester.Close();
+ //Now start video plugin harvesting
+ plugin->StartHarvestingL( _L(IMAGE_QBASEAPPCLASS) );
+ //wait for index to flush
+ iPluginTester->SetWaitTime( (TTimeIntervalMicroSeconds32)60000000 );
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL( filename, _L(IMAGE_QBASEAPPCLASS), KNullDesC );
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ }
+ else
+ error = KErrNotFound;
+ doLog( iLog, error, _L("Error in TestImageHarvestingAddIndexL") );
+ CleanupStack::PopAndDestroy();
+ delete plugin;
+ delete iPluginTester;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestImageHarvestingUpdateIndexL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC filepath;
+ TPtrC filename;
+ TPtrC newFile;
+ TBuf<KMaxFileName> srcPath(_L("c:\\data\\Images\\"));
+ TBuf<KMaxFileName> desPath;
+ desPath.Copy( srcPath );
+ CImagePlugin* plugin = CImagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ RFs fSession;
+ fSession.Connect();
+ CleanupClosePushL( fSession );
+ if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
+ {
+ srcPath.Append( filename );
+ if( aItem.GetNextString(newFile) == KErrNone )
+ {
+ desPath.Append( newFile );
+ RHarvesterClient harvester;
+ User::LeaveIfError(harvester.Connect());
+ harvester.Pause();
+ TBool fileExist = BaflUtils::FileExists( fSession, srcPath );
+ if(!fileExist)
+ {
+ BaflUtils::EnsurePathExistsL( fSession, srcPath );//Create folder
+ BaflUtils::CopyFile( fSession, filepath, srcPath );
+ }
+ BaflUtils::RenameFile( fSession, srcPath, desPath );
+ harvester.Resume();
+ harvester.Close();
+ plugin->StartHarvestingL( _L(IMAGE_QBASEAPPCLASS) );
+ //wait for index to flush
+ iPluginTester->SetWaitTime( (TTimeIntervalMicroSeconds32)60000000 );
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL(_L("Portrait"), _L(IMAGE_QBASEAPPCLASS), KNullDesC );
+ if(count <= 0)
+ {
+ error = KErrNotFound;
+ }
+ doLog( iLog, error, _L("Error in TestImageHarvestingUpdateIndexL") );
+ }
+ }
+ else
+ doLog( iLog, KErrNotFound, _L("Error in TestImageHarvestingUpdateIndexL") );
+ CleanupStack::PopAndDestroy();
+ delete plugin;
+ delete iPluginTester;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestImageHarvestingDeleteIndexL( CStifItemParser& aItem )
+ {
+ TInt error = KErrNone;
+ TPtrC filepath;
+ TPtrC filename;
+ TBuf<KMaxFileName> srcPath(_L("c:\\data\\Images\\"));
+ CImagePlugin* plugin = CImagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL();
+ RFs fSession;
+ fSession.Connect();
+ CleanupClosePushL( fSession );
+ if((aItem.GetNextString(filepath)==KErrNone) && (aItem.GetNextString(filename) == KErrNone))
+ {
+ srcPath.Append( filename );
+ RHarvesterClient harvester;
+ User::LeaveIfError(harvester.Connect());
+ harvester.Pause();
+ TBool fileExist = BaflUtils::FileExists( fSession, srcPath );
+ if(!fileExist)
+ {
+ BaflUtils::EnsurePathExistsL( fSession, srcPath );//Create folder
+ BaflUtils::CopyFile( fSession, filepath, srcPath );
+ }
+ BaflUtils::DeleteFile( fSession, srcPath );
+ harvester.Resume();
+ harvester.Close();
+ plugin->StartHarvestingL( _L(IMAGE_QBASEAPPCLASS) );
+ //wait for index to flush
+ iPluginTester->SetWaitTime( (TTimeIntervalMicroSeconds32)60000000 );
+ //wait till image harvesting completes
+ iPluginTester->iWaitForHarvester->Start();
+ TInt count = SearchForTextL(_L("Square"), _L(IMAGE_QBASEAPPCLASS), KNullDesC );
+ if(count <= 0)
+ {
+ // If the search is not found,then testcase is success
+ doLog( iLog, error, _L("Error in TestImageHarvestingDeleteIndexL") );
+ }
+ }
+ else
+ doLog( iLog, KErrNotFound, _L("Error in TestImageHarvestingDeleteIndexL") );
+ CleanupStack::PopAndDestroy();
+ delete plugin;
+ delete iPluginTester;
+ return error;
+ }
+
+TInt CHarvesterPluginTester::TestAudioMMCEventL( CStifItemParser& aItem )
+ {
+ TInt error(KErrNone);
+ TInt drive;
+ TInt mmcstatus;
+ aItem.GetNextInt ( drive );
+ aItem.GetNextInt ( mmcstatus );
+ CAudioPlugin* plugin = CAudioPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //Initialize the Plugin
+ TRAPD( err , plugin->HandleMMCEventL( (TDriveNumber)drive , mmcstatus) );
+ //iPluginTester->iWaitForHarvester->Start(); //Start Wait AO and let it complete
+ doLog(iLog,error,_L("Error in TestAudioMMCEventL"));
+ delete plugin;
+ delete iPluginTester;
+ //End search
+ return err;
+ }
+
+TInt CHarvesterPluginTester::TestVideoMMCEventL( CStifItemParser& aItem )
+ {
+ TInt error(KErrNone);
+ TInt drive;
+ TInt mmcstatus;
+ aItem.GetNextInt ( drive );
+ aItem.GetNextInt ( mmcstatus );
+ CVideoPlugin* plugin = CVideoPlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //Initialize the Plugin
+ TRAPD( err , plugin->HandleMMCEventL( (TDriveNumber)drive , mmcstatus) );
+ //iPluginTester->iWaitForHarvester->Start(); //Start Wait AO and let it complete
+ doLog(iLog,error,_L("Error in TestVideoMMCEventL"));
+ delete plugin;
+ delete iPluginTester;
+ //End search
+ return err;
+ }
+
+TInt CHarvesterPluginTester::TestImageMMCEventL( CStifItemParser& aItem )
+ {
+ TInt error(KErrNone);
+ TInt drive;
+ TInt mmcstatus;
+ aItem.GetNextInt ( drive );
+ aItem.GetNextInt ( mmcstatus );
+ CImagePlugin* plugin = CImagePlugin::NewL();
+ CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+ plugin->StartPluginL(); //Initialize the Plugin
+ TRAPD( err , plugin->HandleMMCEventL( (TDriveNumber)drive , mmcstatus) );
+ //iPluginTester->iWaitForHarvester->Start(); //Start Wait AO and let it complete
+ doLog(iLog,error,_L("Error in TestImageMMCEventL"));
+ delete plugin;
+ delete iPluginTester;
+ //End search
+ return err;
+ }
+
+// [End of File] - Do not remove