diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/test/TE_EsockTestSteps/src/SocketServer.TestSteps.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/SocketServer.TestSteps.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,553 @@ +// Copyright (c) 2006-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 SocketServer.TestSteps.cpp +*/ + +#include +#include "SocketServer.TestSteps.h" + + +// Create Socket Server +//--------------------- + +CCreateRSocketServStep::CCreateRSocketServStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KCreateRSocketServStep); + } + +TVerdict CCreateRSocketServStep::doTestStepPreambleL() + { + SetTestStepResult(EFail); + + if (iEsockTest==NULL) + iEsockTest = new (ELeave) CCEsockTestBase; + + SetTestStepResult(EPass); + return TestStepResult(); + } + +TInt CCreateRSocketServStep::ConfigureFromIni() + { + iSockServName.Set(KNullDesC); + + // Read in appropriate fields + if((GetStringFromConfig(iSection, KTe_SocketServName, iSockServName) != 1) + || (iSockServName.Length() == 0)) + { + INFO_PRINTF1(_L("Couldn't find appropriate field in config file")); + return KErrNotFound; + } + + // All ok if we got this far + return KErrNone; + } + +TVerdict CCreateRSocketServStep::doSingleTestStep() + { + TInt error = iEsockTest->CreateSocketServer(iSockServName); + if (error!=KErrNone) + { + INFO_PRINTF2(_L("Could not create socket server (%S)."),&iSockServName); + INFO_PRINTF2(_L("Error: %d."),error); + return EFail; + } + return EPass; + } + + + +// Connect Socket Server +//---------------------- + +CConnectRSocketServStep::CConnectRSocketServStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KConnectRSocketServStep); + } + +TInt CConnectRSocketServStep::ConfigureFromIni() + { + iSockServName.Set(KNullDesC); + + // Read in appropriate fields + if((GetStringFromConfig(iSection, KTe_SocketServName, iSockServName) != 1) + || (iSockServName.Length() == 0)) + { + INFO_PRINTF1(_L("Couldn't find appropriate field in config file")); + return KErrNotFound; + } + + // All ok if we got this far + return KErrNone; + } + +TVerdict CConnectRSocketServStep::doSingleTestStep() + { + TInt error = iEsockTest->ConnectSocketServer(iSockServName); + if (error!=KErrNone) + { + INFO_PRINTF2(_L("Could not connect socket server (%S)."),&iSockServName); + INFO_PRINTF2(_L("Error: %d."),error); + return EFail; + } + return EPass; + } + + +// Close Socket Server +//-------------------- + +CCloseRSocketServStep::CCloseRSocketServStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KCloseRSocketServStep); + } + +TInt CCloseRSocketServStep::ConfigureFromIni() + { + iSockServName.Set(KNullDesC); + + if((GetStringFromConfig(iSection, KTe_SocketServName, iSockServName) != 1) + || (iSockServName.Length() == 0)) + { + INFO_PRINTF1(_L("Couldn't find appropriate field in config file")); + return KErrNotFound; + } + + // All ok if we got this far + return KErrNone; + } + +TVerdict CCloseRSocketServStep::doSingleTestStep() + { + TInt error = iEsockTest->CloseSocketServer(iSockServName); + if (error!=KErrNone) + { + INFO_PRINTF2(_L("Could not close socket server (%S)."),&iSockServName); + INFO_PRINTF2(_L("Error: %d."),error); + return EFail; + } + return EPass; + } + + + +// Get number of protocols +//------------------------ + +_LIT(KNumberExpected, "NumberExpected"); +_LIT(KSaveNumberAs, "SaveNumberAs"); + +CSocketServerNumProtocolsStep::CSocketServerNumProtocolsStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KSocketServerNumProtocolsStep); + } + +TInt CSocketServerNumProtocolsStep::ConfigureFromIni() + { + iParams.Reset(); + + // The socket server instance to apply the query to + if(GetStringFromConfig(iSection, KTe_SocketServName, iParams.iSocketServName) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KTe_SocketServName); + return KErrNotFound; + } + + // Expected number of protocols + if (GetIntFromConfig(iSection, KNumberExpected, iParams.iNumberExpected) == 1) + { + iParams.iExpected = ETrue; + } + + // Somewhere to save the number fetched + if(GetStringFromConfig(iSection, KSaveNumberAs, iParams.iSavedAsName) == 1) + { + iParams.iToBeSaved = ETrue; + } + + // Check + if(!iParams.iExpected && !iParams.iToBeSaved) + { + INFO_PRINTF1(_L("Must provide an expected value or a place to save the number fetched.")); + return KErrNotFound; + } + + // All ok if we got this far + return KErrNone; + } + +TVerdict CSocketServerNumProtocolsStep::doSingleTestStep() + { + TInt numProtocols; + + TInt error = iEsockTest->SocketServerNumProtocols(iParams, numProtocols); + if (error != KErrNone) + { + SetTestStepError(error); + INFO_PRINTF3(_L("Could not fetch number of protocols from socket server. socketServer:%S, error:%d"), &iParams.iSocketServName, error); + return EFail; + } + + // Validate against the expected number + if(iParams.iExpected) + { + if(numProtocols == iParams.iNumberExpected) + { + return EPass; + } + else + { + INFO_PRINTF3(_L("Number of protocols differs from that expected. expected:%d, returned:%d"), iParams.iNumberExpected, numProtocols); + return EFail; + } + } + else + { + SetTestStepResult(EPass); + return TestStepResult(); + } + } + + + +// Find protocol +//-------------- + +CSocketServerFindProtocolStep::CSocketServerFindProtocolStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KSocketServerFindProtocolStep); + } + +TInt CSocketServerFindProtocolStep::ConfigureFromIni() + { + iParams.Reset(); + + // The socket server instance to apply the query to + if(GetStringFromConfig(iSection, KTe_SocketServName, iParams.iSocketServName) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KTe_SocketServName); + return KErrNotFound; + } + + TInt descStatus = TProtocolDescriptionParams::FetchDescription(iParams.iProtocolDescParams, *this); + return descStatus; + } + +TVerdict CSocketServerFindProtocolStep::doSingleTestStep() + { + TProtocolDesc desc; + + TInt error = iEsockTest->SocketServerFindProtocol(iParams, desc); + if (error != KErrNone) + { + SetTestStepError(error); + INFO_PRINTF3(_L("Could not fetch protocol description from socket server. socketServer:%S, error:%d"), &iParams.iSocketServName, error); + return EFail; + } + + // Validate against the expected protocol description + if(iParams.iProtocolDescParams.MatchesExpected(desc)) + { + return EPass; + } + else + { + INFO_PRINTF1(_L("Protocol description does not match that expected")); + return EFail; + } + } + + + +// Get protocol info +//------------------ + +CSocketServerGetProtocolInfoStep::CSocketServerGetProtocolInfoStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KSocketServerGetProtocolInfoStep); + } + +_LIT(KIndex, "Index"); + +TInt CSocketServerGetProtocolInfoStep::ConfigureFromIni() + { + iParams.Reset(); + + // The socket server instance to apply the query to + if(GetStringFromConfig(iSection, KTe_SocketServName, iParams.iSocketServName) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KTe_SocketServName); + return KErrNotFound; + } + + // Protocol index + if (GetIntFromConfig(iSection, KIndex, iParams.iProtocolIndex) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, KIndex); + return KErrNotFound; + } + + TInt descStatus = TProtocolDescriptionParams::FetchDescription(iParams.iProtocolDescParams, *this); + return descStatus; + } + +TVerdict CSocketServerGetProtocolInfoStep::doSingleTestStep() + { + TProtocolDesc desc; + + TInt error = iEsockTest->SocketServerGetProtocolInfo(iParams, desc); + if (error != KErrNone) + { + SetTestStepError(error); + INFO_PRINTF3(_L("Could not fetch protocol description from socket server. socketServer:%S, error:%d"), &iParams.iSocketServName, error); + return EFail; + } + + // Validate against the expected protocol description + if(iParams.iProtocolDescParams.MatchesExpected(desc)) + { + return EPass; + } + else + { + INFO_PRINTF1(_L("Protocol description does not match that expected")); + return EFail; + } + } + +// Start protocol +//--------------- +_LIT(KAddrFamily, "AddrFamily"); +_LIT(KProtocol, "Protocol"); +_LIT(KSockType, "SockType"); + + +CSocketServerStartProtocolStep::CSocketServerStartProtocolStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KSocketServerStartProtocolStep); + } + +TInt CSocketServerStartProtocolStep::ConfigureFromIni() + { + iParams.Reset(); + + // The socket server instance to apply the query to + if(GetStringFromConfig(iSection, KTe_SocketServName, iParams.iSocketServName) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KTe_SocketServName); + return KErrNotFound; + } + + // Address family + if (GetIntFromConfig(iSection, KAddrFamily, iParams.iAddrFamily) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KAddrFamily); + return KErrNotFound; + } + + // Protocol + if (GetIntFromConfig(iSection, KProtocol, iParams.iProtocol) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KProtocol); + return KErrNotFound; + } + + // Socket type + if (GetIntFromConfig(iSection, KSockType, iParams.iSockType) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KSockType); + return KErrNotFound; + } + + // All ok if we got this far + return KErrNone; + } + +TVerdict CSocketServerStartProtocolStep::doSingleTestStep() + { + TRequestStatus status; + TInt error = iEsockTest->SocketServerStartProtocol(iParams, status); + if (error != KErrNone) + { + SetTestStepError(error); + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Could not start protocol on socket server. socketServer:%S, error:%d"), &iParams.iSocketServName, error); + return TestStepResult(); + } + + User::WaitForRequest(status); + if (status.Int() != KErrNone) + { + SetTestStepError(error); + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Could not start protocol on socket server. socketServer:%S, error:%d"), &iParams.iSocketServName, error); + } + + // Return the test step result + return TestStepResult(); + } + + + +// Stop protocol +//--------------- +CSocketServerStopProtocolStep::CSocketServerStopProtocolStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KSocketServerStopProtocolStep); + } + +TInt CSocketServerStopProtocolStep::ConfigureFromIni() + { + iParams.Reset(); + + // The socket server instance to apply the query to + if(GetStringFromConfig(iSection, KTe_SocketServName, iParams.iSocketServName) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KTe_SocketServName); + return KErrNotFound; + } + + // Address family + if (GetIntFromConfig(iSection, KAddrFamily, iParams.iAddrFamily) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KAddrFamily); + return KErrNotFound; + } + + // Protocol + if (GetIntFromConfig(iSection, KProtocol, iParams.iProtocol) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KProtocol); + return KErrNotFound; + } + + // Socket type + if (GetIntFromConfig(iSection, KSockType, iParams.iSockType) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KSockType); + return KErrNotFound; + } + + // All ok if we got this far + return KErrNone; + } + +TVerdict CSocketServerStopProtocolStep::doSingleTestStep() + { + TRequestStatus status; + TInt error = iEsockTest->SocketServerStopProtocol(iParams, status); + if (error != KErrNone) + { + SetTestStepError(error); + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Could not stop protocol on socket server. socketServer:%S, error:%d"), &iParams.iSocketServName, error); + return TestStepResult(); + } + + User::WaitForRequest(status); + if (status.Int() != KErrNone) + { + SetTestStepError(error); + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Could not stop protocol on socket server. socketServer:%S, error:%d"), &iParams.iSocketServName, error); + } + + // Return the test step result + return TestStepResult(); + } + + + +// Compare integer values +//----------------------- +_LIT(KValue1, "Value1"); +_LIT(KValue2, "Value2"); +_LIT(KDifference, "Difference"); + +CCompareIntegerValuesStep::CCompareIntegerValuesStep(CCEsockTestBase*& aEsockTest) +: CTe_EsockStepBase(aEsockTest) + { + SetTestStepName(KCompareIntegerValuesStep); + } + +TInt CCompareIntegerValuesStep::ConfigureFromIni() + { + iParams.Reset(); + + // The values to the apply the comparison to + if(GetStringFromConfig(iSection, KValue1, iParams.iValue1) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KValue1); + return KErrNotFound; + } + + if(GetStringFromConfig(iSection, KValue2, iParams.iValue2) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KValue2); + return KErrNotFound; + } + + // The difference to apply + if (GetIntFromConfig(iSection, KDifference, iParams.iDifference) != 1) + { + INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KDifference); + return KErrNotFound; + } + + // All ok if we got this far + return KErrNone; + } + +TVerdict CCompareIntegerValuesStep::doSingleTestStep() + { + TInt result; + TInt error = iEsockTest->CompareIntegerValues(iParams, result); + + if (error != KErrNone) + { + SetTestStepError(error); + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Could not compare compare integer values")); + return TestStepResult(); + } + else + { + if(result == 0) + { + INFO_PRINTF1(_L("Values match.")); + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("Values do not match.")); + SetTestStepResult(EFail); + } + } + // Return the test step result + return TestStepResult(); + } + + + +