servicediscoveryandcontrol/pnp/test/upnp/unittests/te_serverbase/src/te_serverbaseteststep.cpp
/*
* 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;
}