--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/pppnif/te_ppp/te_incoming_ppp/src/connopenclosestep.cpp Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,156 @@
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// implementation for CConnOpenCloseStep
+//
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+
+
+#include "connopenclosestep.h"
+using namespace te_ppploopback;
+
+// Local variables.
+namespace
+ {
+ // For reading test configuration ini file
+ _LIT(KMicrosecsToClientConn, "MicrosecsToClientConn");
+ _LIT(KMicrosecsToClientDisconn,"MicrosecsToClientDisconn");
+ }
+
+
+/**
+ C++ Constructor
+
+ @post Test name is setup.
+ */
+CConnOpenCloseStep::CConnOpenCloseStep():
+ CLoopbackTestStepBase()
+ {
+ SetTestStepName(KConnOpenCloseStep);
+ }
+
+/**
+ C++ Destructor
+
+
+ @post resources associated with Client and Server are released.
+ */
+CConnOpenCloseStep::~CConnOpenCloseStep()
+ {
+ }
+
+/**
+ Carries out the test sequence
+ Test case: CONN_OPEN_CLOSE
+ Tests whether PPP Server can handle client disconnects.
+
+ @return result of test
+ */
+TVerdict CConnOpenCloseStep::doTestStepL()
+ {
+ SetTestStepResult(EFail);
+
+ // Load testing configuration and write ppp ini files.
+ ConfigurePppServerL();
+ ConfigurePppClientL();
+
+
+ TInt microsecsToClientConn = 0;
+ GetIntFromConfig(ConfigSection(), KMicrosecsToClientConn, microsecsToClientConn);
+
+ TInt microsecsToClientDisconn = 0;
+ GetIntFromConfig(ConfigSection(), KMicrosecsToClientDisconn, microsecsToClientDisconn);
+ if(microsecsToClientDisconn == 0)
+ {
+ microsecsToClientDisconn = 10 * 1000000; // Default value: 10 seconds.
+ }
+
+ INFO_PRINTF3(_L("Config: toClientConn= %d, toClientDisconn= %d"), microsecsToClientConn, microsecsToClientDisconn);
+
+
+ InstallActiveSchedLC();
+
+ InitPppServerL();
+ InitPppClientL();
+
+
+ SetupForNoMessageExchange();
+
+ // Open PPP link.
+ //-------------------------------------------------------------------------------------------
+ iServer->ConnectToPeerL();
+ INFO_PRINTF1(_L("Server started, waiting for client"));
+ User::After(microsecsToClientConn); // NB: This time must be correspond to LCP retry timeout
+ iClient->ConnectToPeerL();
+ INFO_PRINTF1(_L("Client started, waiting for server"));
+
+ CTimeoutTimer* timer = CTimeoutTimer::NewLC();
+ timer->SetListener(this, MPppEndpointListener::ETimeoutTimer);
+
+ // Close client side PPP link after 10 seconds
+ // Note: on some systems, it takes more than 10 seconds for the PPP link to be
+ // established, resulting in test failure. If this is the case, increase this
+ // time as necessary.
+ timer->RequestTimeoutL(microsecsToClientDisconn);
+ iStepSched->Start();
+ CleanupStack::PopAndDestroy(timer);
+
+
+ ShutdownAndDestroyPppClientL();
+
+ //Simulate some waiting timer before the second client connection.
+ // Not critical for the test.
+ User::After(3*1000000);
+ // Create the second client:
+ // This time we exchange messages.
+ SetupForMessageExchange();
+
+ InitPppClientL();
+ iServer->ConnectToPeerL(); // restart the server
+ iClient->ConnectToPeerL();
+
+ iStepSched->Start();
+
+ // The rest has no significance for PPP loopback testing.
+ //-------------------------------------------------------------------
+ ShutdownAndDestroyPppClientL();
+ ShutdownAndDestroyPppServerL();
+
+ //User::After(5 * 1000000); // Debug: Wait for system logs to flush.
+
+ RemoveActiveSchedL();
+ return TestStepResult();
+ }
+
+/**
+ Disconnects the client upon timeout
+
+ @pre client is connected
+ @post client is disconnected
+ */
+void CConnOpenCloseStep::OnTimerEvent(TInt /*aErrorCode*/ )
+ {
+ TRAPD(err, iClient->DisconnectFromPeerL());
+ INFO_PRINTF2(_L("Client disconnected with error=%d"), err);
+ }
+
+
+
+
+