diff -r 000000000000 -r a41df078684a baseapitest/basesvs/common/src/FileserverUtil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/baseapitest/basesvs/common/src/FileserverUtil.cpp Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,406 @@ +/* +* Copyright (c) 2005-2009 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 "FileserverUtil.h" + +/** + * @enum Constant Literals used. + */ + +/*@{*/ + +// Parameters +_LIT( KExpectedName, "expectedName" ); +_LIT( KExpectedSize, "expectedSize" ); +_LIT( KExpectedTime, "expectedTime" ); +_LIT( KExpectedUid1, "expectedUid1" ); +_LIT( KExpectedUid2, "expectedUid2" ); +_LIT( KExpectedUid3, "expectedUid3" ); +_LIT( KVolumeLabel, "volume_label" ); +_LIT( KVolumeSize, "volume_size"); +_LIT( KVolumeFreeSpace, "volume_free_space" ); +_LIT( KVolumeUniqueID, "volume_unique_id"); +_LIT( KExpectedMostDerivedUid, "expectedMostDerivedUid" ); +_LIT( KVolumeFileCacheFlags, "volume_File_Cache_Flags" ); +_LIT( KFileCacheReadEnabled, "EFileCacheReadEnabled" ); +_LIT( KFileCacheReadOn, "EFileCacheReadOn"); +_LIT( KFileCacheReadAheadEnabled, "EFileCacheReadAheadEnabled" ); +_LIT( KFileCacheReadAheadOn, "EFileCacheReadAheadOn" ); +_LIT( KFileCacheWriteEnabled, "EFileCacheWriteEnabled" ); +_LIT( KFileCacheWriteOn, "EFileCacheWriteOn" ); + +// Attributes +_LIT(KEntryAttNormalStr, "KEntryAttNormal"); +_LIT(KEntryAttReadOnlyStr, "KEntryAttReadOnly"); +_LIT(KEntryAttHiddenStr, "KEntryAttHidden"); +_LIT(KEntryAttSystemStr, "KEntryAttSystem"); +_LIT(KEntryAttVolumeStr, "KEntryAttVolume"); +_LIT(KEntryAttDirStr, "KEntryAttDir"); +_LIT(KEntryAttArchiveStr, "KEntryAttArchive"); +_LIT(KEntryAttXIPStr, "KEntryAttXIP"); +#if (!defined(__Symbian_OS_v9_1__)) +_LIT(KEntryAttRemoteStr, "KEntryAttRemote"); +_LIT(KEntryAttMaskFileSystemSpecificStr,"KEntryAttMaskFileSystemSpecific"); +#endif +_LIT(KEntryAttMatchMaskStr, "KEntryAttMatchMask"); +_LIT(KEntryAttMaskSupportedStr, "KEntryAttMaskSupported"); +_LIT(KEntryAttMatchExclusiveStr, "KEntryAttMatchExclusive"); +_LIT(KEntryAttMatchExcludeStr, "KEntryAttMatchExclude"); +_LIT(KEntryAttAllowUidStr, "KEntryAttAllowUid"); + +// constants +const TInt KUid1Index = 0; +const TInt KUid2Index = 1; +const TInt KUid3Index = 2; + +const TInt KTimeFormatSize = 30; +_LIT( KTimeFormat, "%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B" ); + +/*@}*/ + + + +TBool FileserverUtil::VerifyTEntryDataFromIniL(CDataWrapper& aDataWrapper, const TDesC& aSection, TEntry& aEntry) + { + TBool ret = ETrue; + + aDataWrapper.INFO_PRINTF2(_L("Entry name = %S"), &aEntry.iName ); + + TPtrC expectedStr; + if ( aDataWrapper.GetStringFromConfig(aSection, KExpectedName(), expectedStr) ) + { + if (aEntry.iName.CompareC(expectedStr, 0, NULL) != 0) + { + aDataWrapper.ERR_PRINTF3(_L("%S != %S"), &aEntry.iName, &expectedStr); + ret = EFalse; + } + else + { + aDataWrapper.INFO_PRINTF3(_L("%S == %S"), &aEntry.iName, &expectedStr); + } + } + + TInt expectedInt = 0; + if ( aDataWrapper.GetIntFromConfig(aSection, KExpectedSize(), expectedInt) ) + { + aDataWrapper.INFO_PRINTF2(_L("Entry size = %d"), aEntry.iSize ); + if (aEntry.iSize != expectedInt) + { + aDataWrapper.ERR_PRINTF3(_L("Size from ini file not equal with size returned from function (%d != %d)"), expectedInt, aEntry.iSize); + ret = EFalse; + } + } + + if ( aDataWrapper.GetStringFromConfig(aSection, KExpectedTime(), expectedStr) ) + { + TBuf dateString; + aEntry.iModified.FormatL(dateString, KTimeFormat); + aDataWrapper.INFO_PRINTF2(_L("Entry modified %S"), &dateString); + + TTime modificationTime; + User::LeaveIfError(modificationTime.Set(expectedStr)); + + if (aEntry.iModified != modificationTime) + { + aDataWrapper.ERR_PRINTF1(_L("Time from ini file not equal with time returned from function.")); + ret = EFalse; + } + } + + if ( aDataWrapper.GetIntFromConfig(aSection, KExpectedUid1(), expectedInt) ) + { + TInt uid1 = aEntry.iType[KUid1Index].iUid; + aDataWrapper.INFO_PRINTF2(_L("Entry UID1 = %d"), uid1 ); + + if ( uid1 != expectedInt ) + { + aDataWrapper.ERR_PRINTF3(_L("Entry UID1 %d != ini UID1 %d)"), uid1, expectedInt); + ret = EFalse; + } + } + + if ( aDataWrapper.GetIntFromConfig(aSection, KExpectedUid2(), expectedInt) ) + { + TInt uid2 = aEntry.iType[KUid2Index].iUid; + aDataWrapper.INFO_PRINTF2(_L("Entry UID2 = %d"), uid2 ); + + if ( uid2 != expectedInt ) + { + aDataWrapper.ERR_PRINTF3(_L("Entry UID2 %d != ini UID1 %d)"), uid2, expectedInt); + ret = EFalse; + } + } + + if ( aDataWrapper.GetIntFromConfig(aSection, KExpectedUid3(), expectedInt) ) + { + TInt uid3 = aEntry.iType[KUid3Index].iUid; + aDataWrapper.INFO_PRINTF2(_L("Entry UID3 = %d"), uid3 ); + + if ( uid3 != expectedInt ) + { + aDataWrapper.ERR_PRINTF3(_L("Entry UID3 %d != ini UID3 %d)"), uid3, expectedInt); + ret = EFalse; + } + } + + if ( aDataWrapper.GetIntFromConfig(aSection, KExpectedMostDerivedUid(), expectedInt) ) + { + TInt mostDerivedUid = aEntry.MostDerivedUid().iUid; + aDataWrapper.INFO_PRINTF2(_L("MostDerivedUid = %d"), mostDerivedUid); + + if ( mostDerivedUid != expectedInt ) + { + aDataWrapper.ERR_PRINTF3(_L("Entry MostDerivedUid %d != ini MostDerivedUid %d)"), mostDerivedUid, expectedInt); + ret = EFalse; + } + } + + + return ret; + } + + + +TBool FileserverUtil::VerifyTVolumeInfoDataFromIniL(CDataWrapper& aDataWrapper, const TDesC& aSection, TVolumeInfo& aVolumeInfo) + { + TBool ret = ETrue; + + //Get volume name from config. + TPtrC volumeLabel; + if (aDataWrapper.GetStringFromConfig(aSection, KVolumeLabel(), volumeLabel)) + { + //Checking that name of volume is equal to passed through config file. + if (aVolumeInfo.iName.CompareC(volumeLabel, 0, NULL) != 0) + { + aDataWrapper.ERR_PRINTF1(_L("Volume name from ini file not equal with volume name returned from function")); + ret = EFalse; + } + } + + TInt tmp; + if (aDataWrapper.GetIntFromConfig(aSection, KVolumeSize(), tmp)) + { + TInt64 volumeSize; + volumeSize = tmp; + //Checking that size of volume is equal to passed through config file. + if (volumeSize != aVolumeInfo.iSize) + { + aDataWrapper.ERR_PRINTF1(_L("Volume size from ini file not equal with volume size returned from function")); + ret = EFalse; + } + } + + if (aDataWrapper.GetIntFromConfig(aSection, KVolumeFreeSpace(), tmp)) + { + TInt64 freeSpace; + freeSpace = tmp; + //Checking that free space of volume is equal to passed through config file. + if (freeSpace != aVolumeInfo.iFree) + { + aDataWrapper.ERR_PRINTF1(_L("Volume free space amount from ini file not equal with volume free space amount returned from function")); + ret = EFalse; + } + } + + if (aDataWrapper.GetIntFromConfig(aSection, KVolumeUniqueID(), tmp)) + { + if(tmp<0) + { + aDataWrapper.ERR_PRINTF1(_L("ID in config should be not less than 0 ")); + ret = EFalse; + } + else + { + TUint volumeUniqueID; + volumeUniqueID = (TUint)tmp; + //Checking that Unique ID of volume is equal to passed through config file. + if (volumeUniqueID != aVolumeInfo.iUniqueID) + { + aDataWrapper.ERR_PRINTF1(_L("Volume unique ID from ini file not equal with volume unique ID returned from function")); + ret = EFalse; + } + } + } + + TPtrC volumeFileCacheFlags; + if (aDataWrapper.GetStringFromConfig(aSection, KVolumeFileCacheFlags(), volumeFileCacheFlags)) + { + TFileCacheFlags tmpFileCacheFlags; + if(volumeFileCacheFlags == KFileCacheReadEnabled()) + { + tmpFileCacheFlags = EFileCacheReadEnabled; + } + else if(volumeFileCacheFlags == KFileCacheReadOn()) + { + tmpFileCacheFlags = EFileCacheReadOn; + } + else if(volumeFileCacheFlags == KFileCacheReadAheadEnabled()) + { + tmpFileCacheFlags = EFileCacheReadAheadEnabled; + } + else if(volumeFileCacheFlags == KFileCacheReadAheadOn()) + { + tmpFileCacheFlags = EFileCacheReadAheadOn; + } + else if(volumeFileCacheFlags == KFileCacheWriteEnabled()) + { + tmpFileCacheFlags = EFileCacheWriteEnabled; + } + else if(volumeFileCacheFlags == KFileCacheWriteOn()) + { + tmpFileCacheFlags = EFileCacheWriteOn; + } + else + { + aDataWrapper.ERR_PRINTF1(_L("Volume file cache flags from ini file not equal with volume file cache flags returned from function")); + ret = EFalse; + } + + if(ret && (aVolumeInfo.iFileCacheFlags != tmpFileCacheFlags)) + { + aDataWrapper.ERR_PRINTF1(_L("Volume file cache flags from ini file not equal with volume file cache flags returned from function")); + ret = EFalse; + } + } + return ret; + } + + + +TBool FileserverUtil::GetAttMask(CDataWrapper& aDataWrapper, const TDesC& aSection, const TDesC& aParameterName, TUint& aAttMask) + { + TPtrC iniAttMaskStr; + TBool ret = aDataWrapper.GetStringFromConfig(aSection, aParameterName, iniAttMaskStr); + if ( ret ) + { + if ( !ConvertToAttMask(iniAttMaskStr, aAttMask) ) + { + TInt intTemp; + ret = aDataWrapper.GetIntFromConfig(aSection, aParameterName, intTemp); + if ( ret ) + { + aAttMask = intTemp; + } + } + } + + return ret; + } + + + +TBool FileserverUtil::ConvertToAttMask(const TDesC& aAttMaskStr, TUint& aAttMask) + { + TBool ret = ETrue; + + if (aAttMaskStr == KEntryAttNormalStr) + { + aAttMask = KEntryAttNormal; + } + else if (aAttMaskStr == KEntryAttReadOnlyStr) + { + aAttMask = KEntryAttReadOnly; + } + else if (aAttMaskStr == KEntryAttHiddenStr) + { + aAttMask = KEntryAttHidden; + } + else if (aAttMaskStr == KEntryAttSystemStr) + { + aAttMask = KEntryAttSystem; + } + else if (aAttMaskStr == KEntryAttVolumeStr) + { + aAttMask = KEntryAttVolume; + } + else if (aAttMaskStr == KEntryAttDirStr) + { + aAttMask = KEntryAttDir; + } + else if (aAttMaskStr == KEntryAttArchiveStr) + { + aAttMask = KEntryAttArchive; + } + else if (aAttMaskStr == KEntryAttXIPStr) + { + aAttMask = KEntryAttXIP; + } +#if (!defined(__Symbian_OS_v9_1__)) + else if (aAttMaskStr == KEntryAttRemoteStr) + { + aAttMask = KEntryAttRemote; + } + else if (aAttMaskStr == KEntryAttMaskFileSystemSpecificStr) + { + aAttMask = KEntryAttMaskFileSystemSpecific; + } +#endif + else if (aAttMaskStr == KEntryAttMatchMaskStr) + { + aAttMask = KEntryAttMatchMask; + } + else if (aAttMaskStr == KEntryAttMaskSupportedStr) + { + aAttMask = KEntryAttMaskSupported; + } + else if (aAttMaskStr == KEntryAttMatchExclusiveStr) + { + aAttMask = KEntryAttMatchExclusive; + } + else if (aAttMaskStr == KEntryAttMatchExcludeStr) + { + aAttMask = KEntryAttMatchExclude; + } + else if (aAttMaskStr == KEntryAttAllowUidStr) + { + aAttMask = KEntryAttAllowUid; + } + else if (aAttMaskStr.Match((_L("*|*"))) != KErrNotFound) + { + TUint tmpAttMask; + + TInt location = aAttMaskStr.Match(_L("*|*")); + //Converting Left part of the data + TPtrC left = aAttMaskStr.Left(location); + if (ConvertToAttMask(left, tmpAttMask)) + { + aAttMask = tmpAttMask; + } + else + { + ret = EFalse; + } + + //Converting right data can be with another "|" + TPtrC right = aAttMaskStr.Mid(location + 1); + if (ConvertToAttMask(right, tmpAttMask)) + { + aAttMask = aAttMask | tmpAttMask; + } + else + { + ret = EFalse; + } + } + else + { + ret = EFalse; + } + + return ret; + } +