diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/test/TS_MultiHoming/ts_testincomming.cpp --- /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 sockArray; + RArray 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 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; + } +