--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TS_MultiHoming/ts_testincomming.cpp Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,149 @@
+/*
+* 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:
+*
+*/
+
+
+#include "ts_testincomming.h"
+
+
+
+CTS_TestIncomming::CTS_TestIncomming()
+ {
+ iTestStepName = KTestIncomming;
+ }
+
+CTS_TestIncomming::~CTS_TestIncomming()
+ {
+ }
+
+enum TVerdict CTS_TestIncomming::doTestStepPreambleL(void)
+/**
+ * Implements OOM testing in each test
+ */
+ {
+ if (!(GetBoolFromConfig(KTestIncomming,KOomTest,iIsOOMTest)))
+ iIsOOMTest=EFalse;
+ return EPass;
+ }
+
+
+enum TVerdict CTS_TestIncomming::doTestStepL(void)
+/**
+ * Creates and starts one or more Explicit Connection(s)
+ * and appends it/them to the array of
+ * connections in the MultiHoming Suite
+ * @return The test step outcome.
+ *
+ */
+{
+ TInt err = KErrNone;
+ TInt numOfSockets = 0;
+
+
+ err = GetIntFromConfig(KTestIncomming, KNumOfSocks, numOfSockets);
+
+
+ if ((!err) || (numOfSockets < 1))
+ {
+ return EInconclusive;
+ }
+
+ RArray<CSplitEchoSocket*> sockArray;
+ RArray<TBool> expectSocketsToSucceedArray;
+ TConnDetails *theConn;
+
+ TInt i;
+ for (i = 0; i < numOfSockets; i++)
+ {
+ // Get some configuration data...
+ TInetAddr dest;
+ TInetAddr src;
+
+ TInt protocol = KProtocolInetUdp;
+ TInt packSize = PACKET_SIZE;
+ TInt packCount = NUM_OF_PACKETS;
+ TInt aTol = UDP_TOLERANCE;
+ TBool expectSuccess = ETrue;
+ TBool isListener = EFalse;
+
+
+ err = GetSockConfig(i,protocol,packSize,packCount, aTol, dest, src,
+ expectSuccess, isListener, &theConn);
+
+
+ expectSocketsToSucceedArray.Append(expectSuccess);
+
+ if (err!=KErrNone)
+ {
+ LogExtra((TText8*)__FILE__, __LINE__, ESevrErr, KEConfigFile);
+ }
+
+ CSplitEchoSocket* newSocket = CSplitEchoSocket::NewL();
+
+ err = newSocket->Echo(dest, src, packSize,packCount,protocol,aTol, theConn, i, isListener, this);
+ if (err == KErrNone)
+ {
+ err = sockArray.Append(newSocket);
+ if (err != KErrNone)
+ {
+ newSocket->DoCancel();
+ delete newSocket;
+ newSocket = NULL;
+ }
+ }
+ else
+ {
+ TPtrC Errortxt = EpocErrorToText(err);
+ Log(KELogger, &Errortxt);
+ delete newSocket;
+ }
+ } // for (i<numOfSockets)
+
+
+ if(sockArray.Count() > 0)
+ CEnhancedScheduler::Start(); // And start them off...
+ // Wait for all to finish / time out.
+
+ for (i = 0; i < sockArray.Count(); i++)
+ {
+ TInt err = KErrNone;
+ TBool boolResult = EFalse;
+ TInt percent = 0;
+ TInt numSent = -1;
+ err = sockArray[i]->LogReport(boolResult, numSent, percent);
+ if (expectSocketsToSucceedArray[i] &&
+ (KErrNone == err) && boolResult
+ ||
+ // Failure means there was a socket error or no packets received
+ !expectSocketsToSucceedArray[i] && (KErrNone != err || !boolResult))
+ {
+ Log(KSockPassed, i, numSent, percent);
+ }
+ else
+ {
+ TPtrC errorText = EpocErrorToText(err);
+ Log(KSockFailed, i, &errorText, numSent, percent);
+ iTestStepResult = EFail;
+ }
+ delete sockArray[i];
+ }
+
+
+ expectSocketsToSucceedArray.Close();
+ sockArray.Close();
+ return iTestStepResult;
+ }
+