--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_Socket/SocketTestSection20.cpp Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,422 @@
+// Copyright (c) 1997-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 ESock Test cases from section 20
+//
+//
+
+
+
+#include <e32base.h>
+#include "SocketTestSection20.h"
+#include "ES_DUMMY.H"
+#include <es_sock.h>
+#include <es_mbuf.h>
+#include <es_prot.h>
+#include <e32test.h>
+#include <comms-infras/nifif.h>
+#include <es_mbuf.h>
+#include <ss_pman.h>
+#include <ss_glob.h>
+#include <agenterrors.h>
+
+enum options
+ {
+ KOOM = 0,
+ KEndOOM = 1,
+ };
+
+enum level
+ {
+ KHigh = 0,
+ KLow = 1,
+ };
+
+const TInt KDesBufSize = 50;
+
+
+// Test step 20.1
+const TDesC& CSocketTest20_1::GetTestName()
+ {
+ _LIT(ret,"Test20.1");
+ return ret;
+ }
+
+enum TVerdict CSocketTest20_1::InternalDoTestStepL( void )
+ {
+ // Create socket, connect and then shutdown using
+ TVerdict verdict = EFail;
+ Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Shutdown.... KSIConnectData Protocol"));
+
+ // Connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+ TInt ret = ss.Connect();
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(ss);
+
+ // Create and open socket on TCP protocol
+ RSocket socket1;
+ Logger().WriteFormat(_L("Opening Socket 1"));
+ ret = socket1.Open(ss, KAfInet, KSockStream, KProtocolInetTcp);
+ TESTL(KErrNone == ret);
+ Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret));
+ CleanupClosePushL(socket1);
+
+ // Create Ports for Socket and socket to connect to
+ const TInt KSocket2Port = 3881;
+ _LIT(KLoopback, "127.0.0.1");
+ _LIT(KLocal, "0.0.0.0");
+
+ // Set the local address of Socket1
+ TInetAddr socket1Addr;
+ socket1Addr.SetPort(KSocket2Port);
+ socket1Addr.Input(KLocal);
+ ret = socket1.Bind(socket1Addr);
+
+ // Set remote address for socket
+ TInetAddr socket2Addr;
+ socket2Addr.SetPort(KSocket2Port);
+ socket2Addr.Input(KLoopback);
+
+ // Connect socket1 to remote address
+ TRequestStatus connectSocket1Status;
+ Logger().WriteFormat(_L("Connecting Socket1 "));
+ socket1.Connect(socket2Addr, connectSocket1Status);
+ User::WaitForRequest(connectSocket1Status);
+ Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int()));
+ TESTL(connectSocket1Status == KErrNone);
+
+ // Shutdown the Socket
+ Logger().WriteFormat(_L("Shutting down Connection on Socket1"));
+ TRequestStatus shutdownStatus;
+ _LIT8(desOut, "Some test stuff to send to protocol");
+ TBuf8<KDesBufSize> desIn;
+ socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus);
+ User::WaitForRequest(shutdownStatus);
+ Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int()));
+ if(shutdownStatus == KErrNone)
+ {
+ verdict = EPass;
+ }
+
+ // Clean up the Server side objects
+ CleanupStack::PopAndDestroy(&socket1);
+ CleanupStack::PopAndDestroy(&ss);
+ SetTestStepResult(verdict);
+ return verdict;
+ }
+
+
+// Test step 20.2
+const TDesC& CSocketTest20_2::GetTestName()
+ {
+ _LIT(ret,"Test20.2");
+ return ret;
+ }
+
+enum TVerdict CSocketTest20_2::InternalDoTestStepL( void )
+ {
+ // Create socket, connect and then shutdown using
+ TVerdict verdict = EFail;
+ Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Shutdown... KSIConnectionless Protocol"));
+
+ // Connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+ TInt ret = ss.Connect();
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(ss);
+
+
+ // Create and open socket on TCP protocol
+ RSocket socket1;
+ Logger().WriteFormat(_L("Opening Socket 1"));
+ ret = socket1.Open(ss, KAfInet, KSockDatagram, KProtocolInetUdp);
+ Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(socket1);
+
+ // Create Ports for Socket and socket to connect to
+ const TInt KSocket2Port = 3881;
+ _LIT(KLoopback, "127.0.0.1");
+ _LIT(KLocal, "0.0.0.0");
+
+ // Set the local address of Socket1
+ TInetAddr socket1Addr;
+ socket1Addr.SetPort(KSocket2Port);
+ socket1Addr.Input(KLocal);
+ ret = socket1.Bind(socket1Addr);
+
+ // Set remote address for socket
+ TInetAddr socket2Addr;
+ socket2Addr.SetPort(KSocket2Port);
+ socket2Addr.Input(KLoopback);
+
+ // Connect socket1 to remote address
+ TRequestStatus connectSocket1Status;
+ Logger().WriteFormat(_L("Connecting Socket1 "));
+ socket1.Connect(socket2Addr, connectSocket1Status);
+ User::WaitForRequest(connectSocket1Status);
+ Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int()));
+ TESTL(connectSocket1Status == KErrNone);
+
+ // Shutdown the Socket
+ Logger().WriteFormat(_L("Shutting down Connection on Socket1"));
+ TRequestStatus shutdownStatus;
+ _LIT8(desOut, "Some test data to send to protocol");
+ TBuf8<KDesBufSize> desIn;
+ socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus);
+ User::WaitForRequest(shutdownStatus);
+ Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int()));
+ if(shutdownStatus == KErrNone)
+ {
+ verdict = EPass;
+ }
+
+
+ // Clean up the Server side objects
+ CleanupStack::PopAndDestroy(&socket1);
+ CleanupStack::PopAndDestroy(&ss);
+ SetTestStepResult(verdict);
+ return verdict;
+ }
+
+
+// Test step 20.3
+const TDesC& CSocketTest20_3::GetTestName()
+ {
+ _LIT(ret,"Test20.3");
+ return ret;
+ }
+
+enum TVerdict CSocketTest20_3::InternalDoTestStepL( void )
+ {
+ // Create socket, shutdown socket then connect
+ TVerdict verdict = EFail;
+ Logger().WriteFormat(_L("Test Purpose: Shutdown Socket, then attempt to connect"));
+
+ // Connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+ TInt ret = ss.Connect();
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(ss);
+
+
+ // Create and open socket on TCP protocol
+ RSocket socket1;
+ Logger().WriteFormat(_L("Opening Socket 1"));
+ ret = socket1.Open(ss, KAfInet, KSockStream, KProtocolInetTcp);
+ Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(socket1);
+
+ // Create Ports for Socket and socket to connect to
+ const TInt KSocket2Port = 3881;
+ _LIT(KLoopback, "127.0.0.1");
+ _LIT(KLocal, "0.0.0.0");
+
+ // Set the local address of Socket1
+ TInetAddr socket1Addr;
+ socket1Addr.SetPort(KSocket2Port);
+ socket1Addr.Input(KLocal);
+ ret = socket1.Bind(socket1Addr);
+
+ // Set remote address for socket
+ TInetAddr socket2Addr;
+ socket2Addr.SetPort(KSocket2Port);
+ socket2Addr.Input(KLoopback);
+
+
+ // Shutdown the Socket
+ Logger().WriteFormat(_L("Shutting down Connection on Socket1"));
+ TRequestStatus shutdownStatus;
+ _LIT8(desOut, "Some test stuff to send to protocol");
+ TBuf8<KDesBufSize> desIn;
+ socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus);
+ User::WaitForRequest(shutdownStatus);
+ Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int()));
+
+ // Connect socket1 to remote address
+ TRequestStatus connectSocket1Status;
+ Logger().WriteFormat(_L("Connecting Socket1 "));
+ socket1.Connect(socket2Addr, connectSocket1Status);
+ User::WaitForRequest(connectSocket1Status);
+ Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int()));
+ if(connectSocket1Status == KErrBadHandle)
+ {
+ verdict = EPass;
+ }
+
+ // Clean up the Server side objects
+ CleanupStack::PopAndDestroy(&socket1);
+ CleanupStack::PopAndDestroy(&ss);
+ SetTestStepResult(verdict);
+ return verdict;
+ }
+
+
+
+// Test step 20.4
+const TDesC& CSocketTest20_4::GetTestName()
+ {
+ _LIT(ret,"Test20.4");
+ return ret;
+ }
+
+enum TVerdict CSocketTest20_4::InternalDoTestStepL( void )
+ {
+ // Create socket, connect and then shutdown using
+ TVerdict verdict = EFail;
+ Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Get DisconnectData.... KSIConnectionless Protocol"));
+
+ // Connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+ TInt ret = ss.Connect();
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(ss);
+
+ // Create and open socket on UDP protocol
+ RSocket socket1;
+ Logger().WriteFormat(_L("Opening Socket 1"));
+ ret = socket1.Open(ss, KAfInet, KSockDatagram, KProtocolInetUdp);
+ Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(socket1);
+
+ // Create Ports for Socket and socket to connect to
+ const TInt KSocket2Port = 3881;
+ _LIT(KLoopback, "127.0.0.1");
+ _LIT(KLocal, "0.0.0.0");
+
+ // Set the local address of Socket1
+ TInetAddr socket1Addr;
+ socket1Addr.SetPort(KSocket2Port);
+ socket1Addr.Input(KLocal);
+ ret = socket1.Bind(socket1Addr);
+
+ // Set remote address for socket
+ TInetAddr socket2Addr;
+ socket2Addr.SetPort(KSocket2Port);
+ socket2Addr.Input(KLoopback);
+
+ // Connect socket1 to remote address
+ TRequestStatus connectSocket1Status;
+ Logger().WriteFormat(_L("Connecting Socket1 "));
+ socket1.Connect(socket2Addr, connectSocket1Status);
+ User::WaitForRequest(connectSocket1Status);
+ Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int()));
+ TESTL(KErrNone == connectSocket1Status.Int());
+
+ TBuf8<KDesBufSize> desIn;
+ ret = socket1.GetDisconnectData(desIn);
+ if(ret == KErrNotSupported)
+ {
+ verdict = EPass;
+ }
+
+ // Clean up the Server side objects
+ CleanupStack::PopAndDestroy(&socket1);
+ CleanupStack::PopAndDestroy(&ss);
+ SetTestStepResult(verdict);
+ return verdict;
+ }
+
+
+// Test step 20.5
+const TDesC& CSocketTest20_5::GetTestName()
+ {
+ _LIT(ret,"Test20.5");
+ return ret;
+ }
+
+enum TVerdict CSocketTest20_5::InternalDoTestStepL( void )
+ {
+ // Create socket, connect, disconnect and then GetDisconnectData
+ TVerdict verdict = EFail;
+ Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Get DisconnectData.... KSIConnectData Protocol"));
+
+ // Connect to esock
+ Logger().WriteFormat(_L("Attempting to connect to socket server"));
+ RSocketServ ss;
+ TInt ret = ss.Connect();
+ Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(ss);
+
+ // Create and open socket on Dummy protocol
+ RSocket socket1;
+ Logger().WriteFormat(_L("Opening Socket 1"));
+ ret = socket1.Open(ss, KDummyAddrFamily, KSockSeqPacket, KDummyThree);
+ Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret));
+ TESTL(KErrNone == ret);
+ CleanupClosePushL(socket1);
+
+ // Create Ports for Socket and socket to connect to
+ const TInt KSocket2Port = 3881;
+ _LIT(KLoopback, "127.0.0.1");
+ _LIT(KLocal, "0.0.0.0");
+
+ // Set the local address of Socket1
+ TInetAddr socket1Addr;
+ socket1Addr.SetPort(KSocket2Port);
+ socket1Addr.Input(KLocal);
+ ret = socket1.Bind(socket1Addr);
+
+ // Set remote address for socket
+ TInetAddr socket2Addr;
+ socket2Addr.SetPort(KSocket2Port);
+ socket2Addr.Input(KLoopback);
+
+ // Connect socket1 to remote address
+ TRequestStatus connectSocket1Status;
+ Logger().WriteFormat(_L("Connecting Socket1 "));
+ socket1.Connect(socket2Addr, connectSocket1Status);
+ User::WaitForRequest(connectSocket1Status);
+ Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int()));
+ if(connectSocket1Status != KErrNone)
+ {
+ return EFail;
+ }
+
+ // Get disconnect data
+ TBuf8<KDesBufSize> desIn;
+ ret = socket1.GetDisconnectData(desIn);
+ if(ret == KErrNotFound)
+ {
+ verdict = EPass;
+ }
+
+ // Clean up the Server side objects
+ CleanupStack::PopAndDestroy(&socket1);
+ CleanupStack::PopAndDestroy(&ss);
+ SetTestStepResult(verdict);
+ return verdict;
+ }
+
+
+
+
+
+
+
+
+
+
+