diff -r 826cea16efd9 -r 13a33d82ad98 videoutils_plat/videoconnutility_api/tsrc/VCXTestCommon/src/CIptvTestVerifyData.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoutils_plat/videoconnutility_api/tsrc/VCXTestCommon/src/CIptvTestVerifyData.cpp Wed Sep 01 12:20:37 2010 +0100 @@ -0,0 +1,762 @@ +/* +* Copyright (c) 2008 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: +* +*/ + + +// INCLUDE FILES + +#include + +#include "CIptvTestVerifyData.h" +#include "VCXTestLog.h" + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== + +// ============================ MEMBER FUNCTIONS =============================== + +_LIT(KDriveC, "C:\\"); +_LIT(KLineBreak, "\r\n"); + +_LIT(KPathVerifyWrite, "testing\\data\\verifynew\\"); +_LIT(KVerifyExtension, ".txt"); + +// ----------------------------------------------------------------------------- +// CVerifyFile::NewL +// ----------------------------------------------------------------------------- +// +CVerifyFile* CVerifyFile::NewL() + { + CVerifyFile* self = new (ELeave) CVerifyFile(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CVerifyFile::ConstructL +// ----------------------------------------------------------------------------- +// +void CVerifyFile::ConstructL() + { + iFs.Connect(); + iId.Zero(); + } + +// ----------------------------------------------------------------------------- +// CVerifyFile::CVerifyFile +// ----------------------------------------------------------------------------- +// +CVerifyFile::CVerifyFile() + { + + } + +// ----------------------------------------------------------------------------- +// CVerifyFile::~CVerifyFile +// ----------------------------------------------------------------------------- +// +CVerifyFile::~CVerifyFile() + { + delete iFileName; + iFileName = NULL; + CloseFileHandles(); + iFs.Close(); + } + +// ----------------------------------------------------------------------------- +// CVerifyFile::CloseFileHandles +// ----------------------------------------------------------------------------- +// +void CVerifyFile::CloseFileHandles() + { + VCXLOGLO1(">>>CVerifyFile::CloseFileHandles"); + if(iFileOpen) + { + iFile.Close(); + iFileStream.Close(); + } + iFileOpen = EFalse; + VCXLOGLO1("<<>>CVerifyFile::ResolveFileName"); + + iFileName->Des().Zero(); + + iFileName->Des().Append(KDriveC); + + iFileName->Des().Append(KPathVerifyWrite); + + BaflUtils::EnsurePathExistsL(iFs, iFileName->Des()); + + iFileName->Des().Append(iId); + iFileName->Des().Append(KVerifyExtension); + + VCXLOGLO1("<>>CVerifyFile::OpenStream"); + + ResolveFileName(); + + // create the stream + + TInt filePos = 0; + if(BaflUtils::FileExists(iFs, iFileName->Des())) + { + TInt result = iFile.Open(iFs, iFileName->Des(), EFileShareAny | EFileWrite | EFileStreamText); + if(result != KErrNone) + { + TPtrC fileName = iFileName->Des(); + VCXLOGLO2("Could not open file: %S", &fileName); + VCXLOGLO1("<<>>CVerifyFile::CreateNewFile"); + + if(BaflUtils::FileExists(iFs, iFileName->Des() )) + { + iFs.Delete(iFileName->Des()); + } + + if(KErrNone == iFile.Create(iFs, iFileName->Des(), EFileShareAny | EFileWrite | EFileStreamText)) + { + iFile.Close(); + } + + VCXLOGLO1("<<Des().Length() > 0) + { + aFileName = iFileName->Des(); + } + } + +// ----------------------------------------------------------------------------- +// CIptvTestVerifyData:: +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C CIptvTestVerifyData* CIptvTestVerifyData::NewL() + { + VCXLOGLO1(">>>CIptvTestVerifyData::NewL"); + CIptvTestVerifyData* self = new (ELeave) CIptvTestVerifyData( ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + VCXLOGLO1("<<>>CIptvTestVerifyData::~CIptvTestVerifyData"); + + delete iZipFile; + iZipFile = NULL; + + iFs.Close(); + + iVerifyFiles.ResetAndDestroy(); + + delete iBuffer; + iBuffer = NULL; + + VCXLOGLO1("<<iId == aVerifyId) + { + aIndex = i; + } + } + + if(aIndex == -1) + { + return KErrNotFound; + } + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CIptvTestVerifyData::CreateVerifyData +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvTestVerifyData::CreateVerifyDataL(TDesC& aVerifyId, TBool aAppend) + { + VCXLOGLO1(">>>CIptvTestVerifyData::CreateVerifyData"); + + if(aVerifyId.Length() <= 0) + { + VCXLOGLO1("No verify Id"); + VCXLOGLO1("<<iId = aVerifyId; + iVerifyFiles.Append(vf); + if(KErrNone != GetVerifyFileIndex(index, aVerifyId)) + { + VCXLOGLO1("CIptvTestVerifyData:: Verify file not found even after creating one."); + VCXLOGLO1("<< fileName; + + if(!aAppend) + { + iVerifyFiles[index]->CreateNewFile(); + } + + iVerifyFiles[index]->GetFileToWrite(fileName); + + VCXLOGLO2("CIptvTestVerifyData:: writePath %S", &fileName); + + VCXLOGLO1("<<>>CIptvTestVerifyData::WriteVerifyData"); + + iBuffer->Des().Zero(); + + if( iUseTimestamps ) + { + _LIT(KDateTimeString,"%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%H%:1%T%:2%S%.%*C2%:3%-B"); + TBuf<128> timeString; + TTime time; + time.HomeTime(); + TBuf<128> buff; + time.FormatL( buff, KDateTimeString ); + iBuffer->Des().Append( buff ); + iBuffer->Des().Append( _L(" ") ); + } + + iBuffer->Des().Append( aVerifyData ); + + TInt result = KErrNone; + iVerifyFiles[index]->WriteData( *iBuffer ); + TBuf<12> lineChange(KLineBreak); + iVerifyFiles[index]->WriteData( lineChange ); + +// VCXLOGLO1("<<>>CIptvTestVerifyData::VerifyData"); + + TInt result = KErrNone; + aVerifyResult = EVerifyOk; + + // Connect to file system + TBuf<256> fileNameRead( _L("c:\\testing\\data\\iptvtempverify.txt") ); // File which is extracted from verify.zip + TBuf<256> fileNameWrite; // File which is written during the test + + TRAPD( err, ExtractVerifyFileL( aVerifyId, fileNameRead ) ); + if( err != KErrNone ) + { + VCXLOGLO2("CIptvTestVerifyData:: verify file extract failed: %d", err); + VCXLOGLO1("<<GetFileToWrite(fileNameWrite); + iVerifyFiles[index]->CloseFileHandles(); + + // Check that the files exist + + if(!BaflUtils::FileExists(iFs, fileNameRead)) + { + VCXLOGLO2("File used to verify data not found. %S must be verified by hand and added to the verify.zip.", &fileNameWrite); + VCXLOGLO1("<<Des() ); + + // File from test case + RFile fileFromTest; + TFileText fromTest; + HBufC* lineFromTestBuff = HBufC::NewL( 1024 * 4 ); + CleanupStack::PushL( lineFromTestBuff ); + TPtr lineFromTest( lineFromTestBuff->Des() ); + + result = fileFromInst.Open(iFs, fileNameRead, EFileRead | EFileStreamText); + if(result != KErrNone) + { + VCXLOGLO2("Could not open file 1: %S", &fileNameRead); + CleanupStack::PopAndDestroy( lineFromTestBuff ); + CleanupStack::PopAndDestroy( lineFromInstBuff ); + VCXLOGLO1("<<>>CIptvTestVerifyData::CIptvTestVerifyData"); + + VCXLOGLO1("<<>>CIptvTestVerifyData::ConstructL"); + iVerifyFiles.ResetAndDestroy(); + User::LeaveIfError( iFs.Connect() ); + TRAPD(err, iZipFile = CZipFile::NewL( iFs, KIptvVerifyZipFile ) ); + if( err == KErrNoMemory ) + { + User::Leave( err ); + } + if( err != KErrNone ) + { + VCXLOGLO2("CIptvTestVerifyData:: CZipFile::NewL err: %d", err); + delete iZipFile; + iZipFile = NULL; + } + + iBuffer = HBufC::NewL( 1024 * 5 ); + + VCXLOGLO1("<<>>CIptvTestVerifyData::ReadFile: %S", &aFileName); + + TInt result = KErrNone; + RFile file; + TInt fileSize; + + result = file.Open(aFs, aFileName, EFileRead | EFileStreamText); + if(result != KErrNone) + { + VCXLOGLO2("Could not open file 1: %S", &aFileName); + VCXLOGLO1("<<Des() ); + file.Read(ptr); + + *aBuff = buff; + + CleanupStack::PopAndDestroy(&file); + + VCXLOGLO1("<<>>CIptvTestVerifyData::ExtractVerifyFile"); + + iFs.Delete( aDestFile ); + + if( !iZipFile ) + { + VCXLOGLO1("CIptvTestVerifyData:: iZipFile == NULL! Leaving.."); + User::Leave( KErrNotReady ); + } + + TBuf<256> verifyFileName( aVerifyId ); + verifyFileName.Append( KVerifyExtension ); + VCXLOGLO2("CIptvTestVerifyData:: verifyFileName: %S", &verifyFileName); + VCXLOGLO2("CIptvTestVerifyData:: aDestFile: %S", &aDestFile); + + if( !FileExistsInZip( iZipFile, verifyFileName ) ) + { + VCXLOGLO1("CIptvTestVerifyData:: No such file in zip! Leaving.."); + User::Leave( CIptvTestVerifyData::EVerifiedFileNotFound ); + } + + // Get zip file member from the archive + VCXLOGLO1("CIptvTestVerifyData:: Get zip file member from the archive"); + CZipFileMember* member = iZipFile->CaseInsensitiveMemberL( verifyFileName ); + if( member == NULL ) + { + VCXLOGLO1("CIptvTestVerifyData:: zip member is null. Leaving.."); + User::Leave(KErrGeneral); + } + CleanupStack::PushL( member ); + + // Get read stream for the file + VCXLOGLO1("CIptvTestVerifyData:: Get read stream for the file"); + RZipFileMemberReaderStream* stream; + iZipFile->GetInputStreamL( member, stream ); + CleanupStack::PushL( stream ); + + // Alloc buffer and read the archived file + VCXLOGLO1("CIptvTestVerifyData:: Alloc buffer and read the archived file"); + HBufC8* buffer = HBufC8::NewLC( member->UncompressedSize() ); + TPtr8 bufferPtr( buffer->Des() ); + User::LeaveIfError( stream->Read( bufferPtr, member->UncompressedSize() ) ); + + // Write the file to the filesystem + VCXLOGLO1("CIptvTestVerifyData:: Write the file to the filesystem"); + RFile file; + User::LeaveIfError( file.Replace( iFs, aDestFile, EFileWrite ) ); + CleanupClosePushL( file ); + User::LeaveIfError( file.Write(*buffer) ); + + CleanupStack::PopAndDestroy( &file ); + CleanupStack::PopAndDestroy( buffer ); + CleanupStack::PopAndDestroy( stream ); + CleanupStack::PopAndDestroy( member ); + + VCXLOGLO1("<<>>CIptvTestVerifyData::FileExistsInZip"); + + CZipFileMember* member = NULL; + + VCXLOGLO1("CIptvTestVerifyData:: list of members"); + CZipFileMemberIterator* members = aZipFile->GetMembersL(); + + VCXLOGLO1("CIptvTestVerifyData:: loop all members"); + + while ((member = members->NextL()) != 0) + { + VCXLOGLO3("CIptvTestVerifyData:: member %S, size: %d", &(*member->Name()), member->CompressedSize()); + + if( aFileName == (*member->Name()) ) + { + delete member; + delete members; + VCXLOGLO1("<<