servicediscoveryandcontrol/pnp/test/upnp/unittests/te_serverbase/src/te_serverbaseteststep.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/servicediscoveryandcontrol/pnp/test/upnp/unittests/te_serverbase/src/te_serverbaseteststep.cpp Tue Feb 02 01:12:20 2010 +0200
@@ -0,0 +1,309 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include <e32base.h>
+#include <es_sock.h>
+#include <comms-infras/eintsock.h>
+#include <connpref.h>
+#include <f32file.h>
+
+#include "te_serverbaseteststep.h"
+#include "es_ptest.h"
+
+
+CTestServerTestStep::CTestServerTestStep()
+ {
+ }
+
+CTestServerTestStep::~CTestServerTestStep()
+ {
+ iESockProxyThread.Close();
+ }
+
+enum TVerdict CTestServerTestStep::doTestStepPreambleL( void )
+ {
+ return EPass;
+ }
+
+enum TVerdict CTestServerTestStep::doTestStepL()
+ {
+
+ TRAPD(trapRet,enum TVerdict stepRet = InternalDoTestStepL();\
+ if (stepRet !=EPass)\
+ {\
+ SetTestStepResult(stepRet);\
+ }\
+ )
+
+ if (trapRet != KErrNone)
+ {
+ SetTestStepResult(EFail);
+ return EFail;
+ }
+ return EPass;
+ };
+
+enum TVerdict CTestServerTestStep::doTestStepPostambleL( void )
+ {
+ return EPass;
+ }
+
+enum TVerdict CTestServerTestStep::InternalDoTestStepL()
+ {
+ RSocketServ ss1;
+ TInt ret;
+ ret = ss1.Connect();
+ if (ret != KErrNone)
+ {
+ Logger().WriteFormat(_L("Connect to socket server failed with %S"),&EpocErrorToText(ret));
+ }
+ CleanupClosePushL(ss1);
+ TESTL(ret == KErrNone);
+
+ RConnection connection;
+ connection.Open(ss1);
+ TRequestStatus status;
+
+ TPtrC ptr (ConfigSection());
+ if ( ptr.Find ( _L("te_upnp_tcpclient") ) >= 0
+ || ptr.Find ( _L("te_upnp_tcpserver") ) >= 0 )
+ {
+ TConnSnapPref prefs ( 3 ); // !Note! Link Layer Access Point from upnp cfg.
+ connection.Start( prefs, status );
+ }
+ else
+ {
+ connection.Start(status);
+ }
+ User::WaitForRequest(status);
+ RSocket sock1;
+ ret = sock1.Open(ss1,KProxyAddrFamily,KSockDatagram, KProxy);
+ if (ret != KErrNone)
+ {
+ Logger().WriteFormat(_L("Opening socket to the Test Internal Socket Protocol failed with %S"),&EpocErrorToText(ret));
+ }
+ TESTL(ret == KErrNone);
+ //Logger().Close();
+ TRequestStatus stat;
+
+ TProxyProtocolRequest request;
+ request.name.Copy(TestStepName());
+
+ TPckg<TProxyProtocolRequest> requestPckg(request);
+
+ _LIT(PanicStep,"Test21");
+ if (TestStepName() == PanicStep)
+ {
+ doPanicStepTestPreambleL();
+ }
+
+ sock1.Ioctl(KProxyProtocolTestRequest,stat,&requestPckg);
+ User::WaitForRequest(stat);
+ CleanupStack::Pop(&ss1);
+ ss1.Close();
+
+ if (TestStepName() == PanicStep)
+ {
+ doPanicStepTestPostambleL(stat);
+ }
+ else
+ {
+ TESTL(stat == KErrNone);
+ SetTestStepResult(request.result);
+ }
+ return TestStepResult();
+ }
+
+void CTestServerTestStep::doPanicStepTestPreambleL()
+ {
+ // Search for *ESock_Proxy* thread
+ TFindThread findThread(_L("*ESock_Proxy*"));
+ TFullName threadName;
+ TESTL(findThread.Next(threadName) == KErrNone);
+
+ TESTL(iESockProxyThread.Open(findThread) == KErrNone);
+
+ iESockProxyThread.Logon(iESockProxyThreadStatus);
+ }
+
+void CTestServerTestStep::doPanicStepTestPostambleL( TRequestStatus& aStat )
+ {
+ //ESock is expected to have a panic. The Kernel will therefore return KErrAbort
+ TESTL(aStat == KErrAbort);
+
+ User::WaitForRequest(iESockProxyThreadStatus);
+
+ //Test that ESock_Proxy Paniced
+ TESTL(iESockProxyThread.ExitType() == EExitPanic);
+
+ // Test that the Panic Category was "InternalSocket"
+ _LIT(KInternalSocketPanic, "InternalSocket");
+ TESTL(iESockProxyThread.ExitCategory() == KInternalSocketPanic);
+
+ // Test that the Panic Reason was EInternalSocketNotNullSocket (12)
+ TESTL(iESockProxyThread.ExitReason() == ENotNullSocket);
+
+ SetTestStepResult(EPass);
+ }
+
+// extra logging methods
+const TPtrC& CTestServerTestStep::EpocErrorToText(const TInt aErrCode)
+/**
+Convert a Error code to text.
+
+ @param aError error code to display as text.
+ @return Text describing the error.
+ */
+ {
+ // TPtr errText;
+ switch (aErrCode)
+ {
+ case KErrNone:
+ iErrText.Set(_L("KErrNone"));
+ break;
+ case KErrNotFound:
+ iErrText.Set(_L("KErrNotFound"));
+ break;
+ case KErrGeneral:
+ iErrText.Set(_L("KErrGeneral"));
+ break;
+ case KErrCancel:
+ iErrText.Set(_L("KErrCancel"));
+ break;
+ case KErrNoMemory:
+ iErrText.Set(_L("KErrNoMemory"));
+ break;
+ case KErrNotSupported:
+ iErrText.Set(_L("KErrNotSupported"));
+ break;
+ case KErrArgument:
+ iErrText.Set(_L("KErrArgument"));
+ break;
+ case KErrTotalLossOfPrecision:
+ iErrText.Set(_L("KErrTotalLossOfPrecision"));
+ break;
+ case KErrBadHandle:
+ iErrText.Set(_L("KErrBadHandle"));
+ break;
+ case KErrOverflow:
+ iErrText.Set(_L("KErrOverflow"));
+ break;
+ case KErrUnderflow:
+ iErrText.Set(_L("KErrUnderflow"));
+ break;
+ case KErrAlreadyExists:
+ iErrText.Set(_L("KErrAlreadyExists"));
+ break;
+ case KErrPathNotFound:
+ iErrText.Set(_L("KErrPathNotFound"));
+ break;
+ case KErrDied:
+ iErrText.Set(_L("KErrDied"));
+ break;
+ case KErrInUse:
+ iErrText.Set(_L("KErrInUse"));
+ break;
+ case KErrServerTerminated:
+ iErrText.Set(_L("KErrServerTerminated"));
+ break;
+ case KErrServerBusy:
+ iErrText.Set(_L("KErrServerBusy"));
+ break;
+ case KErrCompletion:
+ iErrText.Set(_L("KErrCompletion"));
+ break;
+ case KErrNotReady:
+ iErrText.Set(_L("KErrNotReady"));
+ break;
+ case KErrUnknown:
+ iErrText.Set(_L("KErrUnknown"));
+ break;
+ case KErrCorrupt:
+ iErrText.Set(_L("KErrCorrupt"));
+ break;
+ case KErrAccessDenied:
+ iErrText.Set(_L("KErrAccessDenied"));
+ break;
+ case KErrLocked:
+ iErrText.Set(_L("KErrLocked"));
+ break;
+ case KErrWrite:
+ iErrText.Set(_L("KErrWrite"));
+ break;
+ case KErrDisMounted:
+ iErrText.Set(_L("KErrDisMounted"));
+ break;
+ case KErrEof:
+ iErrText.Set(_L("KErrEof"));
+ break;
+ case KErrDiskFull:
+ iErrText.Set(_L("KErrDiskFull"));
+ break;
+ case KErrBadDriver:
+ iErrText.Set(_L("KErrBadDriver"));
+ break;
+ case KErrBadName:
+ iErrText.Set(_L("KErrBadName"));
+ break;
+ case KErrCommsLineFail:
+ iErrText.Set(_L("KErrCommsLineFail"));
+ break;
+ case KErrCommsFrame:
+ iErrText.Set(_L("KErrCommsFrame"));
+ break;
+ case KErrCommsOverrun:
+ iErrText.Set(_L("KErrCommsOverrun"));
+ break;
+ case KErrCommsParity:
+ iErrText.Set(_L("KErrCommsParity"));
+ break;
+ case KErrTimedOut:
+ iErrText.Set(_L("KErrTimedOut"));
+ break;
+ case KErrCouldNotConnect:
+ iErrText.Set(_L("KErrCouldNotConnect"));
+ break;
+ case KErrCouldNotDisconnect:
+ iErrText.Set(_L("KErrCouldNotDisconnect"));
+ break;
+ case KErrDisconnected:
+ iErrText.Set(_L("KErrDisconnected"));
+ break;
+ case KErrBadLibraryEntryPoint:
+ iErrText.Set(_L("KErrBadLibraryEntryPoint"));
+ break;
+ case KErrBadDescriptor:
+ iErrText.Set(_L("KErrBadDescriptor"));
+ break;
+ case KErrAbort:
+ iErrText.Set(_L("KErrAbort"));
+ break;
+ case KErrTooBig:
+ iErrText.Set(_L("KErrTooBig"));
+ break;
+ case KRequestPending:
+ iErrText.Set(_L("KRequestPending"));
+ break;
+ default:
+ iErrBuff.Format(_L(" %d"),aErrCode);
+ iErrText.Set(iErrBuff.Ptr());
+ break;
+ }
+ return iErrText;
+ }
+