linklayerprotocols/pppnif/te_pppsize/src/TestSteps.cpp
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/pppnif/te_pppsize/src/TestSteps.cpp	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,191 @@
+// Copyright (c) 2003-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:
+//
+
+/**
+ @file TestSteps.cpp
+*/
+
+
+#include <e32math.h>
+#include <c32comm.h>
+#include <in_sock.h>
+
+
+#include <test/testexecutelog.h>
+#include "TestSteps.h"
+#include "te_pppsize_server.h"
+
+//
+// Construction/Destruction
+//
+
+CPPPMinMaxMMU::CPPPMinMaxMMU()
+	{
+	SetTestStepName(KPPPMinMaxMMU);
+	}
+
+CPPPMinMaxMMU::~CPPPMinMaxMMU()
+	{ }
+
+void CPPPMinMaxMMU::CommInitL(TBool aEnhanced)
+	{
+    TInt err;
+    TPtrC pdd_name, ldd_name,ldd_fname;
+	INFO_PRINTF1(_L("Loading Comms driver"));
+#if defined (__WINS__)
+	TEST(GetStringFromConfig(_L("CommsDrivers"), _L("WinsPDDname"), pdd_name));
+	TEST(GetStringFromConfig(_L("CommsDrivers"), _L("WinsLDDname"), ldd_name));
+	TEST(GetStringFromConfig(_L("CommsDrivers"), _L("WinsLDDFname"), ldd_fname));
+#else
+	TEST(GetStringFromConfig(_L("CommsDrivers"), _L("ThumbPDDname"), pdd_name));
+	TEST(GetStringFromConfig(_L("CommsDrivers"), _L("ThumbLDDname"), ldd_name));
+	TEST(GetStringFromConfig(_L("CommsDrivers"), _L("ThumbLDDFname"), ldd_fname));
+#endif
+    err=User::LoadPhysicalDevice(pdd_name);
+    if (err!=KErrNone && err!=KErrAlreadyExists) 
+		{
+		User::Leave(err);
+		}
+
+    if (aEnhanced) 
+		{
+		err=User::LoadLogicalDevice(ldd_fname);
+		}
+    else 
+		{
+		err=User::LoadLogicalDevice(ldd_name);
+		}
+    if (err!=KErrNone && err!=KErrAlreadyExists)
+		{
+		User::Leave(err);
+		}
+	}
+
+TVerdict CPPPMinMaxMMU::doTestStepL()
+	{
+	const TInt KMaxMMU = 4000;
+	const TInt KMinMMU = 1;
+
+	TBuf8<KMaxMMU> *sendBuf = new(ELeave) TBuf8<KMaxMMU>();
+	CleanupStack::PushL(sendBuf);
+	
+	TBuf8<KMaxMMU> *recvBuf = new(ELeave) TBuf8<KMaxMMU>();
+	CleanupStack::PushL(recvBuf);
+	
+	TBuf8<KMaxMMU> *recvBuf2 = new(ELeave) TBuf8<KMaxMMU>();
+	CleanupStack::PushL(recvBuf2);
+
+    //initialize COMM
+    //CommInitL(EFalse);
+    
+	//Start Comms server
+// 	_LIT(KPhbkSyncCMI, "phbsync.cmi");
+//    (void)StartC32WithCMISuppressions(KPhbkSyncCMI);
+	
+	SetTestStepResult(EPass);
+    INFO_PRINTF1(_L("Starting: Socket Server\n"));
+    
+    RSocketServ ss;
+
+    // Start the socket server
+    TEST(KErrNone == ss.Connect());
+    RSocket sock;
+    TRequestStatus sta;
+	INFO_PRINTF1(_L("Open a socket\n"));
+    
+    // Get the test address
+    TInetAddr RemAddr(7);
+    TPtrC testAddr;
+	TEST(GetStringFromConfig(_L("AddressInfo"), _L("TestPPPIPAddr"), testAddr));
+	
+    if(testAddr.Length())
+		{
+		RemAddr.Input(testAddr); 
+		}
+    else
+		{
+		INFO_PRINTF1(_L("Test FAILED\nMissing address information in config file: "));
+		return EFail;
+		}
+    
+    // Open a socket
+    TEST(KErrNone == sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp)); 
+    INFO_PRINTF1(_L("Connecting Socket to:"));
+	
+    TBuf<30> printAddr;
+    RemAddr.Output(printAddr);
+	
+    INFO_PRINTF1(printAddr);
+	
+    // Connect a socket
+    sock.Connect(RemAddr,sta);
+	
+    // Wait for Connect to complete
+    User::WaitForRequest(sta);
+    TEST(sta.Int() == 0);
+    
+    TInt iterEnd;
+	GetIntFromConfig(_L("MMUInfo"), _L("TestPPPmaxMMU"), iterEnd);
+    if (iterEnd > KMaxMMU)
+		iterEnd = KMaxMMU;
+	
+    TInt iterStart;
+	GetIntFromConfig(_L("MMUInfo"), _L("TestPPPminMMU"), iterStart);
+    if (iterStart < KMinMMU)
+		iterStart = KMinMMU;
+	
+    TInt i,j;
+    TSockXfrLength recvLen;
+    INFO_PRINTF1(_L("Send/Recv frames"));
+    for(j=iterStart;j<=iterEnd;j++)
+		{
+		sendBuf->Zero();
+		
+		for (i=0;i<j;i++)
+			sendBuf->Append(Math::Random() & 0x7f);
+		
+		INFO_PRINTF2(_L("Sending Packet of Size: %d"),j);
+		// Send data to echo port
+		sock.Write(*sendBuf,sta);
+		User::WaitForRequest(sta);
+		TEST(sta.Int() == 0);
+		i=0;
+		recvBuf->Zero();
+		
+		while(i<j)
+			{
+			// Receive data from echo port
+			sock.RecvOneOrMore(*recvBuf2,0,sta,recvLen); 
+			User::WaitForRequest(sta);
+			TEST(sta.Int() == 0);
+			i += recvBuf2->Length();
+			recvBuf->Append(*recvBuf2);
+			}
+		
+		TEST(KErrNone == recvBuf->Compare(*sendBuf));
+		INFO_PRINTF1(_L("   Received echoed Packet"));
+		}
+    
+    sock.Shutdown(RSocket::EStopOutput,sta);
+    User::WaitForRequest(sta);
+    TEST(sta.Int() == 0);
+    sock.Close();
+    ss.Close();
+
+	CleanupStack::PopAndDestroy(3);
+
+	return TestStepResult();
+	}
+