--- a/commsconfig/commsdatabaseshim/Documentation/BC Shim Design Document.doc Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
--- a/commsconfig/commsdatabaseshim/Documentation/CommDb_API.doc Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
--- a/commsconfig/commsdatabaseshim/Documentation/CommDb_Design_Delta.doc Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
--- a/commsconfig/commsdatabaseshim/Documentation/CommDb_Unit_Test_Specification.doc Fri Jan 22 10:58:59 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-ÐÏࡱ
\ No newline at end of file
Binary file commsfw_info/commsinfrastructuredocs/Comms Framework Migration Guide for NIFs and v1.5 PRTs.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Architectural_Description.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Architecture_FAQ.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Functional_Specification.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_How_to_implement_a_layer.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Comms-Infras_Subsystem_Release_Note.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/How to run test harnesses in Comms-Infras.doc has changed
Binary file commsfw_info/commsinfrastructuredocs/Selection Fundamentals.doc has changed
Binary file commsfwsupport/commselements/MsgParser/Documentation/Message Structure & Parser Design Document.doc has changed
Binary file commsfwsupport/commselements/NetMeta/Documentation/NetMeta_Design_Document.doc has changed
Binary file commsfwsupport/commselements/NetSubscribe/documentation/NetSubscribe Design.doc has changed
Binary file commsfwsupport/commselements/StartServer/Documentation/Start Server Design Document.doc has changed
Binary file commsfwsupport/commselements/StateMachine/Documentation/State Machine Design Document.doc has changed
Binary file commsfwsupport/commselements/commsfw/documentation/CFTransport Design Document.doc has changed
Binary file commsfwsupport/commselements/commsfw/documentation/Comms Framework API.doc has changed
Binary file commsfwsupport/commselements/commsfw/documentation/Comms Framework Test Specification.doc has changed
Binary file commsfwsupport/commselements/commsfw/te_commsfw_transport/documentation/Preq 399 Thread Transport Test Specification.doc has changed
Binary file commsfwsupport/commselements/meshmachine/documentation/MeshMachineFundamentals.doc has changed
Binary file commsfwsupport/commselements/nodemessages/documentation/SGL.GT0359.057.NodeMessages_Design.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/Root Server API Reference.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/Root Server Capabilities Test Spec.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/Root Server Design Document.doc has changed
Binary file commsfwsupport/commselements/rootserver/documentation/RootServer Component Test Spec.doc has changed
Binary file commsfwsupport/commselements/testing/asyncenv_devcycle_demo/documentation/Asynchronous Environment Development Demo.doc has changed
Binary file commsfwtools/commstools/messageinterceptregister/documentation/HowToTestFallibleMessages.doc has changed
Binary file commsfwtools/commstools/messageinterceptregister/documentation/MessageInterceptorDesign.doc has changed
Binary file commsfwtools/commstools/svg/messagesequencetool.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CED_Migration_Design.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Ceddump migration Design.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Comms Dat Ref Final Documentation.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Comms Database Data Schema Description.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CommsDat API and Migration Guide.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CommsDatAPI.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/CommsData Format.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Deprecate R97_R98 QoS Parameters & PSD agent_Migration_HowTo.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/HowTo_Access_Points.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_CSD_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_Network_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_PSD_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Howto_Configure_VPN_Connections.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Mapping in the Comms Database.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/OS Versioning for the Tools2 Port of Commsdat.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/Tools2 deliverables.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Documentation/te_commsdat test spec.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/Commdb_Configuration_Editor.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/HiddenReadOnlyUpdates/ReadOnly_Hidden_Support_Architectural_Analysis.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ced/Documentation/HiddenReadOnlyUpdates/ReadOnly_Hidden_Support_Design.doc has changed
Binary file commsfwtools/preparedefaultcommsdatabase/Tools/ceddump/documents/Commdb_Configuration_Dumper.doc has changed
Binary file commsfwutils/commsbufs/Documentation/CommsBufsDesign.doc has changed
Binary file commsfwutils/commsbufs/version1/mbufmgr/Documentation/MBuf Manager Component Test Specification.doc has changed
Binary file commsfwutils/commsbufs/version1/mbufmgr/Documentation/MBuf Manager Design.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Comms Process Startup-Config Design Document.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Configurator Capabilities Test Spec.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Root Server API Reference.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Root Server Capabilities Test Spec.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/Root Server Design Document.doc has changed
Binary file commsprocess/commsrootserverconfig/Documentation/RootServer Component Test Spec.doc has changed
Binary file commsprocess/commsrootserverconfig/Te_Configurator/Documentation/SGL.GT0280.202 PREQ890 Configurator Test Specification_v1.0.doc has changed
--- a/datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/CoreProviders/src/coretiernotificationactivity.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -156,7 +156,6 @@
/*virtual*/ void CTierNotificationActivity::StartL(RPointerArray<MDataCollector>& aCollectors)
{
- CleanupResetAndDestroyPushL(aCollectors);
if(aCollectors.Count() == 0)
{
User::Leave(KErrArgument);
@@ -167,15 +166,17 @@
iCache = CTierNotificationCache::NewL();
// set up a session with each collector
- for(TInt sessionId=0 ; sessionId<aCollectors.Count() ; ++sessionId)
+ for (TInt sessionId=0 ; sessionId<aCollectors.Count() ; ++sessionId)
{
CDataCollectorSession* newCollector = CDataCollectorSession::NewL(aCollectors[sessionId], *this, sessionId );
- __ASSERT_DEBUG(newCollector, User::Panic(KSpecAssert_ESockCrPrvTNotAC, 2));
+ CleanupStack::PushL(newCollector);
iCollectorSessions.AppendL(newCollector);
- aCollectors[sessionId] = 0; // now owned by *this so don't want it to be in the cleanup path twice!
+ CleanupStack::Pop(newCollector);
+
+ // now owned by the CDataCollectorSession in iCollectorSessions so don't want it to be in the cleanup path twice!
+ aCollectors[sessionId] = 0;
}
- CleanupStack::PopAndDestroy();
// Must run session creation and start loops separately in case the initial data fetch is synchronous.
// Reasoning:
--- a/datacommsserver/esockserver/CoreProviders/src/coretiernotificationstates.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/CoreProviders/src/coretiernotificationstates.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -175,8 +175,8 @@
message_cast<TCFDataCollector::TTierDataCollectors>(iContext.iMessage);
RPointerArray<MDataCollector>* collrs = static_cast< RPointerArray<MDataCollector>*> (inMsg.iPtr);
- CleanupStack::PushL(collrs);
- CleanupResetAndDestroyPushL(*collrs);
+ CleanupStack::PushL(collrs); // We take ownership of the collector array
+ CleanupResetAndDestroyPushL(*collrs); // Note that RPointerArray<> doesn't destroy contained items at destruction so this cleanup item is needed
CTierNotificationActivity* act = static_cast<CTierNotificationActivity*>(iContext.iNodeActivity);
// my custom StartL (sets the activity going)
Binary file datacommsserver/esockserver/Documentation/BR2506migrationdocument.doc has changed
Binary file datacommsserver/esockserver/Documentation/Connection Server API Functional Spec.doc has changed
Binary file datacommsserver/esockserver/Documentation/Connection Server HowTo.doc has changed
Binary file datacommsserver/esockserver/Documentation/Connection Stack_How_To.doc has changed
Binary file datacommsserver/esockserver/Documentation/Control Plane Connection Stack(phase 1).doc has changed
Binary file datacommsserver/esockserver/Documentation/Design for Flexible Comms Stack.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESOCK Component Test Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESock_CESockIniData_Te_Ini_Test_Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESock_Design.doc has changed
Binary file datacommsserver/esockserver/Documentation/ESock_HowTo.doc has changed
Binary file datacommsserver/esockserver/Documentation/Esock_CR1039_CommsData_ Plug-in_Design_Document.doc has changed
Binary file datacommsserver/esockserver/Documentation/Esock_integration_test_specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/HOWTO install an esock protocol after market.doc has changed
Binary file datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ClientSideAPIs.doc has changed
Binary file datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ReferenceImplementation.doc has changed
Binary file datacommsserver/esockserver/Documentation/NonSeamlessBearerMobility_ServerSideAPIs.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection API for Connection Management.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection deprecated methods HOWTO.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection_API.doc has changed
Binary file datacommsserver/esockserver/Documentation/RConnection_Test_Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/RInternalSocket_TE_EintSock_Test_Specification.doc has changed
Binary file datacommsserver/esockserver/Documentation/RSubConnection_API.doc has changed
Binary file datacommsserver/esockserver/Documentation/TS_Multihoming_Test_Specification.doc has changed
--- a/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcpractivities.h Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcpractivities.h Tue Jan 26 13:09:14 2010 +0200
@@ -52,6 +52,7 @@
private:
TBool EvaluatePreference(TContext& aContext);
+
void SetHandshakingFlag();
void ClearHandshakingFlag();
@@ -78,6 +79,10 @@
DECLARE_SMELEMENT_HEADER(TNoTagOrAwaitMobilityBackwardsOnMobilityTrigger, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, CMobilityActivity::TContext)
virtual TInt TransitionTag();
DECLARE_SMELEMENT_FOOTER(TNoTagOrAwaitMobilityBackwardsOnMobilityTrigger)
+
+ DECLARE_SMELEMENT_HEADER(TRejectedOrStartMobilityHandshakeBackwards, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext)
+ virtual TInt TransitionTag();
+ DECLARE_SMELEMENT_FOOTER(TRejectedOrStartMobilityHandshakeBackwards)
DECLARE_SMELEMENT_HEADER(TClearHandshakingFlag, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
virtual void DoL();
--- a/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcprstates.h Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcprstates.h Tue Jan 26 13:09:14 2010 +0200
@@ -41,6 +41,7 @@
const TInt KStartMobilityHandshake = 10000;
const TInt KAwaitMobility = 10001;
+const TInt KRejected = 10002;
//-=========================================================
//
--- a/datacommsserver/esockserver/MobilityCoreProviders/src/mobilitymcpractivities.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/MobilityCoreProviders/src/mobilitymcpractivities.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -100,7 +100,7 @@
//first checks (TNoTagOrAwaitMobilityBlockedByErrorRecovery) if the availability has changed since it last checked
//(availability could have been reported amidst the previous handshake loop)
THROUGH_NODEACTIVITY_ENTRY(MobilityMCprStates::KStartMobilityHandshake, CMobilityActivity::TClearHandshakingFlag, CMobilityActivity::TNoTagOrAwaitMobilityBlockedByErrorRecovery)
- NODEACTIVITY_ENTRY(MobilityMCprStates::KAwaitMobility, MeshMachine::TDoNothing, CMobilityActivity::TAwaitingCurrentCarrierRejectedOrAvailabilityChange, CMobilityActivity::TNoTagOrAwaitMobilityBackwardsOnMobilityTriggerBlockedByErrorRecovery)
+ NODEACTIVITY_ENTRY(MobilityMCprStates::KAwaitMobility, MeshMachine::TDoNothing, CMobilityActivity::TAwaitingCurrentCarrierRejectedOrAvailabilityChange, CMobilityActivity::TNoTagOrAwaitMobilityBackwardsOnMobilityTriggerBlockedByErrorRecovery)
//Mobility has been triggered ((a) or (b)). Start mobility handshake (set handshaking flag and inform the client about the preferred bearer)
NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TInformMigrationAvailableAndSetHandshakingFlag, MobilityMCprStates::TAwaitingMigrationRequestedOrRejected, CMobilityActivity::TNoTagOrStartMobilityHandshakeBackwards)
@@ -112,7 +112,8 @@
NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TRequestReConnect, MCprStates::TAwaitingReConnectCompleteOrError, CMobilityActivity::TNoTagOrStartMobilityHandshakeBackwards)
//Rebinding has been successful. As far as MCPR is concerned, the mobility is finished, but the MCPR must await
//for the handshake (accept|reject) before it can offer another bearer.
- NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TInformMigrationCompleted, MobilityMCprStates::TAwaitingMigrationAcceptedOrRejected, MeshMachine::TTag<MobilityMCprStates::KStartMobilityHandshake|EBackward>)
+ NODEACTIVITY_ENTRY(KNoTag, CMobilityActivity::TInformMigrationCompleted, MobilityMCprStates::TAwaitingMigrationAcceptedOrRejected, CMobilityActivity::TRejectedOrStartMobilityHandshakeBackwards)
+ NODEACTIVITY_ENTRY(MobilityMCprStates::KRejected, CoreNetStates::TStopDataClients, CoreNetStates::TAwaitingDataClientsStopped, MeshMachine::TTag<MobilityMCprStates::KStartMobilityHandshake|NetStateMachine::EBackward>)
NODEACTIVITY_END()
}
@@ -311,6 +312,53 @@
return MobilityMCprStates::KAwaitMobility;
}
+
+DEFINE_SMELEMENT(CMobilityActivity::TRejectedOrStartMobilityHandshakeBackwards, NetStateMachine::MStateFork, MobilityMCprStates::TContext)
+TInt CMobilityActivity::TRejectedOrStartMobilityHandshakeBackwards::TransitionTag()
+ {
+ __ASSERT_DEBUG(iContext.iNodeActivity, User::Panic(KCoreMobileMCprPanic, KPanicNoActivity));
+ CMobilityActivity& activity = static_cast<CMobilityActivity&>(*iContext.iNodeActivity);
+
+ // if rejected last ap and there's no more
+ if (iContext.iMessage.IsMessage<TCFMobilityProvider::TMigrationRejected>())
+ {
+ TBool otherSP = EFalse;
+
+ // Find if there anymore available non rejected service providers
+ TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::EServProvider));
+ __ASSERT_DEBUG(iter[0], User::Panic(KCoreMobileMCprPanic, KPanicNoServiceProvider)); //A Service Provider must exist!
+ RMetaServiceProviderInterface* rejected = static_cast<RMetaServiceProviderInterface*>(iContext.Node().ServiceProvider());
+ RMetaServiceProviderInterface* candidate = NULL;
+
+ while ((candidate = static_cast<RMetaServiceProviderInterface*>(iter++)) != NULL)
+ {
+ if (candidate == rejected)
+ {
+ continue;
+ }
+
+ const TAvailabilityStatus& status = candidate->AvailabilityStatus();
+ if (!status.IsKnown())
+ {
+ continue;
+ }
+
+ if (status.Score() > activity.iAvailabilityScoreTreshold)
+ {
+ otherSP=ETrue;
+ break;
+ }
+ }
+
+ if (!otherSP)
+ {
+ return MobilityMCprStates::KRejected;
+ }
+ }
+
+ return MobilityMCprStates::KStartMobilityHandshake | NetStateMachine::EBackward;
+ }
+
DEFINE_SMELEMENT(CMobilityActivity::TSendAvailabilityRequest, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
void CMobilityActivity::TSendAvailabilityRequest::DoL()
{
--- a/datacommsserver/esockserver/core_states/ss_corepractivities.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/core_states/ss_corepractivities.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -1891,6 +1891,39 @@
EXPORT_C CStartActivity::~CStartActivity()
{
+ CMMCommsProviderBase& node(static_cast<CMMCommsProviderBase&>(iNode));
+ const TProviderInfoExt* providerInfoExt = static_cast<const TProviderInfoExt*>(node.AccessPointConfig().FindExtension(
+ STypeId::CreateSTypeId(TProviderInfoExt::EUid, TProviderInfoExt::ETypeId)));
+
+ __ASSERT_DEBUG(providerInfoExt, User::Panic(KSpecAssert_ESockCrStaCPRAC, 40));
+
+ if (Error() != KErrNone)
+ {
+ CNodeActivityBase* stopActivity = iNode.FindActivityById(ECFActivityStop);
+
+ // If the Stop activity is running we skip sending the GoneDown message. This is because the Stop
+ // activity will send GoneDown too.
+ if (!stopActivity)
+ {
+ TCFControlClient::TGoneDown goneDown(Error(), providerInfoExt->iProviderInfo.APId());
+
+ TClientIter<TDefaultClientMatchPolicy> iter = iNode.GetClientIter<TDefaultClientMatchPolicy>(
+ TClientType(TCFClientType::ECtrl), TClientType(0, TCFClientType::ELeaving));
+ RNodeInterface* ctrlClient = NULL;
+
+ while ( (ctrlClient = iter++) )
+ {
+ // Let control clients know the node has gone down, other than those that originated Start (they will be errored by ~CNodeActivityBase)...
+ if (FindOriginator(*ctrlClient) >= 0)
+ {
+ continue; // ControlClient is a Start originator
+ }
+
+ TNodeCtxId ctxId(ActivityId(), iNode.Id());
+ ctrlClient->PostMessage(ctxId, goneDown.CRef());
+ }
+ }
+ }
}
EXPORT_C MeshMachine::CNodeActivityBase* CStartActivity::NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode)
--- a/datacommsserver/esockserver/core_states/ss_coreprstates.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/core_states/ss_coreprstates.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -1204,9 +1204,10 @@
TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl));
for (TInt i = 0; iter[i]; i++)
{
- //Send TGoneUp to every Ctrl client except the originator (who would be recieving TStarted)
- if ((iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) != KErrNone)
- && iter[i] != iContext.iPeer)
+ // Send TGoneUp to every Ctrl client except the originator (who would be recieving TStarted)
+ // (activity might be the GoneUp Activity rather than the Start Activity, but then the originator
+ // would be a ServiceProvider, and so the ControlClient will not be found)
+ if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) == KErrNotFound)
{
iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), TCFControlClient::TGoneUp());
}
@@ -1291,17 +1292,22 @@
TCFControlClient::TGoneDown goneDown(stopCode, providerInfo.APId());
TClientIter<TDefaultClientMatchPolicy> iter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl));
- for (TInt i = 0; iter[i]; i++)
+ CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart);
+
+ for (TInt i = 0; iter[i]; i++)
{
- CNodeActivityBase* startActivity = iContext.Node().FindActivityById(ECFActivityStart);
-
//Send TGoneDown to every Ctrl client except
// * the originator (who would be recieving TStopped)
// * originators of the start activity (these will be errored separately)
- if (((iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) != KErrNone) ||
- (iContext.iNodeActivity == NULL && iter[i] != iContext.iPeer))
- && (startActivity == NULL || startActivity->FindOriginator(*iter[i]) != KErrNone))
+ if (iContext.iNodeActivity && iContext.iNodeActivity->FindOriginator(*iter[i]) >= 0)
+ {
+ continue; // ControlClient is a Stop originator
+ }
+
+ // So far the control client is not a Stop originator
+ if (startActivity == NULL || startActivity->FindOriginator(*iter[i]) == KErrNotFound)
{
+ // ControlClient is not a Start originator
iter[i]->PostMessage(TNodeCtxId(iContext.ActivityId(), iContext.NodeId()), goneDown);
}
}
--- a/datacommsserver/esockserver/csock/CS_CLI.CPP Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/csock/CS_CLI.CPP Tue Jan 26 13:09:14 2010 +0200
@@ -1221,7 +1221,8 @@
@param someFlags Flags which are passed through to protocol
@param aStatus On completion, KErrNone if successful, otherwise one of the system
wide error codes. Note that KErrEof indicates that the socket has been shutdown
-with option EStopOutput.
+with option EStopOutput. In the case of KSONonBlockingIO & writeFlowedoff,
+it has to return KerrWouldBlock, but it returns KErrNone for compatibiity
@param aLen Filled in with amount of data sent before completion
@capability Dependent on the type of socket so deferred to PRT */
--- a/datacommsserver/esockserver/inc/ss_nodemessages_legacy_internal.h Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/inc/ss_nodemessages_legacy_internal.h Tue Jan 26 13:09:14 2010 +0200
@@ -285,7 +285,6 @@
virtual void ProcessL(MeshMachine::TNodeContextBase& aContext);
virtual void Cancel(MeshMachine::TNodeContextBase& aContext);
- virtual TInt CheckError(MeshMachine::TNodeContextBase& aContext, TInt aError);
private:
TBool HasServiceProviderL(const Messages::TRuntimeCtxId& aRecipient);
@@ -350,7 +349,6 @@
virtual void ProcessL(MeshMachine::TNodeContextBase& aContext);
virtual void Cancel(MeshMachine::TNodeContextBase& aContext);
- virtual TInt CheckError(MeshMachine::TNodeContextBase& aContext, TInt aError);
public:
DECLARE_MVIP_CTR(TLegacyDataMonitoringNotificationRequest)
--- a/datacommsserver/esockserver/ssock/ss_api_ext.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_api_ext.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -305,6 +305,7 @@
TBool platsecResult;
platsecResult = aPolicy.CheckPolicy(process);
+ process.Close();
if (!platsecResult)
{
return KErrPermissionDenied;
--- a/datacommsserver/esockserver/ssock/ss_commsdataobject.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_commsdataobject.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -41,7 +41,7 @@
TUint interfaceId = (*iDataObject)->RequiredItfExtId();
RLegacyResponseMsg responseMsg(aContext, iMessage, iMessage.Int0());
TRAPD(err, ForwardRequestL(aContext));
- if(err == KErrNotFound)
+ if(err == KErrNotReady)
{
// We've reached the bottom of the stack, so complete the message
if ((*iDataObject)->IsProgressive())
@@ -104,7 +104,7 @@
// forward the data object down to the next node
TRAP(err, ForwardRequestL(aContext));
- if(err == KErrNotFound)
+ if(err == KErrNotReady)
{
// We've reached the bottom of the stack, so complete the message
Complete(aContext, KErrNone);
--- a/datacommsserver/esockserver/ssock/ss_connLegacy.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_connLegacy.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -353,13 +353,11 @@
void AConnectionLegacy::CompleteAllInterfaceNotificationL(TInt aError)
{
- LOG(ESockLog::Printf(KESockConnectionTag, _L8("AConnectionLegacy [this=%08x] CompleteAllInterfaceNotificationL message (%08X) with %d"), &iConnection, iAllInterfaceNotificationMessage.Handle(), aError));
-
- if(!iAllInterfaceNotificationMessage.IsNull())
+ if (!iAllInterfaceNotificationMessage.IsNull())
{
if(aError == KErrNone)
{
- if(!iNotificationQueue.IsEmpty())
+ if (!iNotificationQueue.IsEmpty())
{
TInterfaceNotification notification;
iNotificationQueue.Deque(notification);
@@ -368,12 +366,14 @@
// Write the buffer to the client
iAllInterfaceNotificationMessage.WriteL(0, buf);
+ LOG(ESockLog::Printf(KESockConnectionTag, _L8("AConnectionLegacy [this=%08x] CompleteAllInterfaceNotificationL, RMessage2::Complete (%08x) with 0"), &iConnection, iAllInterfaceNotificationMessage.Handle()));
iAllInterfaceNotificationMessage.Complete(KErrNone);
iAllInterfaceNotificationMessage = RMessage2();
}
}
else
{
+ LOG(ESockLog::Printf(KESockConnectionTag, _L8("AConnectionLegacy [this=%08x] CompleteAllInterfaceNotificationL, RMessage2::Complete (%08x) with %d"), &iConnection, iAllInterfaceNotificationMessage.Handle(), aError));
iAllInterfaceNotificationMessage.Complete(aError);
iAllInterfaceNotificationMessage = RMessage2();
}
--- a/datacommsserver/esockserver/ssock/ss_connstates.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_connstates.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -1707,15 +1707,13 @@
DEFINE_SMELEMENT(THandleRMessage2Error, NetStateMachine::MStateTransition, ConnStates::TContext)
void THandleRMessage2Error::DoL()
{
- CConnLegacyRMessage2Activity* act = static_cast<CConnLegacyRMessage2Activity*>(iContext.Activity());
-
+ CConnLegacyRMessage2Activity* act = static_cast<CConnLegacyRMessage2Activity*>(iContext.Activity());
ASSERT(act->Message().IsTypeOf(Meta::STypeId::CreateSTypeId(TCFSigLegacyRMessage2Ext::EUid, TCFSigLegacyRMessage2Ext::ETypeId)));
TInt error = static_cast<TCFSigLegacyRMessage2Ext&>(act->Message()).CheckError(iContext, act->Error());
act->SetError(error);
act->Complete(error);
}
-
DEFINE_SMELEMENT(TCancelAllLegacyRMessage2Activities, NetStateMachine::MStateTransition, TContext)
void TCancelAllLegacyRMessage2Activities::DoL()
{
--- a/datacommsserver/esockserver/ssock/ss_intsock.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_intsock.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -1195,10 +1195,19 @@
ret = KErrNoMemory;
}
}
- if(ret == KErrNone && (iOptions & KOptBlocking))
- {
- completeReq = EFalse;
- }
+ if(ret == KErrNone)
+ {
+ if(iOptions & KOptBlocking)
+ {
+ completeReq = EFalse;
+ }
+ else if(iBlockedOperations & EWriteFlowedOff)
+ {
+ //it should return KErrWouldBlock instead of KErrNone
+ //but it returns KErrNone for backward compatibility.
+ iSendData.Free();
+ }
+ }
}
}
else // !IsStream()
@@ -1317,8 +1326,12 @@
if (nwr == 0)
{
// Flow unable to accept data but not erroring
- completeReq = EFalse;
- iSendData.Assign(data);
+ // WriteFlowedOff
+ if(iOptions & KOptBlocking)
+ {
+ completeReq = EFalse;
+ iSendData.Assign(data);
+ }
}
if (iErrorOperationMask & (MSessionControlNotify::EErrorSend))
--- a/datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_nodemessages_legacy.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -122,7 +122,7 @@
}
else
{
- User::Leave(KErrNotFound);
+ User::Leave(KErrNotReady);
}
}
@@ -308,7 +308,7 @@
{
CConnection* conn = static_cast<CConnection*>(&aContext.Node());
ConnActivities::CConnLegacyRMessage2Activity* act = static_cast<ConnActivities::CConnLegacyRMessage2Activity*>(aContext.Activity());
- if (aError == KErrNotFound)
+ if (aError == KErrNotReady)
{
TPckgBuf<TStateChange> progressBuf;
progressBuf().iStage = conn->iLastProgress.iStage;
@@ -372,7 +372,7 @@
{
CConnection* conn = static_cast<CConnection*>(&aContext.Node());
ConnActivities::CConnLegacyRMessage2Activity* act = static_cast<ConnActivities::CConnLegacyRMessage2Activity*>(aContext.Activity());
- if (aError == KErrNotFound)
+ if (aError == KErrNotReady)
{
TPckgBuf<TStateChange> progressBuf;
progressBuf().iStage = conn->iLastProgressError.iStage;
@@ -646,15 +646,6 @@
// do nothing, a DataMonitoringTransferedRequest cannot be cancelled as the response is immediate
}
-TInt TLegacyDataMonitoringTransferredRequest::CheckError(MeshMachine::TNodeContextBase& /*aContext*/, TInt aError)
- {
- if (aError == KErrNotFound)
- {
- return KErrNotReady;
- }
- return aError;
- }
-
/**
Return ETrue if the node has a Service Provider, else EFalse.
@@ -779,11 +770,6 @@
}
}
-TInt TLegacyDataMonitoringNotificationRequest::CheckError(MeshMachine::TNodeContextBase& /*aContext*/, TInt aError)
- {
- return aError;
- }
-
/**
*
* TLegacyEnumerateSubConnections
@@ -890,7 +876,7 @@
// it or we hit the bottom
TRAP(ret, ForwardRequestL(aContext));
- if(ret == KErrNotFound)
+ if(ret == KErrNotReady)
{
// We've reached the bottom of the stack and control call was never serviced
User::Leave(KErrNotSupported);
--- a/datacommsserver/esockserver/ssock/ss_roles.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/ssock/ss_roles.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -143,7 +143,7 @@
}
}
- LOG(ESockLog::Printf(KESockBootingTag, _L8("CPlayer::MaybeSetPlayerShutdownComplete(), shutdownComplete = %d [#subSess=%d, numFam=%d, dataPending=%d]"),
+ LOG(ESockLog::Printf(KESockBootingTag, _L8("CPlayer::IsPlayerShutdownComplete(), shutdownComplete = %d [#subSess=%d, numFam=%d, dataPending=%d]"),
shutdownComplete, SubSessions().Count(), globals->iNumFamilies, dataThreadShutdownPending) );
if(globals->iNumFamilies)
Binary file datacommsserver/esockserver/test/TE_EsockTestSteps/Documentation/TE_EsockTestSteps_Test Specification.doc has changed
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite.mmp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite.mmp Tue Jan 26 13:09:14 2010 +0200
@@ -72,7 +72,7 @@
LIBRARY commdb.lib
LIBRARY efsrv.lib
LIBRARY ecom.lib
-LIBRARY etel.lib etelmm.lib
+LIBRARY etel.lib etelmm.lib etelpckt.lib
LIBRARY c32root.lib
LIBRARY netmeta.lib
LIBRARY esocksvr.lib
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite_captest.mmp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/group/te_EsockTestStepsSuite_captest.mmp Tue Jan 26 13:09:14 2010 +0200
@@ -74,7 +74,7 @@
LIBRARY commdb.lib
LIBRARY efsrv.lib
LIBRARY ecom.lib
-LIBRARY etel.lib etelmm.lib
+LIBRARY etel.lib etelmm.lib etelpckt.lib
LIBRARY c32root.lib
LIBRARY netmeta.lib
LIBRARY esocksvr.lib
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/ConnectionServer.TestSteps.h Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/ConnectionServer.TestSteps.h Tue Jan 26 13:09:14 2010 +0200
@@ -451,6 +451,26 @@
_LIT(KSetPppAccessPointAvailabilityStep, "SetPppAccessPointAvailabilityStep");
/**
+Class implementing CSetPacketDataAccessPointAvailabilityStep
+
+@internalComponent
+@description Enables the setting of PDP availability status on access points for simulation of availability
+*/
+class CSetPacketDataAccessPointAvailabilityStep : public CTe_EsockStepBase
+ {
+public:
+ CSetPacketDataAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest);
+ TVerdict doTestStepPreambleL();
+ TVerdict doSingleTestStep();
+ TInt ConfigureFromIni();
+
+private:
+ TBool iSetToAvailable;
+ };
+
+_LIT(KSetPacketDataAccessPointAvailabilityStep, "SetPacketDataAccessPointAvailabilityStep");
+
+/**
Class implementing CSetWifiAccessPointAvailabilityStep
@internalComponent
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/src/ConnectionServer.TestSteps.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/ConnectionServer.TestSteps.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -1756,6 +1756,160 @@
return TestStepResult();
}
+// Packet Data (PDP) specific availability simulation
+CSetPacketDataAccessPointAvailabilityStep::CSetPacketDataAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest)
+: CTe_EsockStepBase(aEsockTest)
+ {
+ SetTestStepName(KSetPppAccessPointAvailabilityStep);
+ }
+
+TVerdict CSetPacketDataAccessPointAvailabilityStep::doTestStepPreambleL()
+ {
+ SetTestStepResult(EFail);
+
+ if (iEsockTest==NULL)
+ iEsockTest = new (ELeave) CCEsockTestBase;
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+
+TInt CSetPacketDataAccessPointAvailabilityStep::ConfigureFromIni()
+ {
+ TBool found(EFalse);
+ TPtrC availState;
+ if(GetStringFromConfig(iSection, KAccessPointState, availState))
+ {
+ if (availState == KAvailable)
+ {
+ iSetToAvailable = ETrue;
+ found=ETrue;
+ }
+ else if (availState == KUnavailable)
+ {
+ iSetToAvailable = EFalse;
+ found=ETrue;
+ }
+ }
+
+ if( ! found)
+ {
+ INFO_PRINTF1(_L("Must have availability status set to Available or Unavailable."));
+ return KErrArgument;
+ }
+
+ // All ok if we got this far
+ return KErrNone;
+ }
+
+_LIT(KSimtsyName,"SIM");
+
+TVerdict CSetPacketDataAccessPointAvailabilityStep::doSingleTestStep()
+ {
+ // Fail by default
+ SetTestStepResult(EFail);
+
+ // Action 1- RTelServer::Connect
+ RTelServer telServer;
+ TInt ret = telServer.Connect();
+ if (ret!=KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to connect to telephony server"));
+ }
+ else
+ {
+ // Action 2- RTelServer::LoadPhoneModule
+ ret=telServer.LoadPhoneModule(KSimtsyName);
+ if (ret!=KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to load phone module"));
+ }
+ else
+ {
+ // Action 3- RPhone::Open
+ RPhone phone;
+ ret=phone.Open(telServer,KPhoneName) ;
+ if (ret!=KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to open phone module"));
+ }
+ else
+ {
+ // Action 4- RPhone::Initialise
+ ret=phone.Initialise();
+ if (ret!=KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to initialise the phone"));
+ }
+ else
+ {
+ // Action 5- RPacketService::Open
+ RPacketService packetService;
+ ret = packetService.Open(phone);
+ if (ret!=KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to initialise the packet service"));
+ }
+ else
+ {
+ // Action 6- RPacketService::NotifyStatusChange
+ TRequestStatus notifyStatus;
+ RPacketService::TStatus pktStatus;
+ packetService.NotifyStatusChange(notifyStatus,pktStatus);
+
+ // Action 7- RPacketService::Attach/Detach
+ TRequestStatus status;
+ if(iSetToAvailable)
+ {
+ packetService.Attach(status);
+ }
+ else
+ {
+ packetService.Detach(status);
+ }
+ User::WaitForRequest(status);
+ User::WaitForRequest(notifyStatus);
+
+ if(status.Int() != KErrNone )
+ {
+ INFO_PRINTF1(_L("Failed to attach/detach the packet service"));
+ }
+ else if( notifyStatus.Int() != KErrNone )
+ {
+ INFO_PRINTF1(_L("Failed to receive notification of packet service attach/detach"));
+ }
+ else
+ {
+ // Success at last!!!
+ SetTestStepResult(EPass);
+ }
+
+ // now clean up:
+
+ // Action 5- RPacketService::Open
+ packetService.Close();
+ }
+ // Action 4- RPhone::Initialise
+ // don't need to "un-Initialise" phone
+ }
+ // Action 3- RPhone::Open
+ phone.Close();
+ }
+ // Action 2- RTelServer::LoadPhoneModule
+ telServer.UnloadPhoneModule(KSimtsyName);
+ }
+ // Action 1- RTelServer::Connect
+ telServer.Close();
+ }
+ // There! CleanupStack ShmeanupStack.
+ User::LeaveIfError(ret);
+
+ return TestStepResult();
+ }
+
+
+
// wifi specific availability simulation
// Requires the "MockupWifiHardware" emulation mechanism to be enabled on udeb
CSetWifiAccessPointAvailabilityStep::CSetWifiAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest)
--- a/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -391,7 +391,8 @@
NEW_ESOCK_TESTSTEP(CancelMBMSNtfnStep)
// Availability control
NEW_ESOCK_TESTSTEP(SetAccessPointAvailabilityStep)
- NEW_ESOCK_TESTSTEP(SetPppAccessPointAvailabilityStep)
+ NEW_ESOCK_TESTSTEP(SetPppAccessPointAvailabilityStep)
+ NEW_ESOCK_TESTSTEP(SetPacketDataAccessPointAvailabilityStep)
NEW_ESOCK_TESTSTEP(SetWifiAccessPointAvailabilityStep)
NEW_ESOCK_TESTSTEP(EnumerateConnectionsStep)
--- a/datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/BearerMobility_001.ced.cfg Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/configs/Mobility/BearerMobility_001.ced.cfg Tue Jan 26 13:09:14 2010 +0200
@@ -310,6 +310,77 @@
FIELD_COUNT=71
END_ADD
+ADD_SECTION
+# COMMDB_ID = 5
+ Name=Dummy timeout if orphan1
+ IfName=dummynif
+ PortName=COMM::1
+ TSYName=MM
+ CSYName=ECUART
+ LastSocketActivityTimeout=-1
+ LastSessionClosedTimeout=10
+ LastSocketClosedTimeout=-1
+ DataBits=8
+ StopBits=1
+ Parity=NONE
+ Rate=115200
+ Handshaking=0
+ SpecialRate=0
+ XonChar=0
+ XoffChar=0
+ FaxClassPref=AUTO
+ SpeakerPref=NEVER
+ SpeakerVolPref=QUIET
+ ModemInitString=AT
+ DataInitString=AT
+ FaxInitString=AT
+ DialPauseLength=S8=
+ SpeakerVolContorlLow=L0
+ SpeakerVolControlMedium=L1
+ SpeakerVolControlHigh=L2
+ SpeakerAlwaysOff=M0
+ SpeakerOnUntilCarrier=M1
+ SpeakerAlwaysOn=M2
+ SpeakerOnAfterUntilCarrier=M3
+ DialToneWaitModifier=W
+ CallProgress1=X1
+ CallProgress2=X2
+ CallProgress3=X3
+ CallProgress4=X4
+ EchoOff=E0
+ VerboseText=V1
+ QuietOff=Q0
+ QuietOn=Q1
+ DialCommandStateModifier=;
+ OnLine=O
+ ResetConfiguration=Z
+ ReturnToFactoryDefs=&F
+ DCDOnDuringLink=&C1
+ DTRHangUp=&D2
+ DSRAlwaysOn=&S0
+ RTSCTSHandshake=&K3
+ XonXoffHandshake=&K4
+ EscapeCharacter=+
+ EscapeGuardPeriod=S12
+ NoDialTone=NO DIAL TONE
+ Busy=BUSY
+ NoAnswer=NO ANSWER
+ Carrier=CARRIER
+ Connect=CONNECT
+ CompressionClass5=COMPRESSION:CLASS 5
+ CompressionV42bis=COMPRESSION:V.42 bis
+ CompressionNone=COMPRESSION:NONE
+ ProtocolLAPD=PROTOCOL:LAPD
+ ProtocolALT=PROTOCOL:ALT
+ ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+ ProtocolNone=PROTOCOL:NONE
+ MessageValidityPeriod=0
+ MessageDeliveryReport=TRUE
+ MinimumSignalLevel=0
+ Agent=NULLAGT.agt
+ FIELD_COUNT=66
+END_ADD
+
############################################################
## LANBearer
##
@@ -629,34 +700,32 @@
ADD_SECTION
# COMMDB_ID = 7
- Id=20
- Name=IPProtoMappedFromIAP1
- Tier=Link.TierTable.271064560
- MCpr=MCprTable.2
+ Id=7
+ Name=dummynif2MappedFromIAP7
+ Tier=Link.TierTable.271064565
+ MCpr=MCprTable.8
AccessPointSelectionPolicy=0
- Cpr=CprTable.2
- CprConfig=1
- SCpr=SCprTable.2
- Protocol=ProtocolTable.2
+ Cpr=CprTable.3
+ CprConfig=7
+ SCpr=SCprTable.3
+ Protocol=ProtocolTable.8
AppSID=0
- CustomSelectionPolicy=1
- FIELD_COUNT=11
+ FIELD_COUNT=10
END_ADD
ADD_SECTION
# COMMDB_ID = 8
- Id=21
- Name=IPProtoMappedFromIAP2
- Tier=Link.TierTable.271064560
- MCpr=MCprTable.2
+ Id=8
+ Name=dummynif2MappedFromIAP8
+ Tier=Link.TierTable.271064565
+ MCpr=MCprTable.8
AccessPointSelectionPolicy=0
- Cpr=CprTable.2
- CprConfig=2
- SCpr=SCprTable.2
- Protocol=ProtocolTable.2
+ Cpr=CprTable.3
+ CprConfig=8
+ SCpr=SCprTable.3
+ Protocol=ProtocolTable.8
AppSID=0
- CustomSelectionPolicy=2
- FIELD_COUNT=11
+ FIELD_COUNT=10
END_ADD
ADD_SECTION
@@ -828,6 +897,99 @@
FIELD_COUNT=10
END_ADD
+ADD_SECTION
+# COMMDB_ID = 20
+ Id=58
+ Name=SNAP58
+ Tier=Link.TierTable.2048
+ MCpr=MCprTable.1
+ AccessPointSelectionPolicy=APPrioritySelectionPolicyTable.8
+ Cpr=CprTable.1
+ CprConfig=0
+ SCpr=SCprTable.7
+ Protocol=ProtocolTable.1
+ AppSID=0
+ FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 21
+ Id=59
+ Name=IPProtoMappedFromIAP7
+ Tier=Link.TierTable.271064560
+ MCpr=MCprTable.2
+ AccessPointSelectionPolicy=0
+ Cpr=CprTable.2
+ CprConfig=7
+ SCpr=SCprTable.2
+ Protocol=ProtocolTable.2
+ AppSID=0
+ CustomSelectionPolicy=7
+ FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 22
+ Id=61
+ Name=IPProtoMappedFromIAP8
+ Tier=Link.TierTable.271064560
+ MCpr=MCprTable.2
+ AccessPointSelectionPolicy=0
+ Cpr=CprTable.2
+ CprConfig=8
+ SCpr=SCprTable.2
+ Protocol=ProtocolTable.2
+ AppSID=0
+ CustomSelectionPolicy=8
+ FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 23
+ Id=62
+ Name=SNAP62
+ Tier=Link.TierTable.2048
+ MCpr=MCprTable.1
+ AccessPointSelectionPolicy=APPrioritySelectionPolicyTable.9
+ Cpr=CprTable.1
+ CprConfig=0
+ SCpr=SCprTable.7
+ Protocol=ProtocolTable.1
+ AppSID=0
+ FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 24
+ Id=20
+ Name=IPProtoMappedFromIAP1
+ Tier=Link.TierTable.271064560
+ MCpr=MCprTable.2
+ AccessPointSelectionPolicy=0
+ Cpr=CprTable.2
+ CprConfig=1
+ SCpr=SCprTable.2
+ Protocol=ProtocolTable.2
+ AppSID=0
+ CustomSelectionPolicy=1
+ FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 25
+ Id=21
+ Name=IPProtoMappedFromIAP2
+ Tier=Link.TierTable.271064560
+ MCpr=MCprTable.2
+ AccessPointSelectionPolicy=0
+ Cpr=CprTable.2
+ CprConfig=2
+ SCpr=SCprTable.2
+ Protocol=ProtocolTable.2
+ AppSID=0
+ CustomSelectionPolicy=2
+ FIELD_COUNT=11
+END_ADD
############################################################
## OutgoingGPRS
@@ -955,6 +1117,33 @@
END_ADD
+ADD_SECTION
+# COMMDB_ID = 7
+ Name=cdgdummynifnosessiontimeout
+ IAPServiceType=DialOutISP
+ IAPService=2
+ IAPBearerType=ModemBearer
+ IAPBearer=5
+ IAPNetwork=1
+ IAPNetworkWeighting=0
+ Location=2
+ FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+ Name=cdgdummynifnosessiontimeout2
+ IAPServiceType=DialOutISP
+ IAPService=2
+ IAPBearerType=ModemBearer
+ IAPBearer=5
+ IAPNetwork=1
+ IAPNetworkWeighting=0
+ Location=2
+ FIELD_COUNT=8
+END_ADD
+
+
############################################################
## APPrioritySelectionPolicyTable
@@ -1023,6 +1212,25 @@
FIELD_COUNT=5
END_ADD
+ADD_SECTION
+# COMMDB_ID = 8
+ Name=SelectionPolicy8
+ AP1=Link.AccessPointTable.59
+ AP2=Link.AccessPointTable.61
+ APCOUNT=2
+ FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+ Name=SelectionPolicy9
+ AP1=Link.AccessPointTable.59
+ AP2=Link.AccessPointTable.61
+ AP3=Link.AccessPointTable.23
+ APCOUNT=3
+ FIELD_COUNT=5
+END_ADD
+
############################################################
## TierTable
##
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/GT0429 - PDP Contention Management Test Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/SGL.GT0253.202 Non-Seamless Bearer Mobility - Test Spec.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/SGL.GT0253.220 Data Monitoring - Test Specification.doc has changed
Binary file datacommsserver/esockserver/test/TE_RConnection/documentation/TE_RConnection_Test_Specification.doc has changed
--- a/datacommsserver/esockserver/test/TE_RConnection/group/bld.inf Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/group/bld.inf Tue Jan 26 13:09:14 2010 +0200
@@ -267,6 +267,8 @@
../scripts/Mobility/Mobility_761402.script z:/testdata/scripts/bearermobility/mobility_761402.script
../scripts/Mobility/Mobility_761403.script z:/testdata/scripts/bearermobility/mobility_761403.script
+../scripts/Mobility/Mobility_761404.script z:/testdata/scripts/bearermobility/mobility_761404.script
+../scripts/Mobility/Mobility_761405.script z:/testdata/scripts/bearermobility/mobility_761405.script
../scripts/Mobility/Mobility_761406.script z:/testdata/scripts/bearermobility/mobility_761406.script
../scripts/Mobility/Mobility_780100.script z:/testdata/scripts/bearermobility/mobility_780100.script
../scripts/Mobility/Mobility_780110.script z:/testdata/scripts/bearermobility/mobility_780110.script
--- a/datacommsserver/esockserver/test/TE_RConnection/group/te_BearerMobilityTestSuite.mmp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/group/te_BearerMobilityTestSuite.mmp Tue Jan 26 13:09:14 2010 +0200
@@ -41,6 +41,8 @@
LIBRARY testexecuteutils.lib
LIBRARY testexecutelogclient.lib
LIBRARY ecom.lib
+LIBRARY esock_api_ext.lib
+LIBRARY insock.lib
START WINS
BASEADDRESS 0x59100000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_761404.script Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,58 @@
+//
+// Copyright (c) 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:
+//
+//! @file
+//! @SYMTestSuiteName NET-BEARERMOBILITY
+//! @SYMScriptTestEnvironment Standard Symbian HRP or emulator environment
+
+// Load the test suite
+LOAD_SUITE te_BearerMobilityTestSuite
+
+// Set up the comms database and start esock in preparation for the test
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+CED -i z:\testdata\configs\BearerMobility\BearerMobility_001.ced.cfg c:\BearerMobility_001.ced.cfg.log
+RUN_SCRIPT z:\TestData\scripts\te_esock_test_loadesock.script
+
+
+START_TESTCASE COMINF-ESOCK-RConnection-Mobility-3704
+//! @SYMTestCaseID COMINF-ESOCK-RConnection-Mobility-3704
+//!@SYMTestCaseDesc Test that rejecting a bearer doesn't hold it open
+//!@SYMPREQ PREQ1060
+//!@SYMAPI
+//Mobility
+//RCommsMobilityApiExt
+//!@SYMTestPriority Critical
+//!@SYMTestActions
+// Bring up a snap with two bearers, both on.
+// Kill the top priority.
+// Accept the migration.
+// Reject the new carrier.
+// Verify that the new carrier has gone away.
+// The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify.
+//
+//!@SYMTestType CIT
+//!@SYMTestExpectedResults All progresses are as expected
+
+RUN_TEST_STEP 100 te_BearerMobilityTestSuite NET_BMOBILITY_761404
+END_TESTCASE COMINF-ESOCK-RConnection-Mobility-3704
+
+// Clean up
+RUN_SCRIPT Z:\TestData\Scripts\te_esock_test_stopallinterfaces.script
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+
+PRINT Completed NET_BMOBILITY_761404
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_RConnection/scripts/Mobility/Mobility_761405.script Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,59 @@
+//
+// Copyright (c) 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:
+//
+//! @file
+//! @SYMTestSuiteName NET-BEARERMOBILITY
+//! @SYMScriptTestEnvironment Standard Symbian HRP or emulator environment
+
+// Load the test suite
+LOAD_SUITE te_BearerMobilityTestSuite
+
+// Set up the comms database and start esock in preparation for the test
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+CED -i z:\testdata\configs\BearerMobility\BearerMobility_001.ced.cfg c:\BearerMobility_001.ced.cfg.log
+RUN_SCRIPT z:\TestData\scripts\te_esock_test_loadesock.script
+
+
+START_TESTCASE COMINF-ESOCK-RConnection-Mobility-3705
+//! @SYMTestCaseID COMINF-ESOCK-RConnection-Mobility-3705
+//!@SYMTestCaseDesc Test that rejecting a bearer doesn't hold it open, yet we don't get KLinkLayerClosed by mistake
+//!@SYMPREQ PREQ1060
+//!@SYMAPI
+//Mobility
+//RCommsMobilityApiExt
+//!@SYMTestPriority Critical
+//!@SYMTestActions
+// Bring up a snap with three bearers, all on.
+// Kill the top priority.
+// Accept the migration.
+// Reject the new carrier.
+// Verify that the new carrier has gone away.
+// Get offered the third priority.
+// Accept third priority
+// Verify KLinkLayerClosed is never received.
+//
+//!@SYMTestType CIT
+//!@SYMTestExpectedResults All progresses are as expected
+RUN_TEST_STEP 100 te_BearerMobilityTestSuite NET_BMOBILITY_761405
+END_TESTCASE COMINF-ESOCK-RConnection-Mobility-3705
+
+// Clean up
+RUN_SCRIPT Z:\TestData\Scripts\te_esock_test_stopallinterfaces.script
+RUN_SCRIPT Z:\TestData\scripts\te_esock_test_unloadesockForced.script
+
+PRINT Completed NET_BMOBILITY_761405
+
+
+
--- a/datacommsserver/esockserver/test/TE_RConnection/scripts/te_RConnection_Mobility.script Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/scripts/te_RConnection_Mobility.script Tue Jan 26 13:09:14 2010 +0200
@@ -56,6 +56,8 @@
RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761402.script
RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761403.script
+RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761404.script
+RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761405.script
RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761406.script
RUN_SCRIPT z:\testdata\scripts\BearerMobility\Mobility_761500.script
--- a/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -22,8 +22,10 @@
*/
#include "te_BearerMobilityTestSuite.h"
+#include <es_enum_internal.h>
#include <ecom/ecom.h>
-
+#include <comms-infras/mobilitymessagesecom.h>
+#include <dummynifvar.h>
using namespace ESock;
@@ -311,7 +313,449 @@
testStep = new CBearerMobilityTestStep_761402();
else if(aStepName.Compare(_L("NET_BMOBILITY_761403")) == 0)
testStep = new CBearerMobilityTestStep_761403();
+ else if(aStepName.Compare(_L("NET_BMOBILITY_761404")) == 0)
+ testStep = new CBearerMobilityTestStep_761404();
+ else if(aStepName.Compare(_L("NET_BMOBILITY_761405")) == 0)
+ testStep = new CBearerMobilityTestStep_761405();
return testStep;
}
+const TInt KBufferLength = 512;
+const TInt KEchoPortNum = 8;
+TInt RequestInterfaceDownL(RConnection& conn, RSocketServ& ss)
+/**
+ * Sends a special packet to the dummy nif telling it to signal that the interface is down
+ * @param conn The connection to signal
+ * @param ss The socket server that the connection is within
+ * @return system wide error code
+ */
+{
+ TRequestStatus status;
+
+ TBuf8<KBufferLength> buffer;
+
+ RSocket sock;
+ TInetAddr dest;
+
+ User::LeaveIfError(sock.Open(ss, KAfInet, KSockDatagram, KProtocolInetUdp, conn));
+ CleanupClosePushL(sock);
+
+ User::LeaveIfError(sock.SetOpt(KSoReuseAddr, KSolInetIp, 1));
+ User::LeaveIfError(sock.SetLocalPort(KEchoPortNum));
+
+ dest.SetAddress(KDummyNifLocalAddressBase + 4);
+ dest.SetPort(KDummyNifCmdPort);
+
+ buffer.SetMax();
+ buffer.FillZ();
+ buffer[0] = (TUint8) KForceDisconnect;
+
+ sock.SendTo(buffer, dest, 0, status);
+ User::WaitForRequest(status);
+ User::LeaveIfError(status.Int());
+
+ buffer.Zero();
+ // I expect some sort of response
+ // this fails - possibly ok as the interface might have gone already??
+ //sock.RecvFrom(buffer, dest, 0, status);
+ //User::WaitForRequest(status);
+ //TESTEL(KErrNone == status.Int(), status.Int());
+
+ CleanupStack::PopAndDestroy(&sock);
+
+ return KErrNone;
+}
+
+/**
+ Bring up a snap with two bearers, both on.
+ Kill the top priority.
+ Accept the migration.
+ Reject the new carrier.
+ Verify that the new carrier has gone away.
+ The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify.
+
+ This test verifies DEF143172
+*/
+enum TVerdict CBearerMobilityTestStep_761404::doTestStepL()
+ {
+ const TInt KTestSnap = 20;
+ const TInt KPriority1BearerAP = 7;
+ const TInt KPriority2BearerAP = 8;
+
+ TInt error;
+ TInterfaceNotificationBuf info1;
+ TNifProgress progress;
+ TNifProgressBuf progbuf(progress);
+ TBuf8<KNotificationEventMaxSize> eventnotbuf;
+ TRequestStatus status1, status2, status3;
+
+ RSocketServ ss;
+ RConnection connS, connAIN;
+ RCommsMobilityApiExt mobility;
+ TConnSnapPref p;
+ p.SetSnap(KTestSnap);
+
+ INFO_PRINTF1(_L("Description: "));
+ INFO_PRINTF1(_L("Bring up a snap with two bearers, both on."));
+ INFO_PRINTF1(_L("Kill the top priority."));
+ INFO_PRINTF1(_L("Accept the migration."));
+ INFO_PRINTF1(_L("Reject the new carrier."));
+ INFO_PRINTF1(_L("Verify that the new carrier has goes away."));
+ INFO_PRINTF1(_L("The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify."));
+ INFO_PRINTF1(_L("============================================================================="));
+
+ // Set both bearer to be up
+ RProperty a1;
+ error = a1.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+ if((error == KErrAlreadyExists) || (error == KErrNone))
+ {
+ error = a1.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+ ASSERT(error == KErrNone);
+
+ a1.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+ }
+
+ RProperty a2;
+ error = a2.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+ if((error == KErrAlreadyExists) || (error == KErrNone))
+ {
+ error = a2.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+ ASSERT(error == KErrNone);
+
+ a2.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+ }
+
+ // Open session and subsessions
+ User::LeaveIfError(ss.Connect());
+ CleanupClosePushL(ss);
+
+ User::LeaveIfError(connAIN.Open(ss));
+ CleanupClosePushL(connAIN);
+
+ User::LeaveIfError(connS.Open(ss));
+ CleanupClosePushL(connS);
+
+ // Register for notification of connections going up/down
+ INFO_PRINTF1(_L("Register for notification of connections going up/down"));
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // Start the connection
+ INFO_PRINTF2(_L("Start connection (%d)"), p.Snap());
+ User::LeaveIfError(connS.Start(p));
+
+ // Check all interface notification
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 0);
+
+ // Register for notification again
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // Check the current progress
+ error = connS.Progress(progress);
+ INFO_PRINTF3(_L("Current progress iStage(%d) iError(%d)"), progress.iStage, progress.iError);
+ TESTL(error == KErrNone);
+ TESTL(progress.iStage == KLinkLayerOpen && progress.iError == KErrNone);
+
+ // open mobility
+ INFO_PRINTF1(_L("Open mobility on connection"));
+ error = mobility.Open(connS);
+ TESTL(error == KErrNone);
+ CleanupClosePushL(mobility);
+
+ // register for mobility notification
+ eventnotbuf.Zero();
+ INFO_PRINTF1(_L("Register for notification"));
+ mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+
+ // Turn first priority off
+ INFO_PRINTF1(_L("Turn off highest priority bearer"));
+ a1.Set(ESock::TAvailabilityStatus::EMinAvailabilityScore);
+ RequestInterfaceDownL(connS, ss);
+
+ // wait for all interface notification to report bearer down
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 1);
+
+ // register for all interface notification again
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // wait for mobility notification
+ User::WaitForRequest(status2);
+ CCommsApiExtRespMsg * msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+ CleanupStack::PushL(msg);
+
+ ESock::CPreferredCarrierAvailable* pca = static_cast<ESock::CPreferredCarrierAvailable*>(msg);
+ INFO_PRINTF3(_L("Preferred carrier available NewAP(%d) OldAP(%d)"), pca->NewAPInfo().AccessPoint(), pca->OldAPInfo().AccessPoint());
+ TESTL(KPriority2BearerAP == pca->NewAPInfo().AccessPoint() && KPriority1BearerAP == pca->OldAPInfo().AccessPoint());
+
+ // register for mobility and migrate
+ mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+ INFO_PRINTF1(_L("Migrate to preferred carrier"));
+ mobility.MigrateToPreferredCarrier();
+
+ // check that the expected bearer has come up
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTEL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 0, KErrCorrupt);
+
+ // register for it again
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // register for progress notification, for KLinkLayerClosed.
+ connS.ProgressNotification(progbuf, status3, KLinkLayerClosed);
+
+ // wait for new carrier active
+ User::WaitForRequest(status2);
+
+ CleanupStack::PopAndDestroy(msg);
+ // verify the new carrier is as expected and then reject it
+ msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+ CleanupStack::PushL(msg);
+ ESock::CNewCarrierActive* nca = static_cast<ESock::CNewCarrierActive*>(msg);
+ INFO_PRINTF2(_L("NewCarrierActive NewAP(%d)"), nca->NewAPInfo().AccessPoint());
+ TESTL(nca->NewAPInfo().AccessPoint() == KPriority2BearerAP);
+ CleanupStack::PopAndDestroy(msg);
+
+ INFO_PRINTF1(_L("Reject new carrier"));
+ mobility.NewCarrierRejected();
+
+ // wait for all interface notification to tell us connection has gone down.
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 1);
+
+ User::WaitForRequest(status3);
+ INFO_PRINTF3(_L("Progress notification received iStage(%d) iError(%d)"), progbuf().iStage, progbuf().iError);
+ TESTL(progbuf().iStage == KLinkLayerClosed);
+
+ CleanupStack::PopAndDestroy(&mobility);
+ CleanupStack::PopAndDestroy(&connS);
+ CleanupStack::PopAndDestroy(&connAIN);
+ CleanupStack::PopAndDestroy(&ss);
+
+ return EPass;
+ }
+
+/**
+ Bring up a snap with three bearers, all on.
+ Kill the top priority.
+ Accept the migration.
+ Reject the new carrier.
+ Verify that the new carrier has gone away.
+ Get offered the third priority.
+ Accept third priority
+ Verify KLinkLayerClosed is never received.
+
+ This test verifies DEF143172
+*/
+enum TVerdict CBearerMobilityTestStep_761405::doTestStepL()
+ {
+ const TInt KTestSnap = 23;
+ const TInt KPriority1BearerAP = 7;
+ const TInt KPriority2BearerAP = 8;
+ const TInt KPriority3BearerAP = 4;
+
+ TInt error;
+ TInterfaceNotificationBuf info1;
+ TNifProgress progress;
+ TNifProgressBuf progbuf(progress);
+ TBuf8<KNotificationEventMaxSize> eventnotbuf;
+ TRequestStatus status1, status2, status3;
+
+ RSocketServ ss;
+ RConnection connS, connAIN;
+ RCommsMobilityApiExt mobility;
+ TConnSnapPref p;
+ p.SetSnap(KTestSnap);
+
+ INFO_PRINTF1(_L("Description: "));
+ INFO_PRINTF1(_L("Bring up a snap with three bearers, all on."));
+ INFO_PRINTF1(_L("Kill the top priority."));
+ INFO_PRINTF1(_L("Accept the migration."));
+ INFO_PRINTF1(_L("Reject the new carrier."));
+ INFO_PRINTF1(_L("Verify that the new carrier has goes away."));
+ INFO_PRINTF1(_L("Accept the migration to the third priority."));
+ INFO_PRINTF1(_L("Accept the new carrier."));
+ INFO_PRINTF1(_L("The new carrier should go away because of the short idle timer. The bearers in this test have only short idle timer to verify."));
+ INFO_PRINTF1(_L("============================================================================="));
+
+ // Set both bearer to be up
+ RProperty a1;
+ error = a1.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+ if((error == KErrAlreadyExists) || (error == KErrNone))
+ {
+ error = a1.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+ ASSERT(error == KErrNone);
+
+ a1.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+ }
+
+ RProperty a2;
+ error = a2.Define(KAvailabilityTestingPubSubUid, KPriority1BearerAP, RProperty::EInt);
+ if((error == KErrAlreadyExists) || (error == KErrNone))
+ {
+ error = a2.Attach(KAvailabilityTestingPubSubUid, KPriority1BearerAP);
+ ASSERT(error == KErrNone);
+
+ a2.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+ }
+
+ RProperty a3;
+ error = a3.Define(KAvailabilityTestingPubSubUid, KPriority3BearerAP, RProperty::EInt);
+ if((error == KErrAlreadyExists) || (error == KErrNone))
+ {
+ error = a3.Attach(KAvailabilityTestingPubSubUid, KPriority3BearerAP);
+ ASSERT(error == KErrNone);
+
+ a3.Set(ESock::TAvailabilityStatus::EMaxAvailabilityScore);
+ }
+
+ // Open session and subsessions
+ User::LeaveIfError(ss.Connect());
+ CleanupClosePushL(ss);
+
+ User::LeaveIfError(connAIN.Open(ss));
+ CleanupClosePushL(connAIN);
+
+ User::LeaveIfError(connS.Open(ss));
+ CleanupClosePushL(connS);
+
+ // Register for notification of connections going up/down
+ INFO_PRINTF1(_L("Register for notification of connections going up/down"));
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // Start the connection
+ INFO_PRINTF2(_L("Start connection (%d)"), p.Snap());
+ User::LeaveIfError(connS.Start(p));
+
+ // Check all interface notification
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 0);
+
+ // Register for notification again
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // Check the current progress
+ error = connS.Progress(progress);
+ INFO_PRINTF3(_L("Current progress iStage(%d) iError(%d)"), progress.iStage, progress.iError);
+ TESTL(error == KErrNone);
+ TESTL(progress.iStage == KLinkLayerOpen && progress.iError == KErrNone);
+
+ // open mobility
+ INFO_PRINTF1(_L("Open mobility on connection"));
+ error = mobility.Open(connS);
+ TESTL(error == KErrNone);
+ CleanupClosePushL(mobility);
+
+ // register for mobility notification
+ eventnotbuf.Zero();
+ INFO_PRINTF1(_L("Register for notification"));
+ mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+
+ // Turn first priority off
+ INFO_PRINTF1(_L("Turn off highest priority bearer"));
+ a1.Set(ESock::TAvailabilityStatus::EMinAvailabilityScore);
+ RequestInterfaceDownL(connS, ss);
+
+ // wait for all interface notification to report bearer down
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTL(info1().iConnectionInfo.iIapId == KPriority1BearerAP && info1().iState == 1);
+
+ // register for all interface notification again
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // wait for mobility notification
+ User::WaitForRequest(status2);
+ CCommsApiExtRespMsg * msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+ CleanupStack::PushL(msg);
+
+ ESock::CPreferredCarrierAvailable* pca = static_cast<ESock::CPreferredCarrierAvailable*>(msg);
+ INFO_PRINTF3(_L("Preferred carrier available NewAP(%d) OldAP(%d)"), pca->NewAPInfo().AccessPoint(), pca->OldAPInfo().AccessPoint());
+ TESTL(KPriority2BearerAP == pca->NewAPInfo().AccessPoint() && KPriority1BearerAP == pca->OldAPInfo().AccessPoint());
+
+ // register for mobility and migrate
+ mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+ INFO_PRINTF1(_L("Migrate to preferred carrier"));
+ mobility.MigrateToPreferredCarrier();
+
+ // check that the expected bearer has come up
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTEL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 0, KErrCorrupt);
+
+ // register for it again
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // register for progress notification, for KLinkLayerClosed.
+ connS.ProgressNotification(progbuf, status3, KLinkLayerClosed);
+
+ // wait for new carrier active
+ User::WaitForRequest(status2);
+
+ CleanupStack::PopAndDestroy(msg);
+ // verify the new carrier is as expected and then reject it
+ msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+ CleanupStack::PushL(msg);
+ ESock::CNewCarrierActive* nca = static_cast<ESock::CNewCarrierActive*>(msg);
+ INFO_PRINTF2(_L("NewCarrierActive NewAP(%d)"), nca->NewAPInfo().AccessPoint());
+ TESTL(nca->NewAPInfo().AccessPoint() == KPriority2BearerAP);
+ CleanupStack::PopAndDestroy(msg);
+
+ mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+ INFO_PRINTF1(_L("Reject new carrier"));
+ mobility.NewCarrierRejected();
+
+ // wait for mobility notification
+ User::WaitForRequest(status2);
+ msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+ CleanupStack::PushL(msg);
+
+ pca = static_cast<ESock::CPreferredCarrierAvailable*>(msg);
+ INFO_PRINTF3(_L("Preferred carrier available NewAP(%d) OldAP(%d)"), pca->NewAPInfo().AccessPoint(), pca->OldAPInfo().AccessPoint());
+ TESTL(KPriority3BearerAP == pca->NewAPInfo().AccessPoint() && KPriority2BearerAP == pca->OldAPInfo().AccessPoint());
+
+ // register for mobility and migrate
+ mobility.RegisterForMobilityNotification(eventnotbuf, status2);
+ INFO_PRINTF1(_L("Migrate to preferred carrier"));
+ mobility.MigrateToPreferredCarrier();
+
+ // check that the expected bearer has come up
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTL(info1().iConnectionInfo.iIapId == KPriority3BearerAP && info1().iState == 0);
+
+ connAIN.AllInterfaceNotification(info1, status1);
+
+ // wait for all interface notification to tell us connection has gone down.
+ User::WaitForRequest(status1);
+ INFO_PRINTF3(_L("Interface changed IAP (%d) is in state (%d)"), info1().iConnectionInfo.iIapId, info1().iState);
+ TESTL(info1().iConnectionInfo.iIapId == KPriority2BearerAP && info1().iState == 1);
+
+ CleanupStack::PopAndDestroy(msg);
+ // verify the new carrier is as expected and then reject it
+ msg = CCommsApiExtRespMsg::NewL(eventnotbuf);
+ CleanupStack::PushL(msg);
+ nca = static_cast<ESock::CNewCarrierActive*>(msg);
+ INFO_PRINTF2(_L("NewCarrierActive NewAP(%d)"), nca->NewAPInfo().AccessPoint());
+ TESTL(nca->NewAPInfo().AccessPoint() == KPriority3BearerAP);
+ CleanupStack::PopAndDestroy(msg);
+
+ INFO_PRINTF1(_L("Accept migration"));
+ mobility.NewCarrierAccepted();
+
+ // Ensure we're never got KLinkLayerClosed
+ TESTL(status3.Int() == KRequestPending);
+ connS.CancelProgressNotification();
+
+ CleanupStack::PopAndDestroy(&mobility);
+ CleanupStack::PopAndDestroy(&connS);
+ CleanupStack::PopAndDestroy(&connAIN);
+ CleanupStack::PopAndDestroy(&ss);
+
+ return EPass;
+ }
--- a/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.h Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnection/src/te_BearerMobilityTestSuite.h Tue Jan 26 13:09:14 2010 +0200
@@ -101,6 +101,19 @@
enum TVerdict doTestStepL(void);
};
+class CBearerMobilityTestStep_761404 : public CTestStep
+ {
+public:
+ virtual ~CBearerMobilityTestStep_761404() {}
+ enum TVerdict doTestStepL(void);
+ };
+
+class CBearerMobilityTestStep_761405 : public CTestStep
+ {
+public:
+ virtual ~CBearerMobilityTestStep_761405() {}
+ enum TVerdict doTestStepL(void);
+ };
#endif /* TE_BEARERMOBILITYTESTSUITE_H */
Binary file datacommsserver/esockserver/test/TE_RConnectionServ/documentation/RConnectionServ API test specification.doc has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/config/def143083.xml Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,1249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+ which accompanies this distribution, and is available
+ at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+
+ Initial Contributors:
+ Nokia Corporation - initial contribution.
+
+ Contributors:
+
+ Description:
+ CommDB Settings File
+ All Rights Reserved
+
+-->
+
+
+
+<CommDB:Config xmlns="SymbianOS.Generic.Comms-Infras.CommDB"
+ xmlns:CommDB="SymbianOS.Generic.Comms-Infras.CommDB"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="SymbianOS.Generic.Comms-Infras.CommDB CommDB.xsd">
+
+<InformationTable>
+</InformationTable>
+
+<NetworkTable>
+ <Network operation="add">
+ <Name>NT RAS</Name>
+ </Network>
+ <Network operation="add">
+ <Name>Linux</Name>
+ </Network>
+ <Network operation="add">
+ <Name>Dummy</Name>
+ </Network>
+ <Network operation="add">
+ <Name>Hungry</Name>
+ </Network>
+ <Network operation="add">
+ <Name>Dummy (Long Timeout)</Name>
+ </Network>
+ <Network operation="add">
+ <Name>Hungry (Long Timeout)</Name>
+ </Network>
+</NetworkTable>
+
+<IAPTable>
+ <IAP operation="add">
+ <Name>Hungry</Name>
+ <IAPService>DialOutISP.Dummy</IAPService>
+ <IAPBearer>ModemBearer.Hungry</IAPBearer>
+ <IAPNetwork>Network.Hungry</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office Direct Dial</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>NTRas GPRS</Name>
+ <IAPService>OutgoingGPRS.NTRas GPRS</IAPService>
+ <IAPBearer>ModemBearer.Hungry (Long Timeout)</IAPBearer>
+ <IAPNetwork>Network.NT RAS</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Mobile</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Additional Dial In ISP</Name>
+ <IAPService>DialInISP.Dial In CS ISP</IAPService>
+ <IAPBearer>ModemBearer.Linux</IAPBearer>
+ <IAPNetwork>Network.NT RAS</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Home</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Default Dial In ISP</Name>
+ <IAPService>DialInISP.Dial In CS ISP</IAPService>
+ <IAPBearer>ModemBearer.Linux</IAPBearer>
+ <IAPNetwork>Network.NT RAS</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Home</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Linux</Name>
+ <IAPService>DialOutISP.Linux</IAPService>
+ <IAPBearer>ModemBearer.Linux</IAPBearer>
+ <IAPNetwork>Network.Linux</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office Direct Dial</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Dummy</Name>
+ <IAPService>DialOutISP.Dummy</IAPService>
+ <IAPBearer>ModemBearer.Dummy</IAPBearer>
+ <IAPNetwork>Network.Dummy</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office Direct Dial</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Actual NT RAS</Name>
+ <IAPService>DialOutISP.NT RAS</IAPService>
+ <IAPBearer>ModemBearer.Null Modem 115200bps</IAPBearer>
+ <IAPNetwork>Network.NT RAS</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Virtual Comm port</Name>
+ <IAPService>DialOutISP.Linux</IAPService>
+ <IAPBearer>ModemBearer.Null Modem 115200bps</IAPBearer>
+ <IAPNetwork>Network.Linux</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Bad NT RAS</Name>
+ <IAPService>DialOutISP.Bad NT RAS</IAPService>
+ <IAPBearer>ModemBearer.Null Modem 115200bps</IAPBearer>
+ <IAPNetwork>Network.NT RAS</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Dummy (Long Timeout)</Name>
+ <IAPService>DialOutISP.Dummy</IAPService>
+ <IAPBearer>ModemBearer.Dummy (Long Timeout)</IAPBearer>
+ <IAPNetwork>Network.Dummy (Long Timeout)</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>Hungry (Long Timeout)</Name>
+ <IAPService>DialOutISP.Dummy</IAPService>
+ <IAPBearer>ModemBearer.Hungry (Long Timeout)</IAPBearer>
+ <IAPNetwork>Network.Hungry (Long Timeout)</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office</LocationRef>
+ </IAP>
+ <IAP operation="add">
+ <Name>QoS Test Nif</Name>
+ <IAPService>DialOutISP.NT RAS</IAPService>
+ <IAPBearer>ModemBearer.QoS Test Bearer</IAPBearer>
+ <IAPNetwork>Network.Hungry (Long Timeout)</IAPNetwork>
+ <IAPNetworkWeighting>0</IAPNetworkWeighting>
+ <LocationRef>Location.Office</LocationRef>
+ </IAP>
+</IAPTable>
+
+<ModemBearerTable>
+ <ModemBearer operation="template">
+ <Name>Default Modem</Name>
+ <Agent>CSD.agt</Agent>
+ <IfName>PPP</IfName>
+ <PortName>COMM::0</PortName>
+ <TSYName>MM</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>8</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>0</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>AFTERDIALUNTILANSWER</SpeakerPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+ </ModemBearer>
+ <ModemBearer operation="add">
+ <Name>Null Modem 115200bps</Name>
+ <Agent>csd.agt</Agent>
+ <IfName>ppp</IfName>
+ <PortName>COMM::0</PortName>
+ <TSYName>NTRASTSY</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>8</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>4</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>NEVER</SpeakerPref>
+ <SpeakerVolPref>QUIET</SpeakerVolPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <MessageValidityPeriod>0</MessageValidityPeriod>
+ <MessageDeliveryReport>FALSE</MessageDeliveryReport>
+ <MinimumSignalLevel>0</MinimumSignalLevel>
+ <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
+ </ModemBearer>
+ <ModemBearer operation="add">
+ <Name>Linux</Name>
+ <Agent>CSD.agt</Agent>
+ <IfName>PPP</IfName>
+ <PortName>COMM::3</PortName>
+ <TSYName>NTRASTSY</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>5</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>0</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>NEVER</SpeakerPref>
+ <SpeakerVolPref>QUIET</SpeakerVolPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <MessageValidityPeriod>0</MessageValidityPeriod>
+ <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+ <MinimumSignalLevel>0</MinimumSignalLevel>
+ <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+ </ModemBearer>
+ <ModemBearer operation="add">
+ <Name>Dummy</Name>
+ <Agent>NULLAGT.agt</Agent>
+ <IfName>dummynif</IfName>
+ <PortName>COMM::0</PortName>
+ <TSYName>NTRASTSY</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>5</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>0</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>NEVER</SpeakerPref>
+ <SpeakerVolPref>QUIET</SpeakerVolPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <MessageValidityPeriod>0</MessageValidityPeriod>
+ <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+ <MinimumSignalLevel>0</MinimumSignalLevel>
+ <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>5</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+ </ModemBearer>
+ <ModemBearer operation="add">
+ <Name>Hungry</Name>
+ <Agent>NULLAGT.agt</Agent>
+ <IfName>hungrynif</IfName>
+ <PortName>COMM::0</PortName>
+ <TSYName>NTRASTSY</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>5</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>0</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>NEVER</SpeakerPref>
+ <SpeakerVolPref>QUIET</SpeakerVolPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <MessageValidityPeriod>0</MessageValidityPeriod>
+ <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+ <MinimumSignalLevel>0</MinimumSignalLevel>
+ <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
+ </ModemBearer>
+ <ModemBearer operation="add">
+ <Name>Dummy (Long Timeout)</Name>
+ <Agent>NULLAGT.agt</Agent>
+ <IfName>dummynif</IfName>
+ <PortName>COMM::0</PortName>
+ <TSYName>MM</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>8</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>0</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>NEVER</SpeakerPref>
+ <SpeakerVolPref>QUIET</SpeakerVolPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <MessageValidityPeriod>0</MessageValidityPeriod>
+ <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+ <MinimumSignalLevel>0</MinimumSignalLevel>
+ <LastSocketActivityTimeout>14</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>6</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+ </ModemBearer>
+ <ModemBearer operation="add">
+ <Name>Hungry (Long Timeout)</Name>
+ <Agent>NULLAGT.agt</Agent>
+ <IfName>hungrynif</IfName>
+ <PortName>COMM::0</PortName>
+ <TSYName>MM</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>8</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>0</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>NEVER</SpeakerPref>
+ <SpeakerVolPref>QUIET</SpeakerVolPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <MessageValidityPeriod>0</MessageValidityPeriod>
+ <MessageDeliveryReport>TRUE</MessageDeliveryReport>
+ <MinimumSignalLevel>0</MinimumSignalLevel>
+ <LastSocketActivityTimeout>16</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>12</LastSocketClosedTimeout>
+ </ModemBearer>
+ <ModemBearer operation="add">
+ <Name>QoS Test Bearer</Name>
+ <Agent>CSD.agt</Agent>
+ <IfName>QoSPPP</IfName>
+ <PortName>COMM::0</PortName>
+ <TSYName>NTRASTSY</TSYName>
+ <CSYName>ECUART</CSYName>
+ <DataBits>8</DataBits>
+ <StopBits>1</StopBits>
+ <Parity>NONE</Parity>
+ <Rate>115200</Rate>
+ <Handshaking>4</Handshaking>
+ <SpecialRate>0</SpecialRate>
+ <XonChar>0</XonChar>
+ <XoffChar>0</XoffChar>
+ <FaxClassPref>AUTO</FaxClassPref>
+ <SpeakerPref>NEVER</SpeakerPref>
+ <SpeakerVolPref>QUIET</SpeakerVolPref>
+ <ModemInitString>AT</ModemInitString>
+ <DataInitString>AT</DataInitString>
+ <FaxInitString>AT</FaxInitString>
+ <DialPauseLength>S8=</DialPauseLength>
+ <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+ <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+ <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+ <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+ <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+ <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+ <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+ <DialToneWaitModifier>W</DialToneWaitModifier>
+ <CallProgress1>X1</CallProgress1>
+ <CallProgress2>X2</CallProgress2>
+ <CallProgress3>X3</CallProgress3>
+ <CallProgress4>X4</CallProgress4>
+ <EchoOff>E0</EchoOff>
+ <VerboseText>V1</VerboseText>
+ <QuietOff>Q0</QuietOff>
+ <QuietOn>Q1</QuietOn>
+ <DialCommandStateModifier>;</DialCommandStateModifier>
+ <OnLine>O</OnLine>
+ <ResetConfiguration>Z</ResetConfiguration>
+ <ReturnToFactoryDefs>&F</ReturnToFactoryDefs>
+ <DCDOnDuringLink>&C1</DCDOnDuringLink>
+ <DTRHangUp>&D2</DTRHangUp>
+ <DSRAlwaysOn>&S0</DSRAlwaysOn>
+ <RTSCTSHandshake>&K3</RTSCTSHandshake>
+ <XonXoffHandshake>&K4</XonXoffHandshake>
+ <EscapeCharacter>+</EscapeCharacter>
+ <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+ <NoDialTone>NO DIAL TONE</NoDialTone>
+ <Busy>BUSY</Busy>
+ <NoAnswer>NO ANSWER</NoAnswer>
+ <Carrier>CARRIER</Carrier>
+ <Connect>CONNECT</Connect>
+ <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+ <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+ <CompressionNone>COMPRESSION:NONE</CompressionNone>
+ <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+ <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+ <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+ <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+ <MessageValidityPeriod>0</MessageValidityPeriod>
+ <MessageDeliveryReport>FALSE</MessageDeliveryReport>
+ <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+ <LastSessionClosedTimeout>8</LastSessionClosedTimeout>
+ <LastSocketClosedTimeout>10</LastSocketClosedTimeout>
+ </ModemBearer>
+</ModemBearerTable>
+
+<LANBearerTable>
+ <LANBearer operation="add">
+ <Name>Dummy LAN Bearer</Name>
+ <Agent>PSD.agt</Agent>
+ <IfName>ppp</IfName>
+ <LDDName>Dummy LDD</LDDName>
+ <PDDName>Dummy PDD</PDDName>
+ </LANBearer>
+</LANBearerTable>
+
+<LANServiceTable>
+ <LANService operation="add">
+ <Name>Ethernet</Name>
+ <IfNetworks>ip,ip6</IfNetworks>
+ <IpNetMask>255.255.255.0</IpNetMask>
+ <IpGateway>194.72.6.1</IpGateway>
+ <IpAddr>192.168.0.100</IpAddr>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+ <IpNameServer1>194.72.6.51</IpNameServer1>
+ <IpNameServer2>194.72.6.52</IpNameServer2>
+ </LANService>
+</LANServiceTable>
+
+<DialInISPTable>
+ <DialInISP operation="template">
+ <Name>Default Dial In ISP</Name>
+ <UseLoginScript>FALSE</UseLoginScript>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+ <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <EnableSWComp>FALSE</EnableSWComp>
+ <UseEdge>FALSE</UseEdge>
+ </DialInISP>
+ <DialInISP operation="add">
+ <Name>Dial In CS ISP</Name>
+ <UseLoginScript>FALSE</UseLoginScript>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+ <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <EnableSWComp>FALSE</EnableSWComp>
+ <UseEdge>FALSE</UseEdge>
+ </DialInISP>
+</DialInISPTable>
+
+<DialOutISPTable>
+ <DialOutISP operation="template">
+ <Name>Default Dial Out ISP</Name>
+ <DialResolution>TRUE</DialResolution>
+ <UseLoginScript>FALSE</UseLoginScript>
+ <PromptForLogin>TRUE</PromptForLogin>
+ <IfPromptForAuth>TRUE</IfPromptForAuth>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+ <DisplayPCT>FALSE</DisplayPCT>
+ <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+ <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <EnableSWComp>FALSE</EnableSWComp>
+ <BearerService>0</BearerService>
+ <BearerProtocol>0</BearerProtocol>
+ <RlpVersion>0</RlpVersion>
+ <IwfToMs>0</IwfToMs>
+ <MsToIwf>0</MsToIwf>
+ <AckTimer>0</AckTimer>
+ <RetransmissionAttempts>0</RetransmissionAttempts>
+ <ResequencePeriod>0</ResequencePeriod>
+ <V42Compression>0</V42Compression>
+ <V42Codewords>0</V42Codewords>
+ <V42MaxLength>0</V42MaxLength>
+ <Asymmetry>0</Asymmetry>
+ <UserInitUpgrade>FALSE</UserInitUpgrade>
+ <UseEdge>FALSE</UseEdge>
+ </DialOutISP>
+ <DialOutISP operation="add">
+ <Name>NT RAS</Name>
+ <DialResolution>TRUE</DialResolution>
+ <UseLoginScript>TRUE</UseLoginScript>
+ <PromptForLogin>FALSE</PromptForLogin>
+ <IfPromptForAuth>FALSE</IfPromptForAuth>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+ <Type>INTERNETONLY</Type>
+ <LoginScript>CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n</LoginScript>
+ <DisplayPCT>FALSE</DisplayPCT>
+ <IfNetworks>ip</IfNetworks>
+ <IfAuthName>RasUser</IfAuthName>
+ <IfAuthPass>pass</IfAuthPass>
+ <AuthRetries>0</AuthRetries>
+ <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+ <CallbackTimeout>0</CallbackTimeout>
+ <IpNameServer1>10.16.59.15</IpNameServer1>
+ <IpNameServer2>0.0.0.0</IpNameServer2>
+ <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <EnableSWComp>FALSE</EnableSWComp>
+ <BearerService>0</BearerService>
+ <BearerName>ASYNCHRONOUS</BearerName>
+ <BearerSpeed>UNSPECIFIED</BearerSpeed>
+ <BearerCE>UNSPECIFIED</BearerCE>
+ <BearerType>CSD</BearerType>
+ <ChannelCoding>UNSPECIFIED</ChannelCoding>
+ <AIUR>9600</AIUR>
+ <RequestedTimeSlots>0</RequestedTimeSlots>
+ <MaximumTimeSlots>0</MaximumTimeSlots>
+ <BearerProtocol>0</BearerProtocol>
+ <RlpVersion>0</RlpVersion>
+ <IwfToMs>0</IwfToMs>
+ <MsToIwf>0</MsToIwf>
+ <AckTimer>0</AckTimer>
+ <RetransmissionAttempts>0</RetransmissionAttempts>
+ <ResequencePeriod>0</ResequencePeriod>
+ <V42Compression>0</V42Compression>
+ <V42Codewords>0</V42Codewords>
+ <V42MaxLength>0</V42MaxLength>
+ <Asymmetry>0</Asymmetry>
+ <UserInitUpgrade>FALSE</UserInitUpgrade>
+ <UseEdge>FALSE</UseEdge>
+ </DialOutISP>
+ <DialOutISP operation="add">
+ <Name>Linux</Name>
+ <DialResolution>TRUE</DialResolution>
+ <UseLoginScript>FALSE</UseLoginScript>
+ <PromptForLogin>FALSE</PromptForLogin>
+ <IfPromptForAuth>FALSE</IfPromptForAuth>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+ <Description>Linux</Description>
+ <Type>INTERNETONLY</Type>
+ <LoginScript>New Record</LoginScript>
+ <LoginName>RasUser</LoginName>
+ <DisplayPCT>FALSE</DisplayPCT>
+ <IfNetworks>ip</IfNetworks>
+ <IfAuthName>RasUser</IfAuthName>
+ <IfAuthPass>pass</IfAuthPass>
+ <AuthRetries>0</AuthRetries>
+ <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+ <IfCallbackType>IETF0</IfCallbackType>
+ <CallbackTimeout>0</CallbackTimeout>
+ <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <EnableSWComp>FALSE</EnableSWComp>
+ <BearerService>0</BearerService>
+ <BearerName>ASYNCHRONOUS</BearerName>
+ <BearerSpeed>UNSPECIFIED</BearerSpeed>
+ <BearerCE>UNSPECIFIED</BearerCE>
+ <BearerType>CSD</BearerType>
+ <ChannelCoding>UNSPECIFIED</ChannelCoding>
+ <AIUR>9600</AIUR>
+ <RequestedTimeSlots>0</RequestedTimeSlots>
+ <MaximumTimeSlots>0</MaximumTimeSlots>
+ <BearerProtocol>0</BearerProtocol>
+ <RlpVersion>0</RlpVersion>
+ <IwfToMs>0</IwfToMs>
+ <MsToIwf>0</MsToIwf>
+ <AckTimer>0</AckTimer>
+ <RetransmissionAttempts>0</RetransmissionAttempts>
+ <ResequencePeriod>0</ResequencePeriod>
+ <V42Compression>0</V42Compression>
+ <V42Codewords>0</V42Codewords>
+ <V42MaxLength>0</V42MaxLength>
+ <Asymmetry>0</Asymmetry>
+ <UserInitUpgrade>FALSE</UserInitUpgrade>
+ <UseEdge>FALSE</UseEdge>
+ </DialOutISP>
+ <DialOutISP operation="add">
+ <Name>Dummy</Name>
+ <DialResolution>TRUE</DialResolution>
+ <UseLoginScript>FALSE</UseLoginScript>
+ <PromptForLogin>FALSE</PromptForLogin>
+ <IfPromptForAuth>FALSE</IfPromptForAuth>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+ <Description>Dummy</Description>
+ <Type>INTERNETONLY</Type>
+ <LoginScript>New Record</LoginScript>
+ <DisplayPCT>FALSE</DisplayPCT>
+ <IfNetworks>ip</IfNetworks>
+ <AuthRetries>0</AuthRetries>
+ <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+ <IfCallbackType>IETF0</IfCallbackType>
+ <CallbackTimeout>0</CallbackTimeout>
+ <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <EnableSWComp>FALSE</EnableSWComp>
+ <BearerService>0</BearerService>
+ <BearerName>ASYNCHRONOUS</BearerName>
+ <BearerSpeed>UNSPECIFIED</BearerSpeed>
+ <BearerCE>UNSPECIFIED</BearerCE>
+ <BearerType>CSD</BearerType>
+ <ChannelCoding>UNSPECIFIED</ChannelCoding>
+ <AIUR>9600</AIUR>
+ <RequestedTimeSlots>0</RequestedTimeSlots>
+ <MaximumTimeSlots>0</MaximumTimeSlots>
+ <BearerProtocol>0</BearerProtocol>
+ <RlpVersion>0</RlpVersion>
+ <IwfToMs>0</IwfToMs>
+ <MsToIwf>0</MsToIwf>
+ <AckTimer>0</AckTimer>
+ <RetransmissionAttempts>0</RetransmissionAttempts>
+ <ResequencePeriod>0</ResequencePeriod>
+ <V42Compression>0</V42Compression>
+ <V42Codewords>0</V42Codewords>
+ <V42MaxLength>0</V42MaxLength>
+ <Asymmetry>0</Asymmetry>
+ <UserInitUpgrade>FALSE</UserInitUpgrade>
+ <UseEdge>FALSE</UseEdge>
+ </DialOutISP>
+ <DialOutISP operation="add">
+ <Name>Bad NT RAS</Name>
+ <DialResolution>TRUE</DialResolution>
+ <UseLoginScript>TRUE</UseLoginScript>
+ <PromptForLogin>FALSE</PromptForLogin>
+ <IfPromptForAuth>FALSE</IfPromptForAuth>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+ <Type>INTERNETONLY</Type>
+ <LoginScript>CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n</LoginScript>
+ <DisplayPCT>FALSE</DisplayPCT>
+ <IfNetworks>ip</IfNetworks>
+ <IfAuthName>RasUser</IfAuthName>
+ <IfAuthPass>badpass</IfAuthPass>
+ <AuthRetries>0</AuthRetries>
+ <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+ <CallbackTimeout>0</CallbackTimeout>
+ <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <EnableSWComp>FALSE</EnableSWComp>
+ <BearerService>0</BearerService>
+ <BearerName>ASYNCHRONOUS</BearerName>
+ <BearerSpeed>UNSPECIFIED</BearerSpeed>
+ <BearerCE>UNSPECIFIED</BearerCE>
+ <BearerType>CSD</BearerType>
+ <ChannelCoding>UNSPECIFIED</ChannelCoding>
+ <AIUR>9600</AIUR>
+ <RequestedTimeSlots>0</RequestedTimeSlots>
+ <MaximumTimeSlots>0</MaximumTimeSlots>
+ <BearerProtocol>0</BearerProtocol>
+ <RlpVersion>0</RlpVersion>
+ <IwfToMs>0</IwfToMs>
+ <MsToIwf>0</MsToIwf>
+ <AckTimer>0</AckTimer>
+ <RetransmissionAttempts>0</RetransmissionAttempts>
+ <ResequencePeriod>0</ResequencePeriod>
+ <V42Compression>0</V42Compression>
+ <V42Codewords>0</V42Codewords>
+ <V42MaxLength>0</V42MaxLength>
+ <Asymmetry>0</Asymmetry>
+ <UserInitUpgrade>FALSE</UserInitUpgrade>
+ <UseEdge>FALSE</UseEdge>
+ </DialOutISP>
+</DialOutISPTable>
+
+<AgentLookupTable>
+</AgentLookupTable>
+
+<ChargecardTable>
+ <Chargecard operation="add">
+ <Name>Dummy BT Chargecard</Name>
+ <AccountNumber>144,12345678</AccountNumber>
+ <Pin>0000</Pin>
+ <LocalRule>HG</LocalRule>
+ <NatRule>HFG</NatRule>
+ <IntlRule>HEFG</IntlRule>
+ </Chargecard>
+ <Chargecard operation="add">
+ <Name>Dummy Mercury Chargecard</Name>
+ <AccountNumber>0500800800,,12345678</AccountNumber>
+ <Pin>****</Pin>
+ <LocalRule>HG</LocalRule>
+ <NatRule>J,K,0FG</NatRule>
+ <IntlRule>HEFG</IntlRule>
+ </Chargecard>
+</ChargecardTable>
+
+<ConnectionPreferencesTable>
+ <ConnectionPreferences operation="add">
+ <Name>ConnectionPreferencesTable2</Name>
+ <Ranking>1</Ranking>
+ <Direction>OUTGOING</Direction>
+ <DialogPref>DONOTPROMPT</DialogPref>
+ <BearerSet>CSD</BearerSet>
+ <IAPRef>IAP.Dummy</IAPRef>
+ </ConnectionPreferences>
+</ConnectionPreferencesTable>
+
+<GlobalSettingsTable>
+ <GlobalSettings operation="add">
+ <Name>GlobalSettingsTable1</Name>
+ <RedialAttempts>3</RedialAttempts>
+ <SmsBearer>2</SmsBearer>
+ <SmsReceiveMode>2</SmsReceiveMode>
+ <GPRSAttachMode>1</GPRSAttachMode>
+ <AcceptIncomingGprs>1</AcceptIncomingGprs>
+ <ConnectionAttempts>2</ConnectionAttempts>
+ <ModemForDataAndFax>2</ModemForDataAndFax>
+ <ModemForPhoneServicesAndSMS>2</ModemForPhoneServicesAndSMS>
+ <LocationForDataAndFax>Location.Office</LocationForDataAndFax>
+ <LocationForPhoneServicesAndSMS>Location.Office</LocationForPhoneServicesAndSMS>
+ <GPRSClassCBearer>GSM</GPRSClassCBearer>
+ <DefaultNetwork>Network.NT RAS</DefaultNetwork>
+ <BearerAvailabilityCheckTSY>mm</BearerAvailabilityCheckTSY>
+ </GlobalSettings>
+</GlobalSettingsTable>
+
+<IncomingGPRSTable>
+ <IncomingGPRS operation="add">
+ <Name>Dummy Incoming GPRS Settings</Name>
+ <APN>Test</APN>
+ <PDPType>IPV4</PDPType>
+ <PDPAddress>0.0.0.0</PDPAddress>
+ <IfPromptForAuth>FALSE</IfPromptForAuth>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+ <ReqPrecedence>1</ReqPrecedence>
+ <ReqDelay>1</ReqDelay>
+ <ReqReliability>1</ReqReliability>
+ <ReqPeakThroughput>1</ReqPeakThroughput>
+ <ReqMeanThroughput>1</ReqMeanThroughput>
+ <MinPrecedence>1</MinPrecedence>
+ <MinDelay>1</MinDelay>
+ <MinReliability>1</MinReliability>
+ <MinPeakThroughput>1</MinPeakThroughput>
+ <MinMeanThroughput>1</MinMeanThroughput>
+ <DataCompression>FALSE</DataCompression>
+ <HeaderCompression>FALSE</HeaderCompression>
+ <AnonymousAccess>FALSE</AnonymousAccess>
+ <IfNetworks>ip</IfNetworks>
+ <IfAuthName>RasUser</IfAuthName>
+ <IfAuthPass>pass</IfAuthPass>
+ <AuthRetries>1</AuthRetries>
+ <IpNameServer1>0.0.0.0</IpNameServer1>
+ <IpNameServer2>0.0.0.0</IpNameServer2>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <GprsUseEdge>FALSE</GprsUseEdge>
+ </IncomingGPRS>
+</IncomingGPRSTable>
+
+<OutgoingGPRSTable>
+ <OutgoingGPRS operation="add">
+ <Name>NTRas GPRS</Name>
+ <APN>Test</APN>
+ <PDPType>IPV4</PDPType>
+ <IfPromptForAuth>FALSE</IfPromptForAuth>
+ <IpAddrFromServer>TRUE</IpAddrFromServer>
+ <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+ <ReqPrecedence>2</ReqPrecedence>
+ <ReqDelay>4</ReqDelay>
+ <ReqReliability>3</ReqReliability>
+ <ReqPeakThroughput>3</ReqPeakThroughput>
+ <ReqMeanThroughput>31</ReqMeanThroughput>
+ <MinPrecedence>2</MinPrecedence>
+ <MinDelay>4</MinDelay>
+ <MinReliability>3</MinReliability>
+ <MinPeakThroughput>3</MinPeakThroughput>
+ <MinMeanThroughput>31</MinMeanThroughput>
+ <DataCompression>FALSE</DataCompression>
+ <HeaderCompression>FALSE</HeaderCompression>
+ <AnonymousAccess>FALSE</AnonymousAccess>
+ <IfNetworks>ip</IfNetworks>
+ <IfAuthName>RasUser</IfAuthName>
+ <IfAuthPass>pass</IfAuthPass>
+ <AuthRetries>1</AuthRetries>
+ <IpNameServer1>194.72.6.51</IpNameServer1>
+ <IpNameServer2>194.72.6.51</IpNameServer2>
+ <EnableLCPExtension>FALSE</EnableLCPExtension>
+ <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+ <GprsUseEdge>FALSE</GprsUseEdge>
+ </OutgoingGPRS>
+</OutgoingGPRSTable>
+
+<DefaultGPRSTable>
+ <DefaultGPRS operation="add">
+ <Name>Dummy Default GPRS Settings</Name>
+ <APN>Access point name</APN>
+ <PDPType>IPV6</PDPType>
+ <PDPAddress>www.wid.com</PDPAddress>
+ <Usage>1</Usage>
+ <Precedence>1</Precedence>
+ <Delay>1</Delay>
+ <Reliability>1</Reliability>
+ <PeakThroughput>1</PeakThroughput>
+ <MeanThroughput>1</MeanThroughput>
+ <MinPrecedence>1</MinPrecedence>
+ <MinDelay>1</MinDelay>
+ <MinReliability>1</MinReliability>
+ <MinPeakThroughput>1</MinPeakThroughput>
+ <MinMeanThroughput>1</MinMeanThroughput>
+ <DataCompression>TRUE</DataCompression>
+ <HeaderCompression>TRUE</HeaderCompression>
+ <GprsUseEdge>FALSE</GprsUseEdge>
+ <AnonymousAccess>TRUE</AnonymousAccess>
+ </DefaultGPRS>
+</DefaultGPRSTable>
+
+<ProxyTable>
+ <Proxy operation="add">
+ <Name>ProxyTable1</Name>
+ <ISPRef>DialOutISP.NT RAS</ISPRef>
+ <UseProxyServer>TRUE</UseProxyServer>
+ <ProtocolName>http</ProtocolName>
+ <ProxyServerName>www.dummyproxy.com</ProxyServerName>
+ <PortNumber>80</PortNumber>
+ <Exceptions>www.dummyproxy.com/exception</Exceptions>
+ </Proxy>
+</ProxyTable>
+
+<LocationTable>
+ <Location operation="template">
+ <Name>Default Location</Name>
+ <Mobile>TRUE</Mobile>
+ <UsePulseDial>FALSE</UsePulseDial>
+ <WaitForDialTone>FALSE</WaitForDialTone>
+ <PauseAfterDialout>0</PauseAfterDialout>
+ <IntlPrefixCode>+</IntlPrefixCode>
+ <NatPrefixCode>0</NatPrefixCode>
+ <NatCode>44</NatCode>
+ </Location>
+ <Location operation="add">
+ <Name>Office</Name>
+ <Mobile>FALSE</Mobile>
+ <UsePulseDial>FALSE</UsePulseDial>
+ <WaitForDialTone>FALSE</WaitForDialTone>
+ <PauseAfterDialout>0</PauseAfterDialout>
+ <IntlPrefixCode>00</IntlPrefixCode>
+ <NatPrefixCode>0</NatPrefixCode>
+ <NatCode>44</NatCode>
+ <AreaCode>171</AreaCode>
+ <DialOutCode>9,</DialOutCode>
+ </Location>
+ <Location operation="add">
+ <Name>Office Direct Dial</Name>
+ <Mobile>FALSE</Mobile>
+ <UsePulseDial>FALSE</UsePulseDial>
+ <WaitForDialTone>FALSE</WaitForDialTone>
+ <PauseAfterDialout>0</PauseAfterDialout>
+ <IntlPrefixCode>00</IntlPrefixCode>
+ <NatPrefixCode>0</NatPrefixCode>
+ <NatCode>44</NatCode>
+ <AreaCode>171</AreaCode>
+ </Location>
+ <Location operation="add">
+ <Name>Mobile</Name>
+ <Mobile>TRUE</Mobile>
+ <UsePulseDial>FALSE</UsePulseDial>
+ <WaitForDialTone>FALSE</WaitForDialTone>
+ <PauseAfterDialout>0</PauseAfterDialout>
+ <IntlPrefixCode>+</IntlPrefixCode>
+ <NatPrefixCode>0</NatPrefixCode>
+ <NatCode>44</NatCode>
+ </Location>
+ <Location operation="add">
+ <Name>Home</Name>
+ <Mobile>FALSE</Mobile>
+ <UsePulseDial>TRUE</UsePulseDial>
+ <WaitForDialTone>TRUE</WaitForDialTone>
+ <PauseAfterDialout>0</PauseAfterDialout>
+ <IntlPrefixCode>00</IntlPrefixCode>
+ <NatPrefixCode>0</NatPrefixCode>
+ <NatCode>44</NatCode>
+ <AreaCode>181</AreaCode>
+ </Location>
+</LocationTable>
+
+<SecureSocketTable>
+ <SecureSocket operation="add">
+ <Name>SecureSocketTable1</Name>
+ <ProtocolName>ssl3.0</ProtocolName>
+ <ProtoLibrary>ssladaptor.dll</ProtoLibrary>
+ </SecureSocket>
+ <SecureSocket operation="add">
+ <Name>SecureSocketTable2</Name>
+ <ProtocolName>tls1.0</ProtocolName>
+ <ProtoLibrary>ssladaptor.dll</ProtoLibrary>
+ </SecureSocket>
+</SecureSocketTable>
+
+<BTDeviceTable>
+</BTDeviceTable>
+
+<BTPersistTable>
+</BTPersistTable>
+
+<BTSecurityTable>
+</BTSecurityTable>
+
+<BTDefaultTable>
+</BTDefaultTable>
+
+<WAPAccessPointTable>
+ <WAPAccessPoint operation="template">
+ <Name>Default Dial In ISP</Name>
+ <CurrentBearer>WAPIPBearer</CurrentBearer>
+ </WAPAccessPoint>
+ <WAPAccessPoint operation="add">
+ <Name>Dummy WAP Settings</Name>
+ <CurrentBearer>WAPIPBearer</CurrentBearer>
+ <StartPage>www.wapstart.com</StartPage>
+ </WAPAccessPoint>
+</WAPAccessPointTable>
+
+<WAPIPBearerTable>
+ <WAPIPBearer operation="template">
+ <Name>WAPIPBearerTable1</Name>
+ <AccessPoint>WAPAccessPoint.-1</AccessPoint>
+ <WSPOption>CONNECTIONLESS</WSPOption>
+ <Security>FALSE</Security>
+ <IAPRef>IAP.-1</IAPRef>
+ <ProxyPortNumber>0</ProxyPortNumber>
+ </WAPIPBearer>
+ <WAPIPBearer operation="add">
+ <Name>WAPIPBearerTable2</Name>
+ <AccessPoint>WAPAccessPoint.Dummy WAP Settings</AccessPoint>
+ <GatewayAddress>www.wapgateway.com</GatewayAddress>
+ <WSPOption>CONNECTIONORIENTED</WSPOption>
+ <Security>FALSE</Security>
+ <IAPRef>IAP.NTRas GPRS</IAPRef>
+ <ProxyPortNumber>1</ProxyPortNumber>
+ </WAPIPBearer>
+</WAPIPBearerTable>
+
+<WAPSMSBearerTable>
+ <WAPSMSBearer operation="template">
+ <Name>WAPSMSBearerTable1</Name>
+ <AccessPoint>WAPAccessPoint.-1</AccessPoint>
+ <WSPOption>CONNECTIONLESS</WSPOption>
+ <Security>FALSE</Security>
+ </WAPSMSBearer>
+ <WAPSMSBearer operation="add">
+ <Name>WAPSMSBearerTable2</Name>
+ <AccessPoint>WAPAccessPoint.Dummy WAP Settings</AccessPoint>
+ <GatewayAddress>+442079460221</GatewayAddress>
+ <WSPOption>CONNECTIONORIENTED</WSPOption>
+ <Security>FALSE</Security>
+ <ServiceCentreAddress>+442079460223</ServiceCentreAddress>
+ </WAPSMSBearer>
+</WAPSMSBearerTable>
+
+<VirtualBearerTable>
+</VirtualBearerTable>
+
+<VpnServiceTable>
+</VpnServiceTable>
+
+
+</CommDB:Config>
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/config/te_rconnectionallinterfacenot_NonConnection.script Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/config/te_rconnectionallinterfacenot_NonConnection.script Tue Jan 26 13:09:14 2010 +0200
@@ -118,5 +118,25 @@
END_TESTCASE COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0209
+
+
+
+
+// NOTE: This test changes the previously loaded commdb
+run_script z:\TestData\scripts\te_esock_test_unloadesockForced.script
+ced z:\testdata\configs\def143083.xml
+run_script z:\TestData\scripts\te_esock_test_loadesock.script
+
+
+START_TESTCASE COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0210
+//! @SYMTestCaseID COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0210
+
+heap_mark
+run_test_step 500, TE_RConnectionSuite TestAllInterfaceNot210
+heap_markend
+test_complete
+END_TESTCASE COMINF-ESOCK-RConnectionSuite-AllInterfaceNot-0210
+
+
run_script z:\TestData\scripts\te_esock_test_unloadesockForced.script
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/group/TE_RConnectionSuite.iby Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/group/TE_RConnectionSuite.iby Tue Jan 26 13:09:14 2010 +0200
@@ -42,6 +42,7 @@
data=EPOCROOT##epoc32\data\z\testdata\scripts\te_rconnectionhostresolvertests_connection_eth_target.script testdata\scripts\te_rconnectionhostresolvertests_connection_eth.script
data=EPOCROOT##epoc32\data\z\testdata\scripts\te_rconnectionallinterfacenot_connection_eth_target.script testdata\scripts\te_rconnectionallinterfacenot_connection_eth.script
+data=EPOCROOT##epoc32\data\z\testdata\configs\def143083.xml testdata\configs\def143083.xml
data=EPOCROOT##epoc32\data\z\testdata\configs\rconnectionudp_ethernet_MOMAP16xx.xml testdata\configs\rconnectionudp_ethernet.xml
data=EPOCROOT##epoc32\data\z\testdata\configs\rconnectionethernet_MOMAP16xx.xml testdata\configs\rconnectionethernet.xml
data=EPOCROOT##epoc32\data\z\testdata\configs\ainethernet_MOMAP16xx.xml testdata\configs\ainethernet.xml
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/group/bld.inf Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/group/bld.inf Tue Jan 26 13:09:14 2010 +0200
@@ -107,6 +107,7 @@
// Configs
// ------------------------------------
+../config/def143083.xml z:/testdata/configs/def143083.xml
../config/rconnectionudp.xml z:/testdata/configs/rconnectionudp.xml
../config/rconnectionntras.xml z:/testdata/configs/rconnectionntras.xml
../config/ainudp.xml z:/testdata/configs/ainudp.xml
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/inc/TE_AllInterfaceNotification.h Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/inc/TE_AllInterfaceNotification.h Tue Jan 26 13:09:14 2010 +0200
@@ -153,5 +153,23 @@
};
-#endif // TS_ALLINTERFACENOTIFICATION_H
+class TE_RConnectionTestAllInterfaceNot210 : public CTestStep
+ {
+public:
+ virtual TVerdict doTestStepL();
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepPostambleL();
+ ~TE_RConnectionTestAllInterfaceNot210();
+
+private:
+ RSocketServ iSS;
+ RConnection iConnStart;
+ RConnection iConnAttach;
+ RConnection iConnAllIfaceNotify;
+ RTimer iTimer;
+ };
+
+#endif
+// TS_ALLINTERFACENOTIFICATION_H
+
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_AllInterfaceNotification.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_AllInterfaceNotification.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -1628,3 +1628,201 @@
return TestStepResult();
} // TE_RConnectionTest318
+
+/******************************************************************************
+ *
+ * Test TestAllInterfaceNot112
+ *
+ * Added for def143083
+ *
+ * Commsdat configuration should have a default connection that fails to start.
+ * Uses dummynif and sets it to fail using the mobility pub/sub.
+ *
+ * Start listening for AllInterfaceNotification
+ * Start a connection asynchronously
+ * On completion of AllInterfaceNotification with EInterfaceUp - Re-request
+ * Attach another connection to the interface reported as up
+ * Async start completes with error
+ * AllInterfaceNotification *SHOULD* complete with EInterfaceDown
+ *****************************************************************************/
+TVerdict TE_RConnectionTestAllInterfaceNot210::doTestStepL(void)
+ {
+ TInt err;
+
+ TRequestStatus allIfaceStatus;
+ TInterfaceNotificationBuf notificationBuf;
+ iConnAllIfaceNotify.AllInterfaceNotification(notificationBuf, allIfaceStatus);
+
+ TRequestStatus connStartStatus;
+ iConnStart.Start(connStartStatus);
+ User::WaitForRequest(connStartStatus, allIfaceStatus);
+
+ if (allIfaceStatus == KRequestPending)
+ {
+ // Fail
+ INFO_PRINTF2(_L("Connection start completed with %d before AllInterfaceNotification()"), connStartStatus.Int());
+ iConnAllIfaceNotify.CancelAllInterfaceNotification();
+ User::WaitForRequest(allIfaceStatus);
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+
+ // AllInterfaceNotification() completed
+ if (notificationBuf().iState != EInterfaceUp)
+ {
+ // Fail
+ INFO_PRINTF1(_L("AllInterfaceNotification() completed with unexpected state [iState != EInterfaceUp]"));
+ iConnStart.Stop();
+ User::WaitForRequest(connStartStatus);
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+
+ INFO_PRINTF1(_L("AllInterfaceNotification() completed with [iState == EInterfaceUp]"));
+ TConnectionInfoBuf connInfoBuf(notificationBuf().iConnectionInfo);
+
+ // Attach() to the connection
+ err = iConnAttach.Attach(connInfoBuf, RConnection::EAttachTypeMonitor);
+ if (err != KErrNone)
+ {
+ // FAIL
+ INFO_PRINTF2(_L("Attach() completed with %d"), err);
+ iConnStart.Stop();
+ User::WaitForRequest(connStartStatus);
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+
+ // Re-request
+ iConnAllIfaceNotify.AllInterfaceNotification(notificationBuf, allIfaceStatus);
+
+ // Set test time out
+ TRequestStatus timerStatus;
+ const TInt KTimerDelay = 20 * 1000 * 1000; // 20 secs should be plenty for the connection start to fail
+ iTimer.After(timerStatus, KTimerDelay);
+
+ const TInt KRequestCount = 3;
+ TRequestStatus* requests[KRequestCount] = { &connStartStatus, &allIfaceStatus, &timerStatus };
+ User::WaitForNRequest(requests, KRequestCount);
+
+ if (timerStatus != KRequestPending)
+ {
+ // Fail
+ INFO_PRINTF1(_L("Guard timer elapsed"));
+ iConnAllIfaceNotify.CancelAllInterfaceNotification();
+ User::WaitForRequest(allIfaceStatus);
+ iConnStart.Stop();
+ User::WaitForRequest(connStartStatus);
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+
+ iTimer.Cancel();
+ User::WaitForRequest(timerStatus);
+
+ if (allIfaceStatus == KRequestPending)
+ {
+ // Connection start completed
+ if (connStartStatus.Int() != KErrNone)
+ {
+ // Reset timer and wait a little longer
+ iTimer.After(timerStatus, KTimerDelay);
+ User::WaitForRequest(allIfaceStatus, timerStatus);
+ }
+ else
+ {
+ // FAIL - Misconfigured? Connection is expected to fail
+ INFO_PRINTF1(_L("Connection started successfully (** Was expected to fail **)"));
+ iConnAllIfaceNotify.CancelAllInterfaceNotification();
+ User::WaitForRequest(allIfaceStatus);
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+
+ if (allIfaceStatus == KRequestPending)
+ {
+ // FAIL
+ INFO_PRINTF1(_L("Guard timer elapsed"));
+ iConnAllIfaceNotify.CancelAllInterfaceNotification();
+ User::WaitForRequest(allIfaceStatus);
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+
+ iTimer.Cancel();
+ User::WaitForRequest(timerStatus);
+ }
+ else
+ {
+ // Just wait for the conn start to complete
+ User::WaitForRequest(connStartStatus);
+ if (connStartStatus.Int() == KErrNone)
+ {
+ // FAIL - Misconfigured? Connection is expected to fail
+ INFO_PRINTF1(_L("Connection started successfully (** Was expected to fail **)"));
+ iConnAllIfaceNotify.CancelAllInterfaceNotification();
+ User::WaitForRequest(allIfaceStatus);
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+ }
+
+ // Last thing to check - make sure it completed with interface down
+ if (notificationBuf().iState != EInterfaceDown)
+ {
+ // FAIL
+ INFO_PRINTF1(_L("AllInterfaceNotification() completed with unexpected state [iState != EInterfaceDown]"));
+ return EFail; // EFail has no effect, default fail result set in pre-amble
+ }
+
+ // PASS
+ SetTestStepResult(EPass);
+ }
+
+TVerdict TE_RConnectionTestAllInterfaceNot210::doTestStepPreambleL()
+ {
+ TInt err;
+
+ SetTestStepResult(EFail);
+
+ // Prepare socket server and connections
+ err = iSS.Connect();
+ TESTEL(err == KErrNone, err);
+
+ err = iConnStart.Open(iSS);
+ TESTEL(err == KErrNone, err);
+
+ err = iConnAttach.Open(iSS);
+ TESTEL(err == KErrNone, err);
+
+ err = iConnAllIfaceNotify.Open(iSS);
+ TESTEL(err == KErrNone, err);
+
+ err = iTimer.CreateLocal();
+ TESTEL(err == KErrNone, err);
+
+ // Setup the dummynif pub/sub setting
+ const TUid KAvailabilityTestingPubSubUid = { 0x10272F42 };
+ const TInt KApId = 6; /* see the def143083.xml config */
+
+ RProperty dummyNifEnableProperty;
+ err = dummyNifEnableProperty.Define(KAvailabilityTestingPubSubUid, KApId , RProperty::EInt);
+ if (err != KErrAlreadyExists)
+ {
+ TESTEL(err == KErrNone, err);
+ }
+
+ err = dummyNifEnableProperty.Attach(KAvailabilityTestingPubSubUid, KApId);
+ TESTEL(err == KErrNone, err);
+
+ dummyNifEnableProperty.Set(0); // Dummy NIF not available - Start should fail
+ dummyNifEnableProperty.Close();
+ }
+
+TVerdict TE_RConnectionTestAllInterfaceNot210::doTestStepPostambleL()
+ {
+
+ }
+
+TE_RConnectionTestAllInterfaceNot210::~TE_RConnectionTestAllInterfaceNot210()
+ {
+ iConnAllIfaceNotify.Close();
+ iConnAttach.Close();
+ iConnStart.Close();
+ iSS.Close();
+
+ iTimer.Close();
+ }
--- a/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_RConnectionSuite.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_RConnectionSuite.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -481,6 +481,8 @@
testStep=new TE_RConnectionTest318();
else if(aStepName.Compare(_L("Test319")) == 0)
testStep=new TE_RConnectionTest319();
+ else if (aStepName.Compare(_L("TestAllInterfaceNot210")) == 0)
+ testStep = new TE_RConnectionTestAllInterfaceNot210();
return testStep;
}
Binary file datacommsserver/esockserver/test/TE_RSubconnection/documentation/TE_RSubConnection_Test_Specification.doc has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_Socket/SocketTestSection31.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,637 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains ESock Test cases from section 1
+//
+//
+
+// EPOC includes
+#include <e32base.h>
+#include <ss_std.h>
+
+// Test system includes
+#include "SocketTestSection31.h"
+#include <test/es_dummy.h>
+
+const TInt KBufferLength= 60000;
+
+
+
+// Test step 31.1
+// Sending more than 16k packets.
+// Stream
+// Blocking mode
+// Using pdummy
+//
+const TDesC& CSocketTest31_1::GetTestName()
+ {
+ _LIT(ret,"Test31.1");
+ return ret;
+ }
+
+enum TVerdict CSocketTest31_1::InternalDoTestStepL( void )
+ {
+ TVerdict verdict = EPass;
+
+ Logger().WriteFormat(_L("Test Purpose: Sending large amount of data (more than 16K,60k) by using Stream"));
+
+ // connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+
+ TSessionPref pref;
+ pref.iAddrFamily = KDummyAddrFamily;
+ pref.iProtocol = KDummyFour;
+ TInt ret = ss.Connect(pref);
+ CleanupClosePushL(ss);
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Finding for dummy protocol 4"));
+ TProtocolDesc protoInfo;
+ ret = ss.FindProtocol(_L("Dummy Protocol 4"), protoInfo);
+ Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Open a socket on Dummy Protocol 4"));
+ RSocket sock;
+ CleanupClosePushL (sock);
+ ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+ Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Perform connect"));
+ TRequestStatus status;
+ TSockAddr addr;
+ sock.Connect(addr, status);
+ User::WaitForRequest(status);
+ TESTL(KErrNone == status.Int());
+
+
+ // Setting options
+ // Force the Send to 'flow off'
+ TBool flowOff = ETrue;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ // Setting up buffer
+ HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+ HBufC8* readbuf = HBufC8::NewMaxLC(KBufferLength);
+
+ TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+ TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+
+ ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+ ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+
+ // Filling buffer
+ ptrwritebuf.Repeat(_L8("Stream-packet: helloworld"));
+
+ TRequestStatus txStat;
+ TRequestStatus rxStat;
+ TSockXfrLength txlen;
+ TSockXfrLength rxlen;
+ TInt txSize = 0, txCnt = 0;;
+ TInt rxSize = 0, rxCnt = -1;
+ TBool txSentAll = EFalse;
+ TBool rxRecvAll = EFalse;
+
+ while(rxSize < KBufferLength)
+ {
+ // sending packets
+ if(txStat.Int() != KRequestPending && !txSentAll)
+ {
+ RDebug::Printf("tx status:%d, ", txStat.Int());
+ TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+ sock.Send(ptrtempbuf, 0, txStat, txlen);
+
+ // Now enable the write to complete, by ending the 'flow off'
+ flowOff = EFalse;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ TESTL(KErrNone == ret);
+
+ User::WaitForRequest(txStat);
+ ++txCnt;
+ txSize += txlen();
+
+ if(txStat!=KErrNone)
+ {
+ Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+ break;
+ }
+ RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+ if(txSize >= KBufferLength)
+ {
+ txSentAll=ETrue;
+ }
+ }
+
+ // receiving packets
+ if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+ {
+ RDebug::Printf("rx status:%d, ", rxStat.Int());
+ ++rxCnt;
+
+ sock.RecvOneOrMore(ptrreadbuf, 0, rxStat, rxlen);
+ User::WaitForRequest(rxStat);
+ rxSize += rxlen();
+
+ if(rxStat!=KErrNone)
+ {
+ Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+ break;
+ }
+ RDebug::Printf("rx #%d, +%d\n", rxCnt, rxlen());
+
+ if(rxSize >= KBufferLength)
+ {
+ rxRecvAll=ETrue;
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(2, writebuf); // writebuf and readbuf
+ CleanupStack::PopAndDestroy(2); // sock, ss
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+// Test step 31.2
+// Sending more than 16k packets.
+// Stream
+// Non-Blocking mode
+// Using pdummy
+//
+const TDesC& CSocketTest31_2::GetTestName()
+ {
+ _LIT(ret,"Test31.2");
+ return ret;
+ }
+
+enum TVerdict CSocketTest31_2::InternalDoTestStepL( void )
+ {
+ TVerdict verdict = EPass;
+
+ Logger().WriteFormat(_L("Test Purpose: Sending large amount of data (more than 16K,60k) by using Stream"));
+
+ // connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+
+ TSessionPref pref;
+ pref.iAddrFamily = KDummyAddrFamily;
+ pref.iProtocol = KDummyFour;
+ TInt ret = ss.Connect(pref);
+ CleanupClosePushL(ss);
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Finding for dummy protocol 4"));
+ TProtocolDesc protoInfo;
+ ret = ss.FindProtocol(_L("Dummy Protocol 4"), protoInfo);
+ Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Open a socket on Dummy Protocol 4"));
+ RSocket sock;
+ CleanupClosePushL (sock);
+ ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+ Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Perform connect"));
+ TRequestStatus status;
+ TSockAddr addr;
+ sock.Connect(addr, status);
+ User::WaitForRequest(status);
+ TESTL(KErrNone == status.Int());
+
+
+ // Setting options
+ // Force the Send to 'flow off'
+ TBool flowOff = ETrue;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ ret = sock.SetOpt(KSONonBlockingIO, KSOLSocket, 1);
+ Logger().WriteFormat(_L("SetOpt NonBlockingIO returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ // Setting up buffer
+ HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+ HBufC8* readbuf = HBufC8::NewMaxLC(KBufferLength);
+
+ TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+ TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+
+ ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+ ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+
+ // Filling buffer
+ ptrwritebuf.Repeat(_L8("Stream-packet: helloworld"));
+
+ TRequestStatus txStat;
+ TRequestStatus rxStat;
+ TSockXfrLength txlen;
+ TSockXfrLength rxlen;
+ TInt txSize = 0, txCnt = 0;;
+ TInt rxSize = 0, rxCnt = -1;
+ TBool txSentAll = EFalse;
+ TBool rxRecvAll = EFalse;
+
+ while(rxSize < KBufferLength)
+ {
+ // sending packets
+ if(txStat.Int() != KRequestPending && !txSentAll)
+ {
+ RDebug::Printf("tx status:%d, ", txStat.Int());
+ TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+ sock.Send(ptrtempbuf, 0, txStat, txlen);
+
+ // Now enable the write to complete, by ending the 'flow off'
+ flowOff = EFalse;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ TESTL(KErrNone == ret);
+
+ User::WaitForRequest(txStat);
+ ++txCnt;
+ txSize += txlen();
+
+ if(txStat!=KErrNone)
+ {
+ Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+ break;
+ }
+ RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+ if(txSize >= KBufferLength)
+ {
+ txSentAll=ETrue;
+ }
+ }
+
+ // receiving packets
+ if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+ {
+ RDebug::Printf("rx status:%d, ", rxStat.Int());
+ ++rxCnt;
+
+ sock.RecvOneOrMore(ptrreadbuf, 0, rxStat, rxlen);
+ User::WaitForRequest(rxStat);
+ rxSize += rxlen();
+
+ if(rxStat!=KErrNone && rxStat!=KErrWouldBlock)
+ {
+ Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+ break;
+ }
+ RDebug::Printf("rx #%d, +%d\n", rxCnt, rxlen());
+
+ if(rxSize >= KBufferLength)
+ {
+ rxRecvAll=ETrue;
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(2, writebuf); // writebuf and readbuf
+ CleanupStack::PopAndDestroy(2); // sock, ss
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+// Test step 31.3
+// Sending more than 16k packets.
+// Datagram
+// Blocking mode
+//
+const TDesC& CSocketTest31_3::GetTestName()
+ {
+ _LIT(ret,"Test31.3");
+ return ret;
+ }
+
+enum TVerdict CSocketTest31_3::InternalDoTestStepL( void )
+ {
+ TVerdict verdict = EPass;
+
+ Logger().WriteFormat(_L("Test Purpose: Repeat send over 64K datagram using TSockXfrLength."));
+
+ // connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+
+ // protocol allowing unlimited datagram size
+ TSessionPref pref;
+ pref.iAddrFamily = KDummyAddrFamily;
+ pref.iProtocol = KDummyFive;
+ TInt ret = ss.Connect(pref);
+
+ CleanupClosePushL(ss);
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Finding for dummy protocol 5"));
+ TProtocolDesc protoInfo;
+ ret = ss.FindProtocol(_L("Dummy Protocol 5"), protoInfo);
+ Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Opening a socket"));
+ RSocket sock;
+ ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+ CleanupClosePushL(sock);
+ Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ TPckgBuf<TUint> lenbuf;
+ Logger().WriteFormat(_L("Getting SendBuf length"));
+ ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+ Logger().WriteFormat(_L("GetOpt returned %S, length %d"),
+ &EpocErrorToText(ret), lenbuf());
+ TESTL(KErrNone == ret);
+
+ TUint x(KBufferLength);
+ lenbuf() = x;
+ Logger().WriteFormat(_L("Setting SendBuf length to %d"), lenbuf());
+ ret = sock.SetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+ Logger().WriteFormat(_L("SetOpt returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Getting SendBuf length"));
+ ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+ Logger().WriteFormat(_L("GetOpt returned %S, length %d"), &EpocErrorToText(ret), lenbuf());
+ TESTL(KErrNone == ret);
+ TESTL(lenbuf() == x);
+
+ // Force the SendTo to 'flow off'
+ TBool flowOff = ETrue;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Try sending datagram over protocol allowing unlimited datagram size"));
+ TInetAddr destAddr;
+ TRequestStatus status;
+
+ // Setting up buffer
+ HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+ HBufC8* readbuf = HBufC8::NewMaxLC(KBufferLength);
+
+ TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+ TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+
+ ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+ ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+
+ // Filling buffer
+ ptrwritebuf.Repeat(_L8("Datagram-packet: helloworld"));
+
+ TRequestStatus txStat;
+ TRequestStatus rxStat;
+ TSockXfrLength txlen;
+ TSockXfrLength rxlen;
+ TInt txSize = 0, txCnt = 0;;
+ TInt rxSize = 0, rxCnt = -1;
+ TBool txSentAll = EFalse;
+ TBool rxRecvAll = EFalse;
+
+ while(rxSize < KBufferLength)
+ {
+ // sending packets
+ if(txStat.Int() != KRequestPending && !txSentAll)
+ {
+ RDebug::Printf("tx status:%d, ", txStat.Int());
+ TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+ sock.SendTo(ptrtempbuf, destAddr, 0, txStat, txlen);
+
+ // Now enable the write to complete, by ending the 'flow off'
+ flowOff = EFalse;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ TESTL(KErrNone == ret);
+
+ User::WaitForRequest(txStat);
+ ++txCnt;
+ txSize += txlen();
+
+ if(txStat!=KErrNone)
+ {
+ Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+ break;
+ }
+ RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+ if(txSize >= KBufferLength)
+ {
+ txSentAll=ETrue;
+ }
+ }
+
+ // receiving packets
+ if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+ {
+ RDebug::Printf("rx status:%d, ", rxStat.Int());
+ ++rxCnt;
+
+ ptrreadbuf.Zero();
+ sock.RecvFrom(ptrreadbuf,destAddr, 0, rxStat, rxlen);
+ User::WaitForRequest(rxStat);
+ rxSize += ptrreadbuf.Length();
+
+ if(rxStat!=KErrNone)
+ {
+ Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+ break;
+ }
+ RDebug::Printf("rx #%d, +%d\n", rxCnt, ptrreadbuf.Length());
+
+ if(rxSize >= KBufferLength)
+ {
+ rxRecvAll=ETrue;
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(2, writebuf); // writebuf and readbuf
+ CleanupStack::PopAndDestroy(2); // sock, ss
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
+// Test step 31.4
+// Sending more than 16k packets.
+// Datagram
+// Non-Blocking mode
+//
+const TDesC& CSocketTest31_4::GetTestName()
+ {
+ _LIT(ret,"Test31.4");
+ return ret;
+ }
+
+enum TVerdict CSocketTest31_4::InternalDoTestStepL( void )
+ {
+ TVerdict verdict = EPass;
+
+ Logger().WriteFormat(_L("Test Purpose: Repeat send over 64K datagram using TSockXfrLength."));
+
+ // connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+
+ // protocol allowing unlimited datagram size
+ TSessionPref pref;
+ pref.iAddrFamily = KDummyAddrFamily;
+ pref.iProtocol = KDummyFive;
+ TInt ret = ss.Connect(pref);
+
+ CleanupClosePushL(ss);
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Finding for dummy protocol 5"));
+ TProtocolDesc protoInfo;
+ ret = ss.FindProtocol(_L("Dummy Protocol 5"), protoInfo);
+ Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Opening a socket"));
+ RSocket sock;
+ ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
+ CleanupClosePushL(sock);
+ Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ TPckgBuf<TUint> lenbuf;
+ Logger().WriteFormat(_L("Getting SendBuf length"));
+ ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+ Logger().WriteFormat(_L("GetOpt returned %S, length %d"),
+ &EpocErrorToText(ret), lenbuf());
+ TESTL(KErrNone == ret);
+
+ TUint x(KBufferLength);
+ lenbuf() = x;
+ Logger().WriteFormat(_L("Setting SendBuf length to %d"), lenbuf());
+ ret = sock.SetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+ Logger().WriteFormat(_L("SetOpt returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Getting SendBuf length"));
+ ret = sock.GetOpt(KSOSendBuf, KSOLSocket, lenbuf);
+ Logger().WriteFormat(_L("GetOpt returned %S, length %d"), &EpocErrorToText(ret), lenbuf());
+ TESTL(KErrNone == ret);
+ TESTL(lenbuf() == x);
+
+ // Setting option
+ // Force the SendTo to 'flow off'
+ TBool flowOff = ETrue;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ Logger().WriteFormat(_L("SetOpt (flow off) returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ ret = sock.SetOpt(KSONonBlockingIO, KSOLSocket, 1);
+ Logger().WriteFormat(_L("SetOpt NonBlockingIO returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+
+ Logger().WriteFormat(_L("Try sending datagram over protocol allowing unlimited datagram size"));
+ TInetAddr destAddr;
+ TRequestStatus status;
+
+ // Setting up buffer
+ HBufC8* writebuf = HBufC8::NewMaxLC(KBufferLength);
+ HBufC8* readbuf = HBufC8::NewMaxLC(KBufferLength);
+
+ TPtr8 ptrwritebuf(const_cast<TUint8*>(writebuf->Ptr()), KBufferLength);
+ TPtr8 ptrreadbuf(const_cast<TUint8*>(readbuf->Ptr()), KBufferLength);
+
+ ptrwritebuf.SetLength(ptrwritebuf.MaxLength());
+ ptrreadbuf.SetLength(ptrreadbuf.MaxLength());
+
+ // Filling buffer
+ ptrwritebuf.Repeat(_L8("Datagram-packet: helloworld"));
+
+ TRequestStatus txStat;
+ TRequestStatus rxStat;
+ TSockXfrLength txlen;
+ TSockXfrLength rxlen;
+ TInt txSize = 0, txCnt = 0;;
+ TInt rxSize = 0, rxCnt = -1;
+ TBool txSentAll = EFalse;
+ TBool rxRecvAll = EFalse;
+
+ while(rxSize < KBufferLength)
+ {
+ // sending packets
+ if(txStat.Int() != KRequestPending && !txSentAll)
+ {
+ RDebug::Printf("tx status:%d, ", txStat.Int());
+ TPtrC8 ptrtempbuf(ptrwritebuf.Mid(txSize));
+ sock.SendTo(ptrtempbuf, destAddr, 0, txStat, txlen);
+
+ // Now enable the write to complete, by ending the 'flow off'
+ flowOff = EFalse;
+ ret = sock.SetOpt(KDummyOptionSetFlowOffWrite, 0, flowOff);
+ TESTL(KErrNone == ret);
+
+ User::WaitForRequest(txStat);
+ ++txCnt;
+ txSize += txlen();
+
+ if(txStat!=KErrNone)
+ {
+ Logger().WriteFormat(_L("Error in sending packet : %d "), txStat.Int());
+ break;
+ }
+ RDebug::Printf("tx #%d, +%d\n", txCnt, txlen());
+ if(txSize >= KBufferLength)
+ {
+ txSentAll=ETrue;
+ }
+ }
+
+ // receiving packets
+ if((rxStat.Int() != KRequestPending) && !rxRecvAll)
+ {
+ RDebug::Printf("rx status:%d, ", rxStat.Int());
+ ++rxCnt;
+
+ ptrreadbuf.Zero();
+ sock.RecvFrom(ptrreadbuf,destAddr, 0, rxStat, rxlen);
+ User::WaitForRequest(rxStat);
+ rxSize += ptrreadbuf.Length();
+ //rxSize += rxlen();
+
+ if(rxStat!=KErrNone && rxStat!=KErrWouldBlock)
+ {
+ Logger().WriteFormat(_L("Error in receiving packet : %d "), rxStat.Int());
+ break;
+ }
+ RDebug::Printf("rx #%d, +%d\n", rxCnt, ptrreadbuf.Length());
+
+ if(rxSize >= KBufferLength)
+ {
+ rxRecvAll=ETrue;
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(2, writebuf); // writebuf and readbuf
+ CleanupStack::PopAndDestroy(2); // sock, ss
+
+ SetTestStepResult(EPass);
+ return TestStepResult();
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_Socket/SocketTestSection31.h Tue Jan 26 13:09:14 2010 +0200
@@ -0,0 +1,55 @@
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This is the header file for ESOCK basic socket test section 31
+//
+//
+
+
+#if (!defined __SOCKETTEST_31_H__)
+#define __SOCKETTEST_31_H__
+
+#include "TestStepSocket.h"
+
+class CSocketTest31_1 : public CTestStepSocket
+ {
+ public:
+ static const TDesC &GetTestName();
+ virtual enum TVerdict InternalDoTestStepL( void );
+ };
+
+class CSocketTest31_2 : public CTestStepSocket
+ {
+ public:
+ static const TDesC &GetTestName();
+ virtual enum TVerdict InternalDoTestStepL( void );
+ };
+
+class CSocketTest31_3 : public CTestStepSocket
+ {
+ public:
+ static const TDesC &GetTestName();
+ virtual enum TVerdict InternalDoTestStepL( void );
+ };
+
+class CSocketTest31_4 : public CTestStepSocket
+ {
+ public:
+ static const TDesC &GetTestName();
+ virtual enum TVerdict InternalDoTestStepL( void );
+ };
+
+
+#endif //__SOCKETTEST_31_H__
+
+
--- a/datacommsserver/esockserver/test/TE_Socket/TestSuiteSocket.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_Socket/TestSuiteSocket.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -43,6 +43,7 @@
#include "SocketTestSection19.h"
#include "SocketTestSection20.h"
#include "SocketTestSection21.h"
+#include "SocketTestSection31.h"
_LIT(KServerName,"TE_Socket");
@@ -225,6 +226,11 @@
ADD_TEST_STEP(CSocketTest20_5)
ADD_TEST_STEP(CSocketTest21_1)
ADD_TEST_STEP(CSocketTest21_2)
+
+ ADD_TEST_STEP(CSocketTest31_1)
+ ADD_TEST_STEP(CSocketTest31_2)
+ ADD_TEST_STEP(CSocketTest31_3)
+ ADD_TEST_STEP(CSocketTest31_4)
END_TEST_STEP_LIST
}
--- a/datacommsserver/esockserver/test/TE_Socket/group/TE_Socket.mmp Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_Socket/group/TE_Socket.mmp Tue Jan 26 13:09:14 2010 +0200
@@ -46,7 +46,8 @@
SOURCE SocketTestSection18.cpp
SOURCE SocketTestSection19.cpp
SOURCE SocketTestSection20.cpp
-SOURCE SocketTestSection21.cpp
+SOURCE SocketTestSection21.cpp
+SOURCE SocketTestSection31.cpp
USERINCLUDE ../../protocols/pdummy
--- a/datacommsserver/esockserver/test/TE_Socket/scriptfiles/te_socket_tests.script Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/TE_Socket/scriptfiles/te_socket_tests.script Tue Jan 26 13:09:14 2010 +0200
@@ -492,3 +492,67 @@
RUN_TEST_STEP 100 TE_Socket Test21.2
TEST_COMPLETE
END_TESTCASE COMINF-ESOCK-Socket-0171
+
+START_TESTCASE COMINF-ESOCK-Socket-0172
+//! @SYMTestCaseID COMINF-ESOCK-Socket-0172
+//! @SYMTestCaseDesc Sending more than 60k packet by Stream protocol with blocking mode
+//! @SYMTestActions RSocket::Send
+//! @SYMTestExpectedResults pass
+//! @SYMTestPriority Critical
+//! @SYMTestType CT
+//! @SYMComponent comms-infras_esock
+//! @SYMDEF DEF143021
+
+// run test 31.1
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.1
+TEST_COMPLETE
+END_TESTCASE COMINF-ESOCK-Socket-0172
+
+START_TESTCASE COMINF-ESOCK-Socket-0173
+//! @SYMTestCaseID COMINF-ESOCK-Socket-0173
+//! @SYMTestCaseDesc Sending more than 60k packet by Stream protocol with non-blocking mode
+//! @SYMTestActions RSocket::Send
+//! @SYMTestExpectedResults pass
+//! @SYMTestPriority Critical
+//! @SYMTestType CT
+//! @SYMComponent comms-infras_esock
+//! @SYMDEF DEF143021
+
+// run test 31.2
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.2
+TEST_COMPLETE
+END_TESTCASE COMINF-ESOCK-Socket-0173
+
+START_TESTCASE COMINF-ESOCK-Socket-0174
+//! @SYMTestCaseID COMINF-ESOCK-Socket-0174
+//! @SYMTestCaseDesc Sending more than 60k packet by datagram protocol with blocking mode
+//! @SYMTestActions RSocket::SendTo
+//! @SYMTestExpectedResults pass
+//! @SYMTestPriority Critical
+//! @SYMTestType CT
+//! @SYMComponent comms-infras_esock
+//! @SYMDEF DEF143021
+
+// run test 31.3
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.3
+TEST_COMPLETE
+END_TESTCASE COMINF-ESOCK-Socket-0174
+
+START_TESTCASE COMINF-ESOCK-Socket-0175
+//! @SYMTestCaseID COMINF-ESOCK-Socket-0175
+//! @SYMTestCaseDesc Sending more than 60k packet by Stream protocol with non-blocking mode
+//! @SYMTestActions RSocket::SendTo
+//! @SYMTestExpectedResults pass
+//! @SYMTestPriority Critical
+//! @SYMTestType CT
+//! @SYMComponent comms-infras_esock
+//! @SYMDEF DEF143021
+
+// run test 31.4
+PRINT
+RUN_TEST_STEP 100 TE_Socket Test31.4
+TEST_COMPLETE
+END_TESTCASE COMINF-ESOCK-Socket-0175
--- a/datacommsserver/esockserver/test/protocols/pdummy/PDUMMY.CPP Fri Jan 22 10:58:59 2010 +0200
+++ b/datacommsserver/esockserver/test/protocols/pdummy/PDUMMY.CPP Tue Jan 26 13:09:14 2010 +0200
@@ -1035,16 +1035,15 @@
return 0;
}
- // From opposite angle, we dont need a new chain if it is a stream
- // we just append to the existing, unless there isn't an existing...
- if(iDataArray->Count()==0 || IsTransportType(KSockDatagram))
+ // add a new chain for storing data
+ if(iDataArray->Count()==0 ||( iDataArray->Count()>0 && !iDataArray->At(iDataArray->Count()-1).IsEmpty()))
{
RMBufChain chain;
TRAPD(ret, iDataArray->AppendL(chain));
if(ret!=KErrNone)
return ret;
}
-
+
iDataArray->At(iDataArray->Count()-1).Append(aData);
// Gotta save the length of the chain before calling
Binary file datacommsserver/networkcontroller/Documentation/Network_Controller_Design.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/Network_Controller_Unit_Test_Specification.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/SGL.GT0161.208 Mobile IP to Simple IP Fallback.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/SGL.GT0161.211 Mobile IP to Simple IP Fallback Mechanism Design.doc has changed
Binary file datacommsserver/networkcontroller/Documentation/SGL.GT0161.305 Mobile IP to Simple IP Fallback Mechanism Test Specification.doc has changed
Binary file datacommsserver/networkingdialogapi/Documentation/Dialog_API_Specification.doc has changed
Binary file datacommsserver/networkingdialogapi/Documentation/Dialog_Design.doc has changed
Binary file datacommsserver/networkingdialogapi/Documentation/Dialog_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/documentation/C32_How_to_test.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/documentation/C32_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/TE_C32/documentation/C32_Unit_Test_Specification.doc has changed
Binary file serialserver/c32serialserver/Test/te_C32Performance/Documentation/C32 Performance Test Design.doc has changed
Binary file serialserver/c32serialserver/documentation/C32API.doc has changed
Binary file serialserver/c32serialserver/documentation/C32_Design_Document.doc has changed
Binary file serialserver/c32serialserver/documentation/C32_Design_Document_v1.doc has changed
Binary file serialserver/c32serialserver/documentation/C32_Heap_Check_Migration.doc has changed
Binary file serialserver/c32serialserver/documentation/How_To_configure_C32.doc has changed
Binary file serialserver/c32serialserverdocs/SerComms_Subsystem_Architectural_Description.doc has changed
Binary file serialserver/c32serialserverdocs/SerComms_Subsystem_Functional_Specification.doc has changed
Binary file serialserver/c32serialserverdocs/SerComms_Subsystem_Release_Note.doc has changed
Binary file serialserver/packetloopbackcsy/Documentation/PacketLoopbackCsy_Design_Document.doc has changed
--- a/serialserver/packetloopbackcsy/src/LoopbackConfig.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/serialserver/packetloopbackcsy/src/LoopbackConfig.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -64,6 +64,8 @@
{
RFs fs;
User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+
CTestConfig* configFile = CTestConfig::NewLC(fs, KConfigFileDir, KLoopbackConfigFilename);
TBuf8<KMaxName> sectionName;
@@ -164,6 +166,7 @@
}
CleanupStack::PopAndDestroy(configFile);
+ CleanupStack::PopAndDestroy(); // RFs handle
}
/**
--- a/serialserver/packetloopbackcsy/src/loopback.cpp Fri Jan 22 10:58:59 2010 +0200
+++ b/serialserver/packetloopbackcsy/src/loopback.cpp Tue Jan 26 13:09:14 2010 +0200
@@ -1012,6 +1012,9 @@
* This method is the destructor for the factory object.
*/
{
+ ASSERT(iPorts.Count()==0);
+ iPorts.Close();
+
delete iLoopbackConfig;
iLoopbackConfig = NULL;
LOGDESTROY();