diff -r 000000000000 -r 96612d01cf9f videofeeds/server/tsrc/VCXVodContentApiTest/src/VCXVodContentApiTestBlocks.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/server/tsrc/VCXVodContentApiTest/src/VCXVodContentApiTestBlocks.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,1749 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Test module for IptvVodContentClient* +*/ + + + +// INCLUDE FILES +#include +#include +#include +#include "VCXVodContentApiTest.h" +#include "VCXTestLog.h" + +#include "CIptvVodContentClient.h" + +#include "CIptvVodContentCategoryBriefDetails.h" +#include "CIptvVodContentContentBriefDetails.h" +#include "CIptvVodContentContentFullDetails.h" + +#include "CIptvUtil.h" +#include "CIptvTestTimer.h" +#include "CIptvTestUtilities.h" +#include "CIptvTestEcgUpdateInfo.h" +#include "TIptvRssSearchQuery.h" +#include + +#include + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CIptvVodContentApiTest::Delete +// Delete here all resources allocated and opened from test methods. +// Called from destructor. +// ----------------------------------------------------------------------------- +// +void CIptvVodContentApiTest::Delete() + { + VCXLOGLO1(">>>CIptvVodContentApiTest::Delete"); + DeAllocateResources(); + VCXLOGLO1("<<>>CIptvVodContentApiTest::CreateL"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KCreateL, "In CreateL" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KCreateL ); + // Print to log file + iLog->Log( KCreateL ); + + //Script parameters: + // service id, must be >0 + TPtrC serviceName; + + iMsgWhichToSignal = -1; + iIgnoreMsg = KIptvTestNoSignal; + + TInt testCaseStatus = KErrNone; + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + if(aItem.GetNextString(serviceName) != KErrNone) + { + VCXLOGLO1("Can't read testcase parameter, serviceName/number !!!"); + VCXLOGLO1("<<Log( _L("**** FAIL ***** Can't read testcase parameter!!!") ); + return KErrGeneral; + } + + VCXLOGLO2("serviceName/orderNumber: %S", &serviceName); + + TInt timeoutValue; + if(aItem.GetNextInt(timeoutValue) == KErrNone) + { + iTimeoutMinutes = timeoutValue; + } + else + { + iTimeoutMinutes = 4; + } + + testCaseStatus = CreateInstance(serviceName); + + iRetryCount = 0; + + VCXLOGLO1("<<>>CIptvVodContentApiTest::DeleteEpgDb"); + + RFs fs; + fs.Connect(); + + CFileMan* fileMan = CFileMan::NewL(fs); + + TBuf<512> path; + +// CIptvUtil::GetPathL(fs, EIptvPathMyVideos, path, EDriveC); +// fileMan->RmDir(path); + + CIptvUtil::GetPathL(fs, EIptvPathEcg, path, EDriveC); + fileMan->RmDir(path); + +// CIptvUtil::GetPathL(fs, EIptvPathMyVideos, path, EDriveE); +// fileMan->RmDir(path); + + CIptvUtil::GetPathL(fs, EIptvPathEcg, path, EDriveE); + fileMan->RmDir(path); + + delete fileMan; + + fs.Close(); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::GetEcgList"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KGetEcgList, "In GetEcgList" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KGetEcgList ); + // Print to log file + iLog->Log( KGetEcgList ); + + //Script parameters + + TPtrC searchStringPtr; + + TInt categoryId = 0; + TInt from =0; + TInt amount = 0; + TInt testCaseStatus = KErrNone; + TBool isParametersValid = TRUE; + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + //Script parameters + if(aItem.GetNextInt(categoryId) != KErrNone) + { + isParametersValid = FALSE; + } + + if(aItem.GetNextString(searchStringPtr) != KErrNone) + { + isParametersValid = FALSE; + } + + if(aItem.GetNextInt(from) == KErrNone) + { + //check validity + if(from<0) + { + isParametersValid = FALSE; + } + } + else + { + isParametersValid = FALSE; + } + + if(aItem.GetNextInt(amount) == KErrNone) + { + //check validity + if(amount<0) + { + isParametersValid = FALSE; + } + } + else + { + isParametersValid = FALSE; + } + + TBuf<256> searchString(searchStringPtr); + if(!searchString.Compare(_L("\"\"")) ) + { + searchString = _L(""); + } + + TUint32 categoryId32 = categoryId; + if(categoryId == KIptvTestSearchCategoryId) + { + categoryId32 = KIptvRssSearchCategoryId; + } + + VCXLOGLO2("categoryId: %d", categoryId32); + VCXLOGLO2("searchString: %S", &searchString); + VCXLOGLO2("from: %d", from); + VCXLOGLO2("amount: %d", amount); + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<>>CIptvVodContentApiTest::EnableVerifying"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KEnableVerifying , "In EnableVerifying" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KEnableVerifying ); + // Print to log file + iLog->Log( KEnableVerifying ); + + //Script parameters + + TInt result = KErrNone; + + TPtrC caseId; + TInt countNumber = -1; + + TBool isParametersValid = ETrue; + + //Script parameters + if(aItem.GetNextString(caseId) != KErrNone) + { + isParametersValid = EFalse; + } + + TInt appendInt = 0; + TBool append = EFalse; + if(aItem.GetNextInt(appendInt) == KErrNone) + { + append = static_cast(appendInt); + } + aItem.GetNextInt(countNumber); + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + result = KErrGeneral; + } + else + { + iCaseId = caseId; + if(countNumber >= 0) + { + iCaseId.AppendNum(countNumber); + } + iIptvTestUtilities->CreateVerifyData(iCaseId, append); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::Verify"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KVerify , "In Verify" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KVerify ); + // Print to log file + iLog->Log( KVerify ); + + TInt paramCount = 0; + TPtrC caseId; + TInt error = KErrNone; + while(aItem.GetNextString(caseId) == KErrNone) + { + paramCount++; + VCXLOGLO2("Verifying: %S.", &caseId); + CIptvTestVerifyData::TVerifyResult verifyResult; + error = iIptvTestUtilities->VerifyData(caseId, verifyResult); + if(verifyResult != CIptvTestVerifyData::EVerifyOk) + { + VCXLOGLO3("Verify failed, VerifyResult: %d, err: %d", verifyResult, error); + TestModuleIf().Printf( 0, _L("Verify failed"), _L("") ); + error = verifyResult; + } + else + { + VCXLOGLO1("Data verified succesfully."); + } + } + + if(paramCount == 0) + { + error = KErrGeneral; + VCXLOGLO1("Test case logic error, no CaseId(s) defined for verification.."); + } + + + VCXLOGLO1("<<>>CIptvVodContentApiTest::EcgCategoryList"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KEcgCategoryList, "In EcgCategoryList" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KEcgCategoryList ); + // Print to log file + iLog->Log( KEcgCategoryList ); + + //Script parameters + //use KIptvVodContentCategoryRootId + + TInt parentCategoryId = 0; + TInt testCaseStatus = KErrNone; + + TBool isParametersValid = TRUE; + + if(aItem.GetNextInt(parentCategoryId) != KErrNone) + { + isParametersValid = FALSE; + } + + VCXLOGLO2("parentCategoryId: %d", parentCategoryId); + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<>>CIptvVodContentApiTest::EcgEcgAllList"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KEcgEcgAllList, "In EcgEcgAllList" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KEcgEcgAllList ); + // Print to log file + iLog->Log( KEcgEcgAllList ); + + TInt testCaseStatus = KErrNone; + TPtrC searchStringPtr; + TInt from = 0; + TInt amount = 0; + + TBool isParametersValid = TRUE; + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + //Script parameters + if(aItem.GetNextString(searchStringPtr)==KErrNone) + { + //check string content + } + else + { + //isParametersValid = FALSE; + } + + if(aItem.GetNextInt(from) == KErrNone) + { + //check validity + if(from<0) + { + isParametersValid = FALSE; + } + } + else + { + isParametersValid = FALSE; + } + + if(aItem.GetNextInt(amount) == KErrNone) + { + //check validity + if(amount<0) + { + isParametersValid = FALSE; + } + } + else + { + isParametersValid = FALSE; + } + + TBuf<2560> searchString(searchStringPtr); + if(!searchString.Compare(_L("\"\"")) ) + { + searchString = _L(""); + } + + VCXLOGLO2("searchString: %S", &searchString); + VCXLOGLO2("from: %d", from); + VCXLOGLO2("amount: %d", amount); + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<>>CIptvVodContentApiTest::CategoryDetails"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KCategoryDetails, "In CategoryDetails" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KCategoryDetails ); + // Print to log file + iLog->Log( KCategoryDetails ); + TInt testCaseStatus = KErrNone; + TBool isParametersValid = TRUE; + + //Script parameters + TInt categoryId = 0; + + if(aItem.GetNextInt(categoryId) != KErrNone) + { + isParametersValid = FALSE; + } + + VCXLOGLO2("categoryId: %d", categoryId); + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<>>CIptvVodContentApiTest::ParentCategory"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KParentCategory, "In ParentCategory" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KParentCategory ); + // Print to log file + iLog->Log( KParentCategory ); + + TInt testCaseStatus = KErrNone; + TBool isParametersValid = TRUE; + + //Script parameters + TInt categoryId = 0; + + if(aItem.GetNextInt(categoryId) != KErrNone) + { + isParametersValid = FALSE; + } + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<>>CIptvVodContentApiTest::ContentDetailsList"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KContentDetailsList, "In ContentDetailsList" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KContentDetailsList ); + // Print to log file + iLog->Log( KContentDetailsList ); + + TInt testCaseStatus = KErrNone; + TBool isParametersValid = TRUE; + + //Script parameters + TInt contentId = 0; + + if(aItem.GetNextInt(contentId) == KErrNone) + { + if(contentId < 0) + { + isParametersValid = FALSE; + } + } + else + { + isParametersValid = FALSE; + } + + VCXLOGLO2("contentId: %d", contentId); + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<>>CIptvVodContentApiTest::VerifyAllCategoryContentL"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KAllCategoryContentL, "In VerifyAllCategoryContentL" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KAllCategoryContentL ); + // Print to log file + iLog->Log( KAllCategoryContentL ); + + TInt testCaseStatus = KErrNone; + TBool isParametersValid = ETrue; + + //Script parameters + TInt parentCategoryId = 0; + + if(aItem.GetNextInt(parentCategoryId) != KErrNone) + { + isParametersValid = EFalse; + } + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<>>CIptvVodContentApiTest::UpdateEcg"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KUpdateEcg, "In UpdateEcg" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KUpdateEcg ); + // Print to log file + iLog->Log( KUpdateEcg ); + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + TInt testCaseStatus = KErrNone; + if( aItem.GetNextInt( iRetryCount ) != KErrNone) + { + iRetryCount = 0; + } + + iExpectedThumbnailCount = -1; + iThumbnailCount = -1; + + VCXLOGLO1("CIptvVodContentApiTest::UpdateEcg -- starting update"); + testCaseStatus = TestUpdateEcg(); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::SetTestCaseTimeOut"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KSetTestCaseTimeOut, "In SetTestCaseTimeOut" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KSetTestCaseTimeOut ); + // Print to log file + iLog->Log( KSetTestCaseTimeOut ); + + TBool isParametersValid = TRUE; + + //Script parameters: + TInt timeOutSeconds = 0; + + if(aItem.GetNextInt(timeOutSeconds) == KErrNone) + { + if(timeOutSeconds < 0) + { + isParametersValid = FALSE; + } + } + else + { + isParametersValid = FALSE; + } + + if(!isParametersValid) + { + VCXLOGLO1("Error in testparameters"); + iLog->Log(_L("Error in testparameters")); + VCXLOGLO1("<<After( interval ); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::DisableThumbnails"); + CRepository* cenRep = CRepository::NewL(KIptvCenRepUid); + if (cenRep) + { + CleanupStack::PushL(cenRep); + TInt error = cenRep->Set(KIptvCenRepVoDThumbnailsKey, EFalse); + if (error != KErrNone) + { + VCXLOGLO2("Setting cenrep value returned error: %d", error); + } + CleanupStack::PopAndDestroy(cenRep); + } + VCXLOGLO1("<<>>CIptvVodContentApiTest::EnableThumbnails"); + CRepository* cenRep = CRepository::NewL(KIptvCenRepUid); + if (cenRep) + { + CleanupStack::PushL(cenRep); + TInt error = cenRep->Set(KIptvCenRepVoDThumbnailsKey, ETrue); + if (error != KErrNone) + { + VCXLOGLO2("Setting cenrep value returned error: %d", error); + } + CleanupStack::PopAndDestroy(cenRep); + } + VCXLOGLO1("<<>>CIptvVodContentApiTest::Search"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KWhere, "In Search" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + TPtrC searchStr; + TInt opt; + + // Get the first string. This can be search string or an option + if(KErrNone != aItem.GetNextString(searchStr)) + { + VCXLOGLO1("Parameter search string/option missing!"); + VCXLOGLO1("<< tempStr; + tempStr.Append(KBadCharacters); + iSearchQuery.SetSearchString(tempStr); + } + + VCXLOGLO1("NO, continuing with normal search."); + } + // + // It's a search string + // + VCXLOGLO2("Search: %S", &searchStr); + iSearchQuery.SetSearchString(searchStr); + + TInt err = iIptvVodContenClient->Search( iSearchQuery ); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * Search returned an error: %d.", err); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::CancelSearch"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KWhere, "In CancelSearch" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt err = KErrNone; + err = iIptvVodContenClient->CancelSearch(); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * CancelSearch returned an error: %d.", err); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::CancelUpdate"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KWhere, "In CancelUpdate" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iIptvVodContenClient->CancelUpdate(); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::SetLastPosition"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KWhere, "In SetLastPosition" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + TInt contentId; + TUint32 index; + TUint32 position; + + TInt temp; + + if(KErrNone != aItem.GetNextInt(contentId)) + { + VCXLOGLO1("Parameter contentId missing!"); + VCXLOGLO1("<<SetLastPositionL( contentId, index, position ) ); + if(err2 != KErrNone) + { + VCXLOGLO2("* FAIL * SetLastPosition left with %d.", err); + err = err2; + } + else + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * SetLastPosition returned an error: %d.", err); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::SetParentalControlAge"); + + TInt age; + if(KErrNone != aItem.GetNextInt(age)) + { + VCXLOGLO1("Parameter age missing!"); + VCXLOGLO1("<<Set(KIptvCenRepParentControlKey, age); + if (error != KErrNone) + { + VCXLOGLO2("Setting cenrep value returned error: %d", error); + } + CleanupStack::PopAndDestroy(cenRep); + } + VCXLOGLO1("<<>>CIptvVodContentApiTest::SelectIapL"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KSetIap, "In SelectIapL" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KSetIap ); + // Print to log file + iLog->Log( KSetIap ); + + TPtrC iAPName; + TUint32 iapId = 0; + TInt rv = KErrNone; + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + if(aItem.GetNextString(iAPName) != KErrNone) + { + VCXLOGLO1("Can't read iap name from cfg file"); + VCXLOGLO1("<<GetIapIdL(iAPName, iapId) == FALSE) + { + VCXLOGLO2("Can't find iap, name: %S. Using invalid IAP id: 1000", &iAPName); + iapId = 1000; + } + else + { + VCXLOGLO3("Found iap, name: %S, id = %d", &iAPName,iapId); + } + + rv = SetIap(iapId); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::GetUpdateTimeL"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KGetUpdateTime, "In GetUpdateTimeL" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KGetUpdateTime ); + // Print to log file + iLog->Log( KGetUpdateTime ); + + TInt rv = KErrNone; + + TInt maxMinutes = -1; + aItem.GetNextInt(maxMinutes); + + TTime updateTime; + + rv = TestGetUpdateTimeL(updateTime); + + _LIT(KDateString,"%D%M%Y%/0%1%/1%2%/2%3%/3"); + _LIT(KTimeString,"%-B%:0%H%:1%T%:2%S%.%*C2%:3%-B"); + TBuf<30> dateString; + TBuf<30> timeString; + + updateTime.FormatL(dateString, KDateString); + updateTime.FormatL(timeString, KTimeString); ; + + if(rv == KErrNone) + { + VCXLOGLO2("UpdateTime from server - date: %S", &dateString); + VCXLOGLO2("UpdateTime from server - time: %S", &timeString); + + if(maxMinutes >= 0) + { + TTime currentTime; + TTimeIntervalMinutes minutes; + + currentTime.UniversalTime(); + currentTime.MinutesFrom(updateTime, minutes); + + if(minutes.Int() > maxMinutes) + { + VCXLOGLO3("Time to last ECG update is more than specified maximum: %d. Minutes to last update: %d", maxMinutes, minutes.Int() ); + currentTime.FormatL(dateString, KDateString); + currentTime.FormatL(timeString, KTimeString); + VCXLOGLO2("Current time - date: %S", &dateString); + VCXLOGLO2("Current time - time: %S", &timeString); + rv = KErrGeneral; + } + } + } + else + { + VCXLOGLO2("GetUpdateTimeL returned an error: %d", rv); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::UpdateAvailableL"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KWhere, "In UpdateAvailableL" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt intArg; + User::LeaveIfError( aItem.GetNextInt( intArg ) ); + + TBool expectedAvailability = static_cast( intArg ); + + TBool availability( EFalse ); + + TInt ret( KErrNone ); + TRAPD(error, ret = iIptvVodContenClient->UpdateAvailableL( availability )); + + if( ret != KErrNone || error != KErrNone ) + { + VCXLOGLO3("CIptvVodContentApiTest:: UpdateAvailableL left or returned error: returned: %d, leave: %d", ret, error); + if( error == KErrNone ) + { + error = ret; + } + } + else if( expectedAvailability != availability ) + { + VCXLOGLO2("CIptvVodContentApiTest:: UpdateAvailableL availability: %d, it's not what was expected!", availability); + error = KErrCorrupt; + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::CategoryCountL"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KWhere, "In CategoryCountL" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt expectedCount; + User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); + + TInt error = TestCategoryCountL( expectedCount ); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::ContentCountL"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KWhere, "In CategoryCountL" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt expectedCount; + User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); + + TInt error = TestContentCountL( expectedCount ); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::SetSpecialAction"); + + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KSetSpecialAction, "In SetSpecialAction" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KSetSpecialAction ); + // Print to log file + iLog->Log( KSetSpecialAction ); + + TInt action(-1); + + aItem.GetNextInt(action); + + if(action < 0) + { + VCXLOGLO1("Incorrect parameter."); + VCXLOGLO1("<<(action); + + VCXLOGLO2("Action: %d", action); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::SetMsgWhichToSignal"); + + if(aItem.GetNextInt(iMsgWhichToSignal) != KErrNone) + { + VCXLOGLO1("* ERROR * Argument is wrong."); + VCXLOGLO1("<<>>CIptvVodContentApiTest::IgnoreMsg"); + + if(aItem.GetNextInt(iIgnoreMsg) != KErrNone) + { + VCXLOGLO1("* ERROR * Argument is wrong."); + VCXLOGLO1("<<>>CIptvVodContentApiTest::Destroy"); + // Print to UI + _LIT( KIptvVodContentApiTest, "IptvVodContentApiTest" ); + _LIT( KDestroy, "In Destroy" ); + TestModuleIf().Printf( 0, KIptvVodContentApiTest, KDestroy ); + // Print to log file + iLog->Log( KDestroy ); + + //Script parameters: + //None + + TInt testCaseStatus = KErrNone; + + DeAllocateResources(); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::HandleEpgManagerMsgL"); + + VCXLOGLO2("aMsg = %d", aMsg); + VCXLOGLO2("aInfo = %d", aInfo); + VCXLOGLO2("aServiceId = %d", aServiceId); + + TInt signalValue = KIptvTestNoSignal; + + switch(aMsg) + { + + // 137, aInfo is 0 + case KIptvVodUpdateNotStarted: + { + VCXLOGLO1("Message: KIptvVodUpdateNotStarted"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvVodUpdateNotStarted")); + + if(iSpecialAction == EIgnoreUpdateNotStarted) + { + VCXLOGLO1("Ignoring, special action set."); + iSpecialAction = ENone; + break; + } + + iIptvTestEcgUpdateInfo->EcgUpdateStop(aServiceId, aMsg, aInfo); + + signalValue = KIptvVodUpdateNotStarted; + } + break; + + // 139, aInfo is 0 + case KIptvErrorVodNoIap: + { + VCXLOGLO1("Message: KIptvErrorVodNoIap"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvErrorVodNoIap")); + signalValue = aMsg; + } + break; + + //// 136, aInfo is 0 + case KIptvVodUpdateStarted: + { + VCXLOGLO1("Message: KIptvVodUpdateStarted"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvVodUpdateStarted")); + //start 10 min timer to wait download + iIptvTestTimer->After(iTimeoutMinutes*60*1000000); + + iExpectedThumbnailCount = -1; + iThumbnailCount = -1; + + CIptvService* service = iIptvTestUtilities->GetServiceFromDb(aServiceId); + if(service) + { + CleanupStack::PushL(service); + iLastUpdateTimeFromService = service->GetEpgUpdateTimeL(); + CleanupStack::PopAndDestroy(service); + service = NULL; + } + else + { + iIptvTestEcgUpdateInfo->WriteLogL(_L("Error, could not get service.")); + } + } + + break; + + // 146, aInfo is 0 + case KIptvContentUpdateCompleted: + { + VCXLOGLO1("Message: KIptvContentUpdateCompleted"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvContentUpdateCompleted")); + } + break; + + // 143, parameter is service id + case KIptvServiceThumbnailDownloaded: + { + VCXLOGLO1("Message: KIptvServiceThumbnailDownloaded"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvServiceThumbnailDownloaded")); + iThumbnailCount++; + } + break; + + // 144, aInfo parameter is content id + case KIptvContentThumbnailDownloaded: + { + VCXLOGLO1("Message: KIptvContentThumbnailDownloaded"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvContentThumbnailDownloaded")); + iThumbnailCount++; + } + break; + + // 133, aInfo: KIptvRssParserError (145) or TIptvDlError (defined in this file) + case KIptvErrorEpgUpdateFailed: + { + VCXLOGLO1("Message: KIptvErrorEpgUpdateFailed"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvErrorEpgUpdateFailed")); + iIptvTestEcgUpdateInfo->EcgUpdateStop(aServiceId, aMsg, aInfo); + + if(iRetryCount > 0) + { + iRetryCount--; + VCXLOGLO2("CIptvVodContentApiTest: Retrying update! Retries left: %d", iRetryCount ); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Retrying update!")); + User::LeaveIfError( TestUpdateEcg() ); + break; + } + + iEcgUpdateSuccesfull = EFalse; + + if(EIptvDlNoError != aInfo) + { + signalValue = aInfo; + } + else + { + // Be sure that error is handled if aInfo == 0 + signalValue = aMsg; + } + } + break; + + // 134, aInfo is 0 + case KIptvErrorEpgUpdateSuccessed: + { + VCXLOGLO1("Message: KIptvErrorEpgUpdateSuccessed"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Thubmnails downloaded: %d"), iThumbnailCount); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvErrorEpgUpdateSuccessed")); + + CIptvService* service = iIptvTestUtilities->GetServiceFromDb(aServiceId); + if(service) + { + CleanupStack::PushL(service); + + TTime time = service->GetEpgUpdateTimeL(); + + _LIT(KDateString,"%D%M%Y%/0%1%/1%2%/2%3%/3"); + _LIT(KTimeString,"%-B%:0%H%:1%T%:2%S%.%*C2%:3%-B"); + TBuf<30> timeString; + + time.FormatL(timeString, KDateString); + time.FormatL(timeString, KTimeString); + VCXLOGLO2("Update time: %S", &timeString); + + time.UniversalTime(); + time.FormatL(timeString, KDateString); + time.FormatL(timeString, KTimeString); + VCXLOGLO2("Time now: %S", &timeString); + + if(iLastUpdateTimeFromService == time) + { + // last update time was not updated, return error + signalValue = KErrGeneral; + } + else + { + signalValue = KErrNone; + } + CleanupStack::PopAndDestroy(service); + service = NULL; + } + else + { + iIptvTestEcgUpdateInfo->WriteLogL(_L("Error, could not get service.")); + } + + iEcgUpdateSuccesfull = ETrue; + iIptvTestEcgUpdateInfo->EcgUpdateStop(aServiceId, aMsg, aInfo); + } + break; + + // 135, EPG manager messages sent to client (LIVE TV ONLY) + case KIptvErrorFailedToLoadPlugin: + { + VCXLOGLO1("Message: KIptvErrorFailedToLoadPlugin"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvErrorFailedToLoadPlugin")); + } + break; + + // 141, // aInfo is thumbnail count + case KIptvThumbnailCount: + { + VCXLOGLO2("Message: KIptvThumbnailCount: %d", aInfo); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvThumbnailCount: %d"), aInfo); + + iExpectedThumbnailCount = aInfo; + iThumbnailCount = 0; + } + break; + + case KIptvErrorRssSearchStarted: // 170 + { + VCXLOGLO1("Message: KIptvErrorRssSearchStarted"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvErrorRssSearchStarted")); + //start 10 min timer to wait download + iIptvTestTimer->After(iTimeoutMinutes*60*1000000); + } + break; + + case KIptvErrorRssSearchFailed: // 171 + { + VCXLOGLO1("Message: KIptvErrorRssSearchFailed"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvErrorRssSearchFailed")); + + if(iRetryCount > 0) + { + iRetryCount--; + VCXLOGLO2("CIptvVodContentApiTest: Retrying search! Retries left: %d", iRetryCount ); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Retrying search!")); + + TInt err = iIptvVodContenClient->Search( iSearchQuery ); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * Search returned an error: %d.", err); + User::Leave(err); + } + + break; + } + + iIptvTestEcgUpdateInfo->EcgUpdateStop(aServiceId, aMsg, aInfo); + + iEcgUpdateSuccesfull = EFalse; + + if(EIptvDlNoError != aInfo) + { + signalValue = aInfo; + } + else + { + //be sure that error is handled if aInfo == 0 + signalValue = aMsg; + } + } + break; + + case KIptvErrorRssSearchSucceed: // 172 + { + VCXLOGLO1("Message: KIptvErrorRssSearchSucceed"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvErrorRssSearchSucceed")); + + iEcgUpdateSuccesfull = ETrue; + iIptvTestEcgUpdateInfo->EcgUpdateStop(aServiceId, aMsg, aInfo); + signalValue = KErrNone; + } + break; + + case KIptvErrorRssSearchNoIap: // 173 + { + VCXLOGLO1("Message: KIptvErrorRssSearchNoIap"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("KIptvErrorRssSearchNoIap")); + signalValue = aMsg; + } + break; + + case KIptvRssSearchContentUpdateCompleted: + { + VCXLOGLO1("Message: KIptvRssSearchContentUpdateCompleted"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvRssSearchContentUpdateCompleted")); + } + break; + + case KIptvRssSearchThumbnailCount: + { + VCXLOGLO2("Message: KIptvThumbnailCount: %d", aInfo); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvThumbnailCount: %d"), aInfo); + + iExpectedThumbnailCount = aInfo; + iThumbnailCount = 0; + } + break; + + case KIptvRssSearchContentThumbnailDownloaded: + { + VCXLOGLO2("Message: KIptvRssSearchContentThumbnailDownloaded, id %d", aInfo); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: KIptvRssSearchContentThumbnailDownloaded, id %d"), aInfo); + + ++iThumbnailCount; + } + break; + +#ifdef __S60_50__ + case KIptvErrorEpgUpdateStopped: + { + // Do nothing right now, test script is signaled in other cases. + VCXLOGLO1("Message: KIptvErrorEpgUpdateStopped"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("KIptvErrorEpgUpdateStopped")); + } + break; +#endif + + default: + { + VCXLOGLO1("Unknown message, panicing"); + iIptvTestEcgUpdateInfo->WriteLogL(_L("Message: UNKNOWN: aMsg: %d, aInfo: %d, aServiceId: %d"), aMsg, aInfo, aServiceId); + User::Panic(_L("CIptvVodContentApiTest: Unknown msg"), KErrGeneral); + } + break; + + } // Switch + + // Is there message which will be signaled to the script? + if(signalValue != KIptvTestNoSignal) + { + // Is the message to be ignored + if(aMsg != iIgnoreMsg) + { + AsyncCompleted(signalValue); + } + iIgnoreMsg = KIptvTestNoSignal; + } + // Has script set msg which must be signaled? + else if(iMsgWhichToSignal != -1 && iMsgWhichToSignal == aMsg) + { + AsyncCompleted(aMsg); + iMsgWhichToSignal = -1; + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TimerComplete"); + VCXLOGLO2("aTimerId = %d",aTimerId); + VCXLOGLO2("aError = %d",aError); + + if(aError == KErrNone) + { + iLog->Log(_L("*** Fail *** TimeOut!!!")); + aError = KErrTimedOut; + iIptvTestEcgUpdateInfo->EcgUpdateStop(iServiceId, aError, 0); + } + VCXLOGLO2("aError = %d",aError); + AsyncCompleted(aError); + VCXLOGLO1("<<>>CIptvVodContentApiTest::AsyncCompleted"); + VCXLOGLO2("aError = %d", aError); + + iIptvTestTimer->Cancel(); + + if(iSpecialAction == EUpdateSucceedsAlways) + { + VCXLOGLO1("Signaling KErrNone, special action EUpdateSucceedsAlways set."); + aError = KErrNone; + } + + Signal(aError); + VCXLOGLO1("<<