# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1272380014 -10800 # Node ID 51722b10598bd67e55c4b34899f9796a1017d057 # Parent 4ccf8e3947263bd7ae4b1836ee32eccf3979f581 Revision: 201017 Kit: 201017 diff -r 4ccf8e394726 -r 51722b10598b commsfwsupport/commselements/commsfw/src/cfutil.cpp --- a/commsfwsupport/commselements/commsfw/src/cfutil.cpp Wed Apr 14 17:14:05 2010 +0300 +++ b/commsfwsupport/commselements/commsfw/src/cfutil.cpp Tue Apr 27 17:53:34 2010 +0300 @@ -438,6 +438,7 @@ { do { + CleanupStack::PushL(dir); const TInt cnt = dir->Count(); for(TInt i = 0; i < cnt; ++i) { @@ -445,7 +446,7 @@ fullEntry.Set(entry.iName, &ff.File(), NULL); AddL(TOwnEntry(fullEntry, entry)); } - delete dir; + CleanupStack::PopAndDestroy(dir); } while(ff.FindWild(dir) == KErrNone); } @@ -469,46 +470,46 @@ TParse fullEntry; CDir* dir; RArray files; + CleanupClosePushL(files); TBool found; if(ff.FindWildByDir(aFileMask, aDir, dir) == KErrNone) { do { + CleanupStack::PushL(dir); const TInt cnt = dir->Count(); for(TInt i = 0; i < cnt; ++i) { const TEntry& entry = (*dir)[i]; - if(files.Count()!=0) - { + if(files.Count()!=0) + { found = EFalse; for( TInt Index=0;Index(Server()); - __ASSERT_DEBUG(s->iNumSessions>0, User::Panic(KDenFaultPanic, ECommonNegativeSessionCount)); - s->iNumSessions--; - COMMONLOG((WorkerId(), KECommonSessDetailTag, _L8("CWorkerSession(%08x):\t~CWorkerSession() iNumSessions=%d (remaining)"), this, s->iNumSessions)); - - CCommonWorkerThread& selfWorker = WorkerThread(); - if (selfWorker.ShuttingDown()) - { - COMMONLOG((WorkerId(), KECommonSessDetailTag, _L8("Shutdown requested: %d sessions"), s->iNumSessions)); - if (s->iNumSessions <= 0) - { - if(selfWorker.IsMainThread()) - { - selfWorker.PitBoss().SessionShutdownComplete(); - } - else - { - selfWorker.MaybeTriggerThreadShutdownCallback(); - } - } - } + if (s) // guard against leave during construction (e.g. a leave from CWorkerSession::ConstructL()). + { + __ASSERT_DEBUG(s->iNumSessions>0, User::Panic(KDenFaultPanic, ECommonNegativeSessionCount)); + s->iNumSessions--; + COMMONLOG((WorkerId(), KECommonSessDetailTag, _L8("CWorkerSession(%08x):\t~CWorkerSession() iNumSessions=%d (remaining)"), this, s->iNumSessions)); + + CCommonWorkerThread& selfWorker = WorkerThread(); + if (selfWorker.ShuttingDown()) + { + COMMONLOG((WorkerId(), KECommonSessDetailTag, _L8("Shutdown requested: %d sessions"), s->iNumSessions)); + if (s->iNumSessions <= 0) + { + if(selfWorker.IsMainThread()) + { + selfWorker.PitBoss().SessionShutdownComplete(); + } + else + { + selfWorker.MaybeTriggerThreadShutdownCallback(); + } + } + } + } } EXPORT_C void CWorkerSession::ProcessSubSessions(TWorkerId aPeerId, TSubSessionProcessor aSubSessionProcessor, TAny* aArg) diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/ssock/ss_connstates.cpp --- a/datacommsserver/esockserver/ssock/ss_connstates.cpp Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/ssock/ss_connstates.cpp Tue Apr 27 17:53:34 2010 +0300 @@ -637,23 +637,22 @@ { TStateChange& progress = progressMsg->iStateChange; - if (iContext.iSender != iContext.Node().Id()) - { - //CConnection trusts that locally generated progresses are to be trusted, - //but some of the legacy progresses coming from the stack need some filtering. - //Here's the filtering. + // Check whether KDataTransferUnblocked is received and if yes, then traslate it to KConnectionUp (== KLinkLayerOpen) + // the log only sees the translated version, this goes into the queue, so it alright I suppose. + if (progress.iStage == KDataTransferUnblocked ) + { + progress.iStage = KConnectionUp; // KLinkLayerOpen + } + if (progress.iError == KErrForceDisconnected) + { + progress.iError = KErrDisconnected; + } - // Check whether KDataTransferUnblocked is received and if yes, then traslate it to KConnectionUp (== KLinkLayerOpen) - // the log only sees the translated version, this goes into the queue, so it alright I suppose. - if (progress.iStage == KDataTransferUnblocked ) - { - progress.iStage = KConnectionUp; // KLinkLayerOpen - } - if (progress.iError == KErrForceDisconnected) - { - progress.iError = KErrDisconnected; - } - + // CConnection trusts that locally generated progresses are to be trusted, + // but some of the legacy progresses coming from the stack need some filtering. + // Here's the filtering. + if (iContext.iSender != iContext.Node().Id()) + { if (progress.iStage == KConnectionUninitialised) { //KConnectionUninitialised has been deprecated in the stack and it will be ignored diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp --- a/datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp Tue Apr 27 17:53:34 2010 +0300 @@ -103,18 +103,8 @@ ASSERT(aContext.Activity() != NULL); RNodeInterface* rcpt = NULL; - /* At the connection level we want to go down active serviceprovider, as there are multiple - and the first one is usually an scpr */ - if (aContext.Activity()->ActivitySigId() == ECFActivityConnectionLegacyRMessage2Handler) - { - rcpt = aContext.Node().GetFirstClient(TClientType(TCFClientType::EServProvider, TCFClientType::EActive), + rcpt = aContext.Node().GetFirstClient(TClientType(TCFClientType::EServProvider, TCFClientType::EActive), Messages::TClientType(0, Messages::TClientType::ELeaving)); - } - else - { - rcpt = aContext.Node().GetFirstClient(TClientType(TCFClientType::EServProvider), - Messages::TClientType(0, Messages::TClientType::ELeaving)); - } if(rcpt) { diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/ssock/ss_roles.cpp --- a/datacommsserver/esockserver/ssock/ss_roles.cpp Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/ssock/ss_roles.cpp Tue Apr 27 17:53:34 2010 +0300 @@ -1797,7 +1797,6 @@ else { err = KErrNoMemory; - CleanupStack::Pop(startupInfo); } return err; diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/test/TE_EsockTestSteps/inc/Connections.TestSteps.h --- a/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/Connections.TestSteps.h Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/Connections.TestSteps.h Tue Apr 27 17:53:34 2010 +0300 @@ -25,6 +25,7 @@ #define CONNECTIONS_TESTSTEPS_H #include +#include #include "Te_EsockStepBase.h" _LIT(KTe_ConnectionName,"ConnName"); @@ -41,6 +42,9 @@ _LIT(KTe_CommDbBearerCSD,"KCommDbBearerCSD"); _LIT(KTe_CommDbBearerWcdma,"KCommDbBearerWcdma"); _LIT(KTe_CommDbBearerLAN,"KCommDbBearerLAN"); +_LIT(KTe_ParameterType, "ParameterType"); +_LIT(KTe_ParameterExpectedValue,"ParameterExpectedValue"); + //mobility api _LIT(KTe_MobilityAPIName,"MobilityExtName"); @@ -424,6 +428,22 @@ _LIT(KCheckNegativeProgressNotificationStep,"CheckNegativeProgressNotificationStep"); +class CGetParameters_IntStep : public CTe_EsockStepBase + { +public: + CGetParameters_IntStep(CCEsockTestBase*& aEsockTest); + TVerdict doSingleTestStep(); + TInt ConfigureFromIni(); +private: + TPtrC iConnectionName; + TPtrC iFieldName; + CommsDat::TMDBElementId iRecordTypeId; + TInt iExpectedValue; + }; + +_LIT(KGetParameters_IntStep,"GetParameters_IntStep"); + + #endif // CONNECTIONS_TESTSTEPS_H diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/test/TE_EsockTestSteps/inc/EsockTestBase.h --- a/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/EsockTestBase.h Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/EsockTestBase.h Tue Apr 27 17:53:34 2010 +0300 @@ -517,6 +517,8 @@ TInt CreateAvailabilityExtension(const TDesC& aAvailabilityExtensionName); TInt RegisterForProgressNotificationEvent(const TEventContainerParams& aParams); TInt ReceiveProgressNotificationEvent(TNifProgress*& aNifProgress, const TDesC& aEventName, TUint aTimeoutInMiliSec = 0); + TInt GetParameters(TPtrC aConnectionName, ESock::CCommsDataObjectBase& aDataObject); + TInt GetIntSetting(TPtrC aConnectionName, const TDesC& aSettingName, TUint32& aValue); //mobility extensions RCommsMobilityApiExt* FindMobilityExtension(const TDesC& aMobilityExtensionName); diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/test/TE_EsockTestSteps/src/Connections.TestSteps.cpp --- a/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Connections.TestSteps.cpp Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Connections.TestSteps.cpp Tue Apr 27 17:53:34 2010 +0300 @@ -22,6 +22,9 @@ #include "SocketServer.TestSteps.h" #include "Sockets.TestSteps.h" #include +#include +#include +#include #ifdef _DEBUG @@ -1205,4 +1208,103 @@ } +// GetParameters_Int +//------------------------------- +CGetParameters_IntStep::CGetParameters_IntStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KGetParameters_IntStep); + } + +TInt CGetParameters_IntStep::ConfigureFromIni() + { + // Read in appropriate fields + if((GetStringFromConfig(iSection, KTe_ConnectionName, iConnectionName) != 1) + || (iConnectionName.Length() == 0)) + { + INFO_PRINTF1(_L("Couldn't find appropriate field in config file")); + return KErrNotFound; + } + + if((GetStringFromConfig(iSection, KTe_ParameterType, iFieldName) != 1) + || (iFieldName.Length() == 0)) + { + INFO_PRINTF1(_L("Couldn't find appropriate field in config file")); + return KErrNotFound; + } + _LIT(KIapTableIdDes, "IAP\\Id" ); + if (iFieldName.Compare(KIapTableIdDes) == 0) + { + iRecordTypeId = CommsDat::KCDTIdIAPRecord | CommsDat::KCDTIdRecordTag; + } + /*else + * Don't get too angry, but so far, this generic looking test step only does IAP + * There are nice arrays in CED that can be used to address any field. If you're + * desperate, please pull them in and modify this test step to be able to retrieve + * any field + */ + + if(!GetIntFromConfig(iSection, KTe_ParameterExpectedValue, iExpectedValue)) + { + INFO_PRINTF1(_L("Couldn't find appropriate field in config file")); + return KErrNotFound; + } + + return KErrNone; + } + + +TVerdict CGetParameters_IntStep::doSingleTestStep() + { + TInt ret = KErrNone; + ESock::XConnectionQuerySet* querySet = NULL; + TRAP(ret, querySet = ESock::XConnectionQuerySet::NewL() ); + + if ( ret == KErrNone ) + { + TRAP(ret, ESock::XUintQuery::NewL(iRecordTypeId, *querySet) ); + } + ESock::CConnectionQuerySet* connectionQuerySet = NULL; + if ( ret == KErrNone ) + { + TRAP(ret, connectionQuerySet = ESock::CConnectionQuerySet::NewL(querySet) ); + } + + if( (ret = iEsockTest->GetParameters(iConnectionName, *connectionQuerySet)) != KErrNone) + { + INFO_PRINTF2(_L("RConnection::GetParameters returned %d"), ret); + SetTestStepError(ret); + return EFail; + } + + ESock::XConnectionQuerySet& outputQuerySet = connectionQuerySet->DataObject(); + ESock::XUintQuery* iapTableIdQuery = static_cast(outputQuerySet.FindQuery( iRecordTypeId )); + __ASSERT_DEBUG(iapTableIdQuery, User::Panic(KSpecAssert_ESockTestCnctnsT, 2)); + if (iapTableIdQuery->Error() != KErrNone) + { + INFO_PRINTF2(_L("RConnection::GetParameters Int query returned (%d)"), iapTableIdQuery->Error()); + SetTestStepError(KErrCorrupt); + return EFail; + } + + if (iapTableIdQuery->Data() != iExpectedValue) + { + INFO_PRINTF3(_L("RConnection::GetParameters Int query returned (%d) something else than expected (%d)"), iapTableIdQuery->Data(), iExpectedValue); + SetTestStepError(KErrCorrupt); + return EFail; + } + + /*Just out of justified paranoia, we're extracting the same field using RConnection::GetIntSetting*/ + TUint32 aValue; + iEsockTest->GetIntSetting(iConnectionName, iFieldName, aValue); + if (aValue != iExpectedValue) + { + INFO_PRINTF3(_L("RConnection::GetIntSetting returned (%d) something else than expected (%d)"), aValue, iExpectedValue); + SetTestStepError(KErrCorrupt); + return EFail; + } + + return EPass; + } + diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/test/TE_EsockTestSteps/src/EsockTestBase.cpp --- a/datacommsserver/esockserver/test/TE_EsockTestSteps/src/EsockTestBase.cpp Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/EsockTestBase.cpp Tue Apr 27 17:53:34 2010 +0300 @@ -1232,6 +1232,23 @@ return KErrNone; } +TInt CCEsockTestBase::GetParameters(TPtrC aConnectionName, ESock::CCommsDataObjectBase& aDataObject) + { + RConnection* c = iConns.Find(aConnectionName); + if (c==NULL) + return KErrNotFound; + return c->GetParameters(aDataObject); + } + +TInt CCEsockTestBase::GetIntSetting(TPtrC aConnectionName, const TDesC& aSettingName, TUint32& aValue) + { + RConnection* c = iConns.Find(aConnectionName); + if (c==NULL) + return KErrNotFound; + return c->GetIntSetting(aSettingName, aValue); + } + + TInt CCEsockTestBase::StartConnection(TRConnectionParams& aParams) { RConnection* c = iConns.Find(aParams.iConnectionName); @@ -2235,6 +2252,8 @@ return ec->iEventReceived.Int(); } + + // //cleanup diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp --- a/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp Tue Apr 27 17:53:34 2010 +0300 @@ -422,6 +422,7 @@ NEW_ESOCK_TESTSTEP(RegisterProgressNotificationStep) NEW_ESOCK_TESTSTEP(CheckProgressNotificationStep) NEW_ESOCK_TESTSTEP(CheckNegativeProgressNotificationStep) + NEW_ESOCK_TESTSTEP(GetParameters_IntStep) return testStep; } diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/Mobility_760645.ini --- a/datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/Mobility_760645.ini Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/Mobility_760645.ini Tue Apr 27 17:53:34 2010 +0300 @@ -57,11 +57,13 @@ [MigrateToPreferredCarrier] MobilityExtName=MobExt1 -[RejectNewCarrier] +[AcceptNewCarrier] MobilityExtName=MobExt1 -[AcceptNewCarrier] -MobilityExtName=MobExt1 +[CheckNewIAP] +ConnName=Conn1 +ParameterType=IAP\Id +ParameterExpectedValue=5 [CloseMobilityExtension] MobilityExtName=MobExt1 diff -r 4ccf8e394726 -r 51722b10598b datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_760645.script --- a/datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_760645.script Wed Apr 14 17:14:05 2010 +0300 +++ b/datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_760645.script Tue Apr 27 17:53:34 2010 +0300 @@ -23,6 +23,7 @@ PRINT Simulate current AP going down, PRINT Receive PreferredCarierAvailable but no KLinkLayerClosed, PRINT Migration to the new AP, +PRINT RConnection::GetParameters(IAP) to check the reported IAP is expected PRINT New AP goes down, reception of KLinkLayerClosed , PRINT RCommsMobilityApiExt::Close() @@ -84,6 +85,10 @@ //Check we did not receive the Klinklayerclosed event RUN_TEST_STEP 100 te_esockteststepsSuite CheckNegativeProgressNotificationStep z:\testdata\configs\BearerMobility\Mobility_760645.ini CheckNegativeProgressNotificationEvent1 +//Check IAP +RUN_TEST_STEP 150 te_esockteststepsSuite GetParameters_IntStep z:\testdata\configs\BearerMobility\Mobility_760645.ini CheckNewIAP + + //Simulate the new access point going down and receive RUN_TEST_STEP 150 te_esockteststepsSuite SetAccessPointAvailabilityStep z:\testdata\configs\BearerMobility\Mobility_760645.ini ChangeAvailabilityDownAp5