diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/test/TE_Socket/SocketTestSection21.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/test/TE_Socket/SocketTestSection21.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,153 @@ +// Copyright (c) 2008-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: +// + +// EPOC includes +#include +#include + +// Test system includes +#include "SocketTestSection21.h" +#include + +// Test step 21.1 +const TDesC& CSocketTest21_1::GetTestName() + { + _LIT(ret,"Test21.1"); + return ret; + } + +enum TVerdict CSocketTest21_1::InternalDoTestStepL( void ) + { + TVerdict verdict = EPass; + + Logger().WriteFormat(_L("Test Purpose: Ioctl call with data")); + + // connect to esock + Logger().WriteFormat(_L("Attempting to connect to socket server")); + RSocketServ ss; + TInt ret = OptimalConnect(ss); + CleanupClosePushL(ss); + Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + + Logger().WriteFormat(_L("Open a socket on Dummy Protocol 1")); + RSocket sock; + CleanupClosePushL (sock); + ret = sock.Open(ss,_L("Dummy Protocol 1")); + Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + + Logger().WriteFormat(_L("Issue an Ioctl by passing valid data")); + TBuf8<64> ioctlData; + TRequestStatus status; + sock.Ioctl (KDummyIoctlCompleteWithData, status, &ioctlData); + User::WaitForRequest(status); + TESTL(KErrNone == status.Int()); + TESTL(ioctlData.Compare(KIoctlData()) == 0); + CleanupStack::PopAndDestroy(); // sock + + + Logger().WriteFormat(_L("Open a socket again on Dummy Protocol 1")); + RSocket sock2; + CleanupClosePushL (sock2); + ret = sock2.Open(ss,_L("Dummy Protocol 1")); + Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + Logger().WriteFormat(_L("Issue an Ioctl by passing NULL data")); + TRequestStatus status2; + sock2.Ioctl (KDummyIoctlCompleteWithData, status2, NULL); + User::WaitForRequest(status2); + TESTL(KErrNone == status2.Int()); + CleanupStack::PopAndDestroy(); // sock2 + + CleanupStack::PopAndDestroy(); // ss + + return verdict; + } + +// Test step 21.2 +const TDesC& CSocketTest21_2::GetTestName() + { + _LIT(ret,"Test21.2"); + return ret; + } + +enum TVerdict CSocketTest21_2::InternalDoTestStepL( void ) + { + TVerdict verdict = EPass; + + Logger().WriteFormat(_L("Test Purpose: Connect complete with data")); + + // connect to esock + Logger().WriteFormat(_L("Attempting to connect to socket server")); + RSocketServ ss; + TInt ret = OptimalConnect(ss); + CleanupClosePushL(ss); + Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + + Logger().WriteFormat(_L("Open a socket on Dummy Protocol 3")); + RSocket sock; + CleanupClosePushL (sock); + ret = sock.Open(ss, KDummyThreeName); + Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + + Logger().WriteFormat(_L("Setting sockopt not to complete connect")); + ret = sock.SetOpt(KDummyOptionSetBlockConnectData,28,TRUE); //Block connect + TESTL(KErrNone == ret); + + Logger().WriteFormat(_L("Perform connect")); + TRequestStatus status; + TSockAddr addr; + TBuf8<64> connectedData; + sock.Connect (addr, KNullDesC8(), connectedData, status); + Logger().WriteFormat(_L("Setting sockopt to now complete the connect with data")); + ret = sock.SetOpt(KDummyOptionSetBlockConnectData,28,FALSE); //Unblock Connect + TESTL(KErrNone == ret); + User::WaitForRequest(status); + TESTL(KErrNone == status.Int()); + TESTL(connectedData.Compare(KConnectCompleteData()) == 0); + + CleanupStack::PopAndDestroy(); // sock + + Logger().WriteFormat(_L("Open a socket again on Dummy Protocol 3")); + RSocket sock2; + CleanupClosePushL (sock2); + ret = sock2.Open(ss, KDummyThreeName); + Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + + Logger().WriteFormat(_L("Setting sockopt not to complete connect")); + ret = sock2.SetOpt(KDummyOptionSetBlockConnectData,28,TRUE); //Block connect + TESTL(KErrNone == ret); + + Logger().WriteFormat(_L("Perform connect")); + TRequestStatus status2; + TSockAddr addr2; + sock2.Connect (addr2, status2); + Logger().WriteFormat(_L("Setting sockopt to now complete the connect with data")); + ret = sock2.SetOpt(KDummyOptionSetBlockConnectData,28,FALSE); //Unblock Connect + TESTL(KErrNone == ret); + User::WaitForRequest(status2); + TESTL(KErrNone == status2.Int()); + + CleanupStack::PopAndDestroy(2); // sock, ss + + return verdict; + } + + +