--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/psdagt/TS_PsdAgt/PsdAgtTestReconnect.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,404 @@
+// Copyright (c) 2001-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:
+// This contains PsdAgt TestCase Test 14.1 - 14.5
+//
+//
+
+// EPOC includes
+#include <e32base.h>
+#include <in_sock.h>
+
+// Test system includes
+#include "networking/log.h"
+#include "networking/teststep.h"
+#include "TestStepPsdAgt.h"
+#include "TestSuitePsdAgt.h"
+
+// COMMDB Database Undo
+#include "DbUndo.h"
+
+// RPacketContext
+#include <etelpckt.h>
+
+// EPsdStartingConfiguration
+#include <psdprog.h>
+
+// EConnectionOpen
+#include <connectprog.h>
+
+// Class definitions
+#include "PsdAgtTestReconnect.h"
+
+// Test case 14.1
+enum TVerdict CPsdAgtTest14_1::doPsdAgtTestStepL( void )
+ {
+ TRealAgtNotify agtNotify;
+
+ agtNotify.SetTestCase(1401);
+ // CTestStepPsdAgx base class untilty function
+ ReConnectL();
+
+ return iTestStepResult;
+ }
+
+// Test case 14.2
+enum TVerdict CPsdAgtTest14_2::doPsdAgtTestStepL( void )
+ {
+ TInt err;
+ TInt stage;
+ CNifAgentRefN1 *agent;
+
+ TRealAgtNotify agtNotify;
+ agtNotify.SetTestCase(1402);
+
+ // Construct a new Dummy Nifman Instance
+ Log(_L("Loading DUMMYNIF.DLL"));
+ agent = CNifAgentRefN1::NewL(this,EFalse);
+ CleanupStack::PushL(agent);
+
+ // Attempt connection
+ Log(_L("Connecting..."));
+ agent->Connect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==KConnectionOpen,stage);
+
+ Log(_L("Connect Successful"));
+
+ DelayL(2000000);
+
+ // Attempt connection
+ Log(_L("ReConnecting..."));
+ agent->ReConnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrGeneral,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==EPsdFinishedActivation,stage);
+
+ Log(_L("Reconnect fails as expected"));
+
+ DelayL(2000000);
+
+ // Disconnect
+ Log(_L("Disconnecting..."));
+ agent->Disconnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ Log(_L("Disconnect Successful"));
+
+ // Finished with Dummy Nifman so delete it
+ CleanupStack::PopAndDestroy(agent);
+ Log(_L("DUMMYNIF.DLL Unloaded"));
+
+ return iTestStepResult;
+ }
+
+
+// Test case 14.3
+enum TVerdict CPsdAgtTest14_3::doPsdAgtTestStepL( void )
+ {
+ TInt err;
+ TInt stage;
+ CNifAgentRefN1 *agent;
+
+ TRealAgtNotify agtNotify;
+ agtNotify.SetTestCase(1403);
+
+ // Construct a new Dummy Nifman Instance
+ Log(_L("Loading DUMMYNIF.DLL"));
+ agent = CNifAgentRefN1::NewL(this,EFalse);
+ CleanupStack::PushL(agent);
+
+ // Attempt connection
+ Log(_L("Connecting..."));
+ agent->Connect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==KConnectionOpen,stage);
+
+ Log(_L("Connect Successful"));
+
+ DelayL(2000000);
+
+ // Attempt connection
+ Log(_L("ReConnecting..."));
+ agent->ReConnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==KConnectionOpen,stage);
+
+ Log(_L("ReConnect Successful"));
+ Log(_L("Waiting for EAgentToNifEventTypeGetDataTransfer event"));
+
+ DelayL(2000000);
+
+ iStage++;
+
+ // Wait for log request to arrive
+ CActiveScheduler::Start();
+
+ DelayL(2000000);
+
+ // Disconnect
+ agent->Disconnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ Log(_L("Disconnected"));
+
+ // Finished with Dummy Nifman so delete it
+ CleanupStack::PopAndDestroy(agent);
+
+ // GetDataVolumeRequest should only have been called twice
+ // ie. iStage == 3
+ TESTL(iStage == 3);
+
+ Log(_L("Check LogDataTransferred values in GENCONN.TXT"));
+
+ return iTestStepResult;
+ }
+
+void CPsdAgtTest14_3::PsdAgtGetDataVolumeRequest(TUint32 &aSent, TUint32 &aReceived)
+ {
+ // Function should only be called twice
+ TEST(iStage==1 || iStage == 2);
+
+ // First time data volume is requested
+ if(iStage == 1)
+ {
+ iStage++;
+ aSent = 20; // Sent size
+ aReceived = 26; // Rcv size
+
+ // Unblock ConnectAndWaitForAsyncronousRequest()
+ CActiveScheduler::Stop();
+ }
+ // Second time data volume is requested during the Disconnect
+ else if(iStage == 2)
+ {
+ iStage++;
+ aSent = 35; // Sent size
+ aReceived = 39; // Rcv size
+ }
+ }
+
+
+// Test case 14.4
+enum TVerdict CPsdAgtTest14_4::doPsdAgtTestStepL( void )
+ {
+ TInt err;
+ TInt stage;
+ CNifAgentRefN1 *agent;
+
+ TRealAgtNotify agtNotify;
+ agtNotify.SetTestCase(1404);
+
+ // Construct a new Dummy Nifman Instance
+ Log(_L("Loading DUMMYNIF.DLL"));
+ agent = CNifAgentRefN1::NewL(this,EFalse);
+ CleanupStack::PushL(agent);
+
+ // Attempt connection
+ Log(_L("Connecting..."));
+ agent->Connect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==KConnectionOpen,stage);
+
+ Log(_L("Connect Successful"));
+
+ DelayL(2000000);
+
+ // Attempt connection
+ Log(_L("ReConnecting..."));
+ agent->ReConnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==KConnectionOpen,stage);
+
+ Log(_L("ReConnect Successful"));
+ // Predetermined QoS warning response
+ iDlgSvr->SetQoSWarnResponse(EFalse);
+
+ DelayL(5000000);
+
+ // Tell the ETEL layer to send a QOS change to PSDAGX
+ Log(_L("Notify PSDAGT of Context Config change"));
+ agtNotify.NotifyAgt(EReduce);
+
+ // Block until we receive dialog notification of status change
+ CActiveScheduler::Start();
+
+ DelayL(2000000);
+
+ // Tell the ETEL layer to restore QOS and notify PSDAGX
+ Log(_L("Notify PSDAGT of Restore Context Config"));
+ agtNotify.NotifyAgt(ERestore);
+
+ // Check to make sure a second dialog is not presented
+ DelayL(5000000);
+
+ // Disconnect
+ Log(_L("Disconnecting..."));
+ agent->Disconnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ Log(_L("Disconnect Successful"));
+
+ // Finished with Dummy Nifman so delete it
+ CleanupStack::PopAndDestroy(agent);
+ Log(_L("DUMMYNIF.DLL Unloaded"));
+
+ return iTestStepResult;
+ }
+
+void CPsdAgtTest14_4::DialogHasAppeared()
+ {
+ TEST(iStage==0);
+ iStage++;
+
+ // Unblock the call to doPsdAgtTestStepL();
+ CActiveScheduler::Stop();
+ }
+
+
+// Test case 14.5
+enum TVerdict CPsdAgtTest14_5::doPsdAgtTestStepL( void )
+ {
+ TInt err;
+ TInt stage;
+ CNifAgentRefN1 *agent;
+
+ TRealAgtNotify agtNotify;
+ agtNotify.SetTestCase(1405);
+
+ // Construct a new Dummy Nifman Instance
+ Log(_L("Loading DUMMYNIF.DLL"));
+ agent = CNifAgentRefN1::NewL(this,EFalse);
+ CleanupStack::PushL(agent);
+
+ // Attempt connection
+ Log(_L("Connecting..."));
+ agent->Connect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==KConnectionOpen,stage);
+
+ Log(_L("Connect Successful"));
+
+ DelayL(2000000);
+
+ // Attempt connection
+ Log(_L("Reconnecting..."));
+ agent->ReConnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ // Check ConnectComplete was reported at the correct stage in the state machine
+ agent->GetProgressStage(stage);
+ TESTEL(stage==KConnectionOpen,stage);
+
+ Log(_L("Reconnect Successful"));
+
+ // Predetermined QoS warning response
+ iDlgSvr->SetQoSWarnResponse(EFalse);
+
+ DelayL(5000000);
+
+ // Tell the ETEL layer to send a QOS change to PSDAGX
+ Log(_L("Notify PSDAGT of QoS change"));
+ agtNotify.NotifyAgt(EReduce);
+
+ // Block until we receive dialog notification of status change
+ CActiveScheduler::Start();
+
+ DelayL(2000000);
+
+ // Tell the ETEL layer to restore QOS and notify PSDAGX
+ Log(_L("Notify PSDAGT of restore QoS value"));
+ agtNotify.NotifyAgt(ERestore);
+
+ // Check to make sure a second dialog is not presented
+ DelayL(5000000);
+
+ // Disconnect
+ Log(_L("Disconnecting..."));
+ agent->Disconnect();
+
+ // Check for an error code
+ agent->GetCompletionCode(err);
+ TESTEL(err==KErrNone,err);
+
+ Log(_L("Disconnect Successful"));
+
+ // Finished with Dummy Nifman so delete it
+ CleanupStack::PopAndDestroy(agent);
+ Log(_L("DUMMYNIF.DLL Unloaded"));
+
+ return iTestStepResult;
+ }
+
+void CPsdAgtTest14_5::DialogHasAppeared()
+ {
+ // Only one dialog should be presented
+ TEST(iStage==0);
+ iStage++;
+
+ // Unblock the call to doPsdAgtTestStepL();
+ CActiveScheduler::Stop();
+ }