diff -r 000000000000 -r 8e480a14352b messagingfw/msgtestfw/TestActionUtils/src/TMtfTestActionUtilsSchSendScripts.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtestfw/TestActionUtils/src/TMtfTestActionUtilsSchSendScripts.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,227 @@ +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +#include "TMtfTestActionUtilsSchSendScripts.h" +#include "CMtfTestActionUtilsConfigFileParser.h" +#include "CMtfTestCase.h" + +#include +#include +#include + +_LIT(KCfgConditionActionTotal, "ConditionActionTotal"); +_LIT(KCfgDefaultErrorActionIndex, "DefaultErrorActionIndex"); + +_LIT(KCfgAgentCondition, "AgentCondition"); +_LIT(KCfgAgentConditionVariable, ".Variable"); +_LIT(KCfgAgentConditionState, ".State"); +_LIT(KCfgAgentConditionType, ".Type"); + +_LIT(KCfgConditionErrorAction, "ConditionErrorAction"); + +_LIT(KCfgErrorActionError, ".Error"); +_LIT(KCfgErrorActionAction, ".Action"); +_LIT(KCfgErrorActionRetries, ".Retries"); +_LIT(KCfgErrorActionRetrySpacing, ".RetrySpacing"); +_LIT(KCfgErrorActionMaxRetries, ".MaxRetries"); +_LIT(KCfgConditionActionUseDefault, "UseDefaultErrorAction"); + +_LIT(KCfgPendingConditionTimeOut, "PendingConditionTimeOut"); + +_LIT(KCfgValidityPeriod, "ValidityPeriod"); +_LIT(KCfgIntervalType, "IntervalType"); +_LIT(KCfgShortInterval, "ShortInterval"); +_LIT(KCfgLongInterval, "LongInterval"); +_LIT(KCfgLatency, "Latency"); +_LIT(KCfgVariableIntervalCount, "VariableIntervalCount"); +_LIT(KCfgVariableInterval, "VariableInterval"); + +/** +The method reads the CMsvSysAgentActions settings from the configuration file. + +@param aTestCase A reference to the current test case +@param aSettingsFile The configuration file name +@param aSysAgentActions A reference to the CMsvSysAgentActions object which is to be set from the configuration file. + +@internalTechnology +*/ +void TMtfTestActionUtilsSchSendScripts::ReadScheduleSettingsFromConfigurationFileL(CMtfTestCase& /** aTestCase */, const TDesC& aSettingsFile, CMsvSysAgentActions& aSysAgentActions) + { + CMtfTestActionUtilsConfigFileParser* scriptFileParser = CMtfTestActionUtilsConfigFileParser::NewL(aSettingsFile); + CleanupStack::PushL(scriptFileParser); + + TInt count = 0; + TInt defaultIndex = 0; + + // Total number of Condition Actions + scriptFileParser->GetFieldAsInteger(KCfgConditionActionTotal, count); + + // Default Error Action Index + scriptFileParser->GetFieldAsInteger(KCfgDefaultErrorActionIndex, defaultIndex); + + TInt i=0; + TBuf<100> sectionName; + while(i < count) + { + + TMsvCondition condition; + + sectionName.Copy(KCfgAgentCondition); + sectionName.AppendNum(i); + TInt pos = sectionName.Length(); + sectionName.Append(KCfgAgentConditionVariable); + TInt variable = 0; + scriptFileParser->GetFieldAsInteger(sectionName, variable); + + condition.iVariable.iUid = variable; + + sectionName.Replace(pos, KCfgAgentConditionVariable().Length(), KCfgAgentConditionState); + scriptFileParser->GetFieldAsInteger(sectionName, condition.iState); + + variable = 0; + sectionName.Replace(pos, KCfgAgentConditionState().Length(), KCfgAgentConditionType); + scriptFileParser->GetFieldAsInteger(sectionName, variable); + //ESysAgentEquals=32, but EMsvSchSendEquals start with 0 + variable -= 32; + condition.iType = static_cast(variable); + + TMsvSendErrorAction action; + sectionName.Copy(KCfgConditionErrorAction); + sectionName.AppendNum(i); + pos = sectionName.Length(); + sectionName.Append(KCfgErrorActionError); + scriptFileParser->GetFieldAsInteger(sectionName, action.iError); + + variable = 0; + sectionName.Replace(pos, KCfgErrorActionError().Length(), KCfgErrorActionAction); + scriptFileParser->GetFieldAsInteger(sectionName, variable); + action.iAction = static_cast(variable); + + variable = 0; + sectionName.Replace(pos, KCfgErrorActionAction().Length(), KCfgErrorActionRetries); + scriptFileParser->GetFieldAsInteger(sectionName, variable); + action.iRetries = static_cast(variable); + + variable = 0; + sectionName.Replace(pos, KCfgErrorActionRetries().Length(), KCfgErrorActionRetrySpacing); + scriptFileParser->GetFieldAsInteger(sectionName, variable); + action.iRetrySpacing = static_cast(variable); + + variable = 0; + sectionName.Replace(pos, KCfgErrorActionRetrySpacing().Length(), KCfgErrorActionMaxRetries); + scriptFileParser->GetFieldAsInteger(sectionName, variable); + action.SetMaxRetries( static_cast(variable) ); + + TMsvSysAgentConditionAction conditionAction; + conditionAction.iCondition = condition; + conditionAction.iErrorAction = action; + + sectionName.Copy(KCfgConditionActionUseDefault); + sectionName.AppendNum(i); + scriptFileParser->GetFieldAsInteger(sectionName, conditionAction.iUseDefaultSysAgentAction); + + aSysAgentActions.AppendL(conditionAction); + + if(i == defaultIndex) + { + aSysAgentActions.iDefault = action; + } + ++i; + } + CleanupStack::PopAndDestroy(scriptFileParser); + } + +/** +The method reads the CMsvScheduleSettings settings from the configuration file. + +@param aTestCase A reference to the current test case +@param aSettingsFile The configuration file name +@param aSysAgentActions A reference to the CMsvScheduleSettings object which is to be set from the configuration file. + +@internalTechnology +*/ +void TMtfTestActionUtilsSchSendScripts::ReadScheduleSettingsFromConfigurationFileL(CMtfTestCase& /** aTestCase*/, const TDesC& aSettingsFile, CMsvScheduleSettings& aScheduleSettings) + { + CMtfTestActionUtilsConfigFileParser* scriptFileParser = CMtfTestActionUtilsConfigFileParser::NewL(aSettingsFile); + CleanupStack::PushL(scriptFileParser); + + TInt variable = 0; + TTimeIntervalMinutes minutes; + TTimeIntervalSeconds seconds; + TTimeIntervalMicroSeconds32 microSeconds; + if(scriptFileParser->GetFieldAsInteger(KCfgValidityPeriod, variable) == KErrNone) + { + minutes = variable; + aScheduleSettings.SetValidityPeriod(minutes); + } + + variable = 0; + if(scriptFileParser->GetFieldAsInteger(KCfgIntervalType, variable) == KErrNone) + { + TIntervalType intervalType = static_cast(variable); + aScheduleSettings.SetIntervalType(intervalType); + } + + variable = 0; + if(scriptFileParser->GetFieldAsInteger(KCfgShortInterval, variable) == KErrNone) + { + seconds = variable; + aScheduleSettings.SetShortInterval(seconds); + } + + variable = 0; + if(scriptFileParser->GetFieldAsInteger(KCfgLongInterval, variable) == KErrNone) + { + seconds = variable; + aScheduleSettings.SetLongInterval(seconds); + } + + variable = 0; + if(scriptFileParser->GetFieldAsInteger(KCfgLatency, variable) == KErrNone) + { + microSeconds = variable; + aScheduleSettings.SetLatency(microSeconds); + } + + CArrayFixFlat* variableIntervals = new (ELeave) CArrayFixFlat(1); + CleanupStack::PushL(variableIntervals); + + TInt count = 0; + scriptFileParser->GetFieldAsInteger(KCfgVariableIntervalCount, count); + TBuf<100> sectionName; + TInt i=0; + while(i < count) + { + sectionName.Copy(KCfgVariableInterval); + sectionName.AppendNum(i); + scriptFileParser->GetFieldAsInteger(sectionName, variable); + seconds = variable; + variableIntervals->AppendL(seconds); + ++i; + } + + aScheduleSettings.SetVariableIntervalsL(*variableIntervals); + CleanupStack::PopAndDestroy(variableIntervals); + + variable = 0; + if(scriptFileParser->GetFieldAsInteger(KCfgPendingConditionTimeOut, variable) == KErrNone) + { + minutes = variable; + aScheduleSettings.SetPendingConditionsTimeout(minutes); + } + + CleanupStack::PopAndDestroy(scriptFileParser); + }