datacommsserver/esockserver/test/TE_EsockTestSteps/src/SocketServer.TestSteps.cpp
changeset 0 dfb7c4ff071f
--- /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 <commdbconnpref.h>
+#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();
+	}
+
+
+
+