diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/test/TE_ESock/TestStepEsock.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/test/TE_ESock/TestStepEsock.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,1306 @@ +// 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: +// This contains CTestCase which is the base class for all the TestCase DLLs +// +// + +// EPOC includes +#include + +// Test system includes +#include "TestStepEsock.h" + +TVerdict CTestStepEsock::easyTestStepPostambleL() + { + // For a failed OOM loop, all sockets that have been added to the socket container + // will be closed here. Otherwise, let Test1.15 handle closures. + + if (TestStepResult() == EFail) + { + CloseSockets(); + } + + return EPass; + } + +/** +Gets the (INI file) section name +@param aSectName section name to use if none specified in script +@return section name + */ +const TDesC& CTestStepEsock::SectionName(const TDesC& aSectName) + { + const TDesC §Name = ConfigSection(); + if (sectName.Length() > 0) + return sectName; + else + return aSectName; + } + +TBool CTestStepEsock::GetIpAddressFromConfig(const TDesC &aSectName,const TDesC &aKeyName,TInetAddr &anAddr) + { + TPtrC result; + TBool bRet; + TInt nRet; + + // get string from config file + bRet = GetStringFromConfig(aSectName, aKeyName, result); + + if (bRet) // string was retrieved successfully + { + // convert to IP address + nRet = anAddr.Input(result); + + // if IP address is invalid + if (nRet != KErrNone) + { + // display error message + Logger().WriteFormat(_L("Invalid IP address, section:%S key:%S "), &aSectName, &aKeyName ); + bRet = EFalse; + } + } + + return bRet; + } + +void CTestStepEsock::StripeMem32(TUint *aBuf, TInt aStartPos, TInt aEndPos) +// +// Mark a buffer with repeating byte pattern +// + { + aStartPos >>= 2; + aEndPos >>= 2; + + for (TInt i=aStartPos;ianEndChar) + character=aStartChar; + } + } + +void CTestStepEsock::StripeDes(TDes8 &aBuf, TInt aStartPos, TInt anEndPos, TUint aStartChar, TUint anEndChar, TInt aOffset) + { + StripeMem((TUint8 *)aBuf.Ptr(), aStartPos, anEndPos, aStartChar, anEndChar, aOffset); + } + + + +TInt CTestStepEsock::OpenListeningSocketL(TInetAddr anAddr, TInt &aSockIndex, + TInt aPort, TInt aSize) + { + TInt nRet; + + RSocket sock; + CleanupClosePushL(sock); + + // open a TCP socket + nRet = sock.Open(iEsockSuite->iSocketServer, + KAfInet,KSockStream, KProtocolInetTcp); + + if (nRet != KErrNone) + { + Logger().WriteFormat(_L("Failed to open listening socket: return value = %d"), nRet); + CleanupStack::PopAndDestroy(); + return nRet; + } + + // bind the socket + anAddr.SetPort(aPort); + nRet = sock.Bind(anAddr); + + if (nRet != KErrNone) + { + Logger().WriteFormat(_L("Failed to bind socket: return value = %d"), nRet); + CleanupStack::PopAndDestroy(); + return nRet; + } + + // listen on the socket + nRet = sock.Listen(aSize); + + if (nRet != KErrNone) + { + Logger().WriteFormat(_L("Failed to listen on socket: return value = %d"), nRet); + CleanupStack::PopAndDestroy(); + return nRet; + } + + // store socket handle + aSockIndex = iEsockSuite->AddSocketToListL(sock); + CleanupStack::Pop(); + Logger().WriteFormat(_L("Socket %d listening..."), aSockIndex); + return nRet; + } + + + +TInt CTestStepEsock::OpenActiveSocketL(TInetAddr anAddr, TInt &aSockIndex, + TInt aPort) + { + TInt nRet; + TRequestStatus stat; + + RSocket sock; + CleanupClosePushL(sock); + + // open a TCP socket + nRet = sock.Open(iEsockSuite->iSocketServer, + KAfInet,KSockStream, KProtocolInetTcp); + + if (nRet != KErrNone) + { + Logger().WriteFormat(_L("Failed to open active socket: return value = %d"), nRet); + CleanupStack::PopAndDestroy(); + return nRet; + } + + // set port number + anAddr.SetPort(aPort); + + // make connect request + sock.Connect(anAddr, stat); + User::WaitForRequest(stat); + + nRet = stat.Int(); + if (nRet != KErrNone) + { + Logger().WriteFormat(_L("Failed to connect: return value = %d"), nRet); + CleanupStack::PopAndDestroy(); + return nRet; + } + + // store socket handle + aSockIndex = iEsockSuite->AddSocketToListL(sock); + CleanupStack::Pop(); + Logger().WriteFormat(_L("Socket %d making connection..."), aSockIndex); + return nRet; + } + + +TBool CTestStepEsock::AcceptConnectionL(TInt &aSockIndex, TInt aListenIndex) + { + TInt nRet; + TRequestStatus stat; + + RSocket sock; + CleanupClosePushL(sock); + + // open a blank socket + nRet = sock.Open(iEsockSuite->iSocketServer); + + if (nRet != KErrNone) + { + Logger().WriteFormat(_L("Failed to open blank socket: return value = %d"), nRet); + CleanupStack::PopAndDestroy(); + return nRet; + } + + // accept the connection on the listening socket, pass + // the blank socket as parameter + (iEsockSuite->GetSocketHandle(aListenIndex)).Accept(sock, stat); + + User::WaitForRequest(stat); + nRet = stat.Int(); + + if (nRet != KErrNone) + { + Logger().WriteFormat(_L("Failed to accept connection: return value = %d"), nRet); + CleanupStack::PopAndDestroy(); + return nRet; + } + + // store socket handle + aSockIndex = iEsockSuite->AddSocketToListL(sock); + CleanupStack::Pop(); + Logger().WriteFormat(_L("Socket %d accepting..."), aSockIndex); + return nRet; + } + +/** +Closes all sockets in the socket container. +@param aLoglevel Specifies level of detail for logging of socket closures; + 0 => no logging + */ +void CTestStepEsock::CloseSockets(TUint aLoglevel) + { + TInt nSockets = iEsockSuite->GetSocketListCount(); + + for(TInt i=nSockets; i>0; i--) + { + if (aLoglevel > 1) + Logger().WriteFormat(_L("Closing socket #%d"), i); + iEsockSuite->CloseSocket(i); + } + + if ((aLoglevel > 1) || (aLoglevel > 0 && nSockets > 0)) + Logger().WriteFormat(_L("Closed %d socket(s)"), nSockets); + } + +/** +Attempts to open aNumSockets sockets with the supplied parameters and +stores the successfully opened sockets in the socket container. +@param addrFamily a valid address constant for a protocol family +@param aSockType a valid socket type for the protocol +@param aProtocol a constant which identifies a specific protocol +@param aNumSockets the integral quantity of sockets to open +@return Error code of last attempted socket open: KErrNone if open succeeded, + otherwise one of the other system wide error codes. + */ +TInt CTestStepEsock::OpenSockets(TUint addrFamily, TUint aSockType, TUint aProtocol, TUint aNumSockets) + { + TInt nRet; + TInt i; + for (i = 0; i < aNumSockets; i++) + { + // open a TCP socket + RSocket sock; + nRet = sock.Open(iEsockSuite->iSocketServer, addrFamily, aSockType, aProtocol); + if (KErrNone == nRet) + { + // store socket handle + nRet = iEsockSuite->AddSocketToList(sock); + } + if (nRet != KErrNone) + { + sock.Close(); + break; + } + } + + return nRet; + } + +/** +Attempts to open aNumSockets sockets with the supplied protocol name and +stores the successfully opened sockets in the socket container. +@param aName Name of a protocol +@param aNumSockets the integral quantity of sockets to open +@return Error code of last attempted socket open: KErrNone if open succeeded, + otherwise one of the other system wide error codes. + */ +TInt CTestStepEsock::OpenSockets(const TDesC &aName, TUint aNumSockets) + { + TInt nRet; + TInt i; + for (i = 0; i < aNumSockets; i++) + { + // open a TCP socket + RSocket sock; + nRet = sock.Open(iEsockSuite->iSocketServer, aName); + if (KErrNone == nRet) + { + // store socket handle + nRet = iEsockSuite->AddSocketToList(sock); + } + if (nRet != KErrNone) + { + sock.Close(); + break; + } + } + + return nRet; + } + +/** +Attempts to open aNumSockets null sockets and stores the successfully opened sockets +in the socket container. +@param aNumSockets the integral quantity of sockets to open +@return Error code of last attempted socket open: KErrNone if open succeeded, + otherwise one of the other system wide error codes. + */ +TInt CTestStepEsock::OpenSockets(TUint aNumSockets) + { + TInt nRet; + TInt i; + for (i = 0; i < aNumSockets; i++) + { + // open a TCP socket + RSocket sock; + nRet = sock.Open(iEsockSuite->iSocketServer); + if (KErrNone == nRet) + { + // store socket handle + nRet = iEsockSuite->AddSocketToList(sock); + } + if (nRet != KErrNone) + { + sock.Close(); + break; + } + } + + return nRet; + } + +/** +Attempts to open a minimum number of sockets with the supplied parameters and +stores the successfully opened sockets in the socket container. +@param aSectName an INI file section name +@param addrFamily a valid address constant for a protocol family +@param aSockType a valid socket type for the protocol +@param aProtocol a constant which identifies a specific protocol +@param aNumSockets the integral quantity of sockets to open +@return Number of sockets opened; + otherwise one of the other system wide error codes. + */ +TInt CTestStepEsock::OpenMinSockets(const TDesC &aSectName, TUint addrFamily, TUint aSockType, TUint aProtocol, TUint aMinSockets) + { + TInt ret = KErrNone; + TInt nSockets; + if (!GetIntFromConfig(SectionName(aSectName), _L("numSockets"), nSockets)) + { + nSockets = aMinSockets; + } + nSockets = (nSockets > aMinSockets) ? nSockets : aMinSockets; + + nSockets -= iEsockSuite->GetSocketListCount(); + if (nSockets > 0) + { + ret = OpenSockets(addrFamily, aSockType, aProtocol, nSockets); + } + + return ret; + } + +/** +Attempts to open the required number of connections. +@param aSectName an INI file section name, that may have an entry for the + number of client sockets to use. + If there is no entry, then one client socket is assumed. +@param iSockIndex2 index to 1st client connection end-point +@param iSockIndex3 index to 1st server connection end-point +@return Number of connections opened; + otherwise one of the other system wide error codes. + */ +TInt CTestStepEsock::OpenConnectionsL(const TDesC &aSectName, TInt &aSockIndex2, TInt &aSockIndex3) + { + TInt nConnections; + const TDesC §Name = SectionName(aSectName); + // get number of client sockets to open + if (!GetIntFromConfig(sectName, _L("numSockets"), nConnections)) + { + nConnections = 1; + } + + if (iEsockSuite->GetSocketListCount() != 2 * nConnections + 1) + { + CloseSockets(); + + TInetAddr addrLocal, addrRemote; + // get local ip address + if (!GetIpAddressFromConfig(sectName, _L("ipAddressLocal"), addrLocal)) + { + return KErrNotFound; + } + + // get ip address to connect to (usually loopback) + if (!GetIpAddressFromConfig(sectName, _L("ipAddressRemote"), addrRemote)) + { + return KErrNotFound; + } + + // get port number + TInt port; + if (!GetIntFromConfig(sectName, _L("port"), port)) + { + port = 1; + } + + User::After(1000000); + // open socket and listen for connect requests + TInt sockIndex1; + TInt nRet = OpenListeningSocketL(addrLocal, sockIndex1, port); + if (KErrNone != nRet) + { + return nRet; + } + + // save indices for client and server sockets + aSockIndex2 = sockIndex1 + 1; + aSockIndex3 = aSockIndex2 + 1; + + // for each client socket + TInt sockIndexIgnore; + for (TInt i = 0; i < nConnections; i++) + { + // open active socket and make connect request + nRet = OpenActiveSocketL(addrRemote, sockIndexIgnore, port); + if (KErrNone != nRet) + { + return nRet; + } + + // accept connect request + nRet = AcceptConnectionL(sockIndexIgnore, sockIndex1); + if (KErrNone != nRet) + { + return nRet; + } + } + } + + return nConnections; + } + +TInt CTestStepEsock::SetRoute(TInt aOp, TUint32 aDest, TUint32 aNetMask, TUint32 aGateway, TUint32 aInterface, TInt aMetric) + { + + TPckgBuf info; + info().iType = ERtUser; + info().iState = ERtReady; + info().iMetric = aMetric; + info().iDstAddr.SetAddress(aDest); + info().iNetMask.SetAddress(aNetMask); + info().iGateway.SetAddress(aGateway); + info().iIfAddr.SetAddress(aInterface); + + return iEsockSuite->GetSocketHandle(1).SetOpt(aOp, KSolInetRtCtrl, info); + } + +TInt CTestStepEsock::ListRoutes() + { + TPckgBuf opt; + TInt ret; + TBuf<39> ia, ga, da, nm;// changed from 16 AJH + + ret = iEsockSuite->GetSocketHandle(1).SetOpt(KSoInetEnumRoutes, KSolInetRtCtrl); + if (ret!=KErrNone) + return ret; + + Logger().WriteFormat(_L(" Destination NetMask Gateway Interface")); + while (ret==KErrNone) + { + ret = iEsockSuite->GetSocketHandle(1).GetOpt(KSoInetNextRoute, KSolInetRtCtrl, opt); + if (ret!=KErrNone) + continue; + opt().iDstAddr.OutputWithScope(da); + opt().iNetMask.OutputWithScope(nm); + opt().iGateway.OutputWithScope(ga); + opt().iIfAddr.OutputWithScope(ia); + + Logger().WriteFormat(_L("%15S %15S %15S %15S\n"), &da, &nm, &ga, &ia); + } + return ret==KErrEof ? KErrNone : ret; + } + + +TBool CTestStepEsock::GetAppendixB1() + { + TBool bRet; + TInetAddr addrLocal; + + appendixInArray.Reset(); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress1"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Set IP to Class A Network + appendixInArray.Insert(addrLocal, 0); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress2"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Set IP to Class B Network + appendixInArray.Insert(addrLocal, 1); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress3"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Set IP to Class C Network + appendixInArray.Insert(addrLocal, 2); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress4"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Set IP to Class D Network + appendixInArray.Insert(addrLocal, 3); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress5"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Set IP to Class E Network + appendixInArray.Insert(addrLocal, 4); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress6"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Set IP to Loopback + appendixInArray.Insert(addrLocal, 5); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress7"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Set IP to IsUnspecified - 0.0.0.0 + appendixInArray.Insert(addrLocal, 6); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixB1"), _L("ipAddress8"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // Broadcast Address + // Set IP to Broadcast - 255.255.255.255 + appendixInArray.Insert(addrLocal, 7); + + return ETrue; + } + +TBool CTestStepEsock::GetAppendixB2() + { + TBool bRet; + TInetAddr addrLocal; + + appendixOutArray.Reset(); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet1"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 0); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet2"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 1); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet3"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 2); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet4"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 3); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet5"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 4); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet6"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 5); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet7"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 6); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB2"), _L("subnet8"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 7); + + return ETrue; + } + +TBool CTestStepEsock::GetAppendixB3() + { + TBool bRet; + TInetAddr addrLocal; + + appendixOutArray.Reset(); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId1"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 0); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId2"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 1); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId3"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 2); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId4"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 3); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId5"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 4); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId6"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 5); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId7"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 6); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB3"), _L("networkId8"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 7); + + return ETrue; + } + +TBool CTestStepEsock::GetAppendixB4() + { + TBool bRet; + TInetAddr addrLocal; + + appendixOutArray.Reset(); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId1"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 0); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId2"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 1); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId3"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 2); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId4"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 3); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId5"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 4); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId6"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 5); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId7"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 6); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB4"), _L("networkIdHostId8"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 7); + + return ETrue; + } + +TBool CTestStepEsock::GetAppendixB5() + { + TBool bRet; + TInetAddr addrLocal; + + appendixOutArray.Reset(); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast1"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 0); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast2"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 1); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast3"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 2); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast4"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 3); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast5"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 4); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast6"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 5); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast7"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 6); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB5"), _L("networkIdHostBroadcast8"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 7); + + return ETrue; + } + +TBool CTestStepEsock::GetAppendixB6() + { + TBool bRet; + TInetAddr addrLocal; + + appendixOutArray.Reset(); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast1"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 0); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast2"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 1); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast3"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 2); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast4"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 3); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast5"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 4); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast6"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 5); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast7"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 6); + + // get address + bRet = GetIpAddressFromConfig(_L("AppendixB6"), _L("networkIdHostIdSubnetBroadcast8"), addrLocal); + if (!bRet) + { + // failed to get Address + return EFalse; + } + appendixOutArray.Insert(addrLocal, 7); + + return ETrue; + } + +TBool CTestStepEsock::GetAppendixC1() + { + TBool bRet; + TInetAddr addrLocal; + + appendixInArray.Reset(); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress1"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // add to array + appendixInArray.Insert(addrLocal, ipAddress1); + + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress2"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixInArray.Insert(addrLocal, ipAddress2); + + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress3"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixInArray.Insert(addrLocal, ipAddress3); + + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress4"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixInArray.Insert(addrLocal, ipAddress4); + + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress5"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixInArray.Insert(addrLocal, ipAddress5); + + + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress7"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixInArray.Insert(addrLocal, ipAddress7); + + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress8"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixInArray.Insert(addrLocal, ipAddress8); + + bRet = GetIpAddressFromConfig(_L("AppendixC1"), _L("ipAddress9"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixInArray.Insert(addrLocal, ipAddress9); + + return ETrue; + } + +void CTestStepEsock::GetAppendixC2() + { + + } + +TBool CTestStepEsock::GetAppendixC3() + { + TBool bRet; + TInetAddr addrLocal; + + appendixOutArray.Reset(); + + // get ip address + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress1"), addrLocal); + if (!bRet) + { + // failed to get ipAddress + return EFalse; + } + // add to array + appendixOutArray.Insert(addrLocal, ipAddress1); + + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress2"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixOutArray.Insert(addrLocal, ipAddress2); + + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress3"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixOutArray.Insert(addrLocal, ipAddress3); + + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress4"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixOutArray.Insert(addrLocal, ipAddress4); + + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress5"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixOutArray.Insert(addrLocal, ipAddress5); + + + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress7"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixOutArray.Insert(addrLocal, ipAddress7); + + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress8"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixOutArray.Insert(addrLocal, ipAddress8); + + bRet = GetIpAddressFromConfig(_L("AppendixC3"), _L("ipAddress9"), addrLocal); + if (!bRet) + { + return EFalse; + } + appendixOutArray.Insert(addrLocal, ipAddress9); + + return ETrue; + } + +void CTestStepEsock::GetHostByNameL(TNameRecord& aRecord, const TDesC& aHost) + { + RHostResolver hr; + CleanupClosePushL(hr); + TInt ret = hr.Open(iEsockSuite->iSocketServer, KAfInet, KProtocolInetUdp); + TESTEL(KErrNone == ret, ret); + + aRecord.iName = _L(""); + TInetAddr::Cast(aRecord.iAddr) = TInetAddr(0); + aRecord.iFlags = 0; + TNameEntry hostent(aRecord); + + TRequestStatus stat; + hr.GetByName(aHost, hostent, stat); + User::WaitForRequest(stat); + Logger().WriteFormat(_L("Lookup returned %d"), stat.Int()); + TESTL(stat==KErrNone); + + // wait for 0.1 seconds + User::After(100000); + + aRecord = hostent(); + do + { + if(stat==KErrNone) + { + THostName name; + TInetAddr::Cast(hostent().iAddr).OutputWithScope(name); + Logger().WriteFormat(_L(" Name= \"%S\", Addr= %S Flags "), &hostent().iName, &name); + } + else + { + Logger().WriteFormat(_L("Lookup failed %d\n"), stat.Int()); + break; + } + } while((stat=hr.Next(hostent))!=KErrEof); + + CleanupStack::PopAndDestroy(1, &hr); + } + + +void CTestStepEsock::GetHostByAddrL(TNameRecord& aRecord, const TInetAddr& aAddr) + { + THostName addr; + aAddr.OutputWithScope(addr); + + RHostResolver hr; + CleanupClosePushL(hr); + TInt ret = hr.Open(iEsockSuite->iSocketServer, KAfInet, KProtocolInetUdp); + TESTEL(KErrNone == ret, ret); + + TNameEntry hostent(aRecord); + + TRequestStatus stat; + hr.GetByAddress(aAddr, hostent, stat); + User::WaitForRequest(stat); + Logger().WriteFormat(_L("Lookup returned %d"), stat.Int()); + TESTL(stat==KErrNone); + + // wait for 0.1 seconds + User::After(100000); + + aRecord = hostent(); + do + { + if(stat==KErrNone) + { + THostName name; + TInetAddr::Cast(hostent().iAddr).OutputWithScope(name); + Logger().WriteFormat(_L(" Name= \"%S\", Addr= %S Flags "), &hostent().iName, &name); + } + else + { + Logger().WriteFormat(_L("Lookup failed %d\n"), stat.Int()); + break; + } + } while((stat=hr.Next(hostent))!=KErrEof); + + CleanupStack::PopAndDestroy(1, &hr); + } + + +void CTestStepEsock::GetHostNameL() +// +// Return this host's machine name +// + { + RHostResolver hr; + CleanupClosePushL(hr); + TInt ret = hr.Open(iEsockSuite->iSocketServer, KAfInet, KProtocolInetUdp); + TESTEL(KErrNone == ret, ret); + + TRequestStatus stat; + THostName name; + hr.GetHostName(name, stat); + User::WaitForRequest(stat); + Logger().WriteFormat(_L("Lookup returned %d"), stat.Int()); + TESTL(stat==KErrNone); + + Logger().WriteFormat(_L(" Name= \"%S\"\r"), &name); + + CleanupStack::PopAndDestroy(1, &hr); + } + +void CTestStepEsock::SetHostNameL(const TDesC& aHost) + { + RHostResolver hr; + CleanupClosePushL(hr); + TInt ret = hr.Open(iEsockSuite->iSocketServer, KAfInet, KProtocolInetUdp); + TESTEL(KErrNone == ret, ret); + + ret = hr.SetHostName(aHost); + TESTEL(KErrNone == ret, ret); + + CleanupStack::PopAndDestroy(1, &hr); + } + +void CTestStepEsock::GetHostByNameCancelL(TNameRecord& aRecord, const TDesC& aHost) + { + RHostResolver hr; + CleanupClosePushL(hr); + TInt ret = hr.Open(iEsockSuite->iSocketServer, KAfInet, KProtocolInetUdp); + TESTL(ret==KErrNone); + + aRecord.iName = _L(""); + TInetAddr::Cast(aRecord.iAddr) = TInetAddr(0); + aRecord.iFlags = 0; + TNameEntry hostent(aRecord); + + TRequestStatus stat; + hr.GetByName(aHost, hostent, stat); + hr.Cancel(); + User::WaitForRequest(stat); + + //???? Check + //TESTL(ret==KErrCancel); + + + Logger().WriteFormat(_L("Status of Cancel lookup return address = %d"), stat.Int()); + + CleanupStack::PopAndDestroy(1, &hr); + } +