datacommsserver/esockserver/test/TE_EsockTestSteps/src/Commsdat.TestSteps.cpp
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/src/Commsdat.TestSteps.cpp	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,367 @@
+// 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 ConnectionServer.TestSteps.cpp
+*/
+
+#include "Commsdat.TestSteps.h"
+
+
+using namespace CommsDat;
+using namespace Meta;
+
+
+_LIT(KRecordType, "RecordType");
+_LIT(KRecordId, "RecordId");
+_LIT(KAccessPointRecord, "AccessPointRecord");
+
+// Update record
+//--------------
+CUpdateCommsdatRecordStep::CUpdateCommsdatRecordStep(CCEsockTestBase*& aEsockTest)
+:   CCommsdatTestStep(aEsockTest)
+	{
+	SetTestStepName(KUpdateCommsdatRecordStep);
+	}
+
+TVerdict CUpdateCommsdatRecordStep::doTestStepPreambleL()
+	{
+	// TODO_CDG do we need this preamble here at all?
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TInt CUpdateCommsdatRecordStep::ConfigureFromIni()
+	{
+	// Read in record type name
+	if((GetStringFromConfig(iSection, KRecordType, iRecordTypeName) != 1)
+		|| (iRecordTypeName.Length() == 0))
+		{
+		INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KRecordType);
+		return KErrNotFound;
+		}
+
+	// Read in the record id
+	if(GetIntFromConfig(iSection, KRecordId, iRecordId) != 1)
+		{
+		INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KRecordId);
+		return KErrNotFound;
+		}
+
+    // All ok if we got this far
+    return KErrNone;
+	}
+
+_LIT(KAppSID, "AppSID");
+TVerdict CUpdateCommsdatRecordStep::doSingleTestStep()
+	{
+    // Default to fail
+    SetTestStepResult(EFail);
+    
+    // Open a session with the comms database
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+	CleanupStack::PushL(cmdbSession);
+
+	// Which type of record are we updating
+	if(iRecordTypeName == KAccessPointRecord)
+		{
+		CCDAccessPointRecord *accessPointRecord = (CCDAccessPointRecord*)CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord);
+		CleanupStack::PushL(accessPointRecord);
+
+		// Set the record id first
+		accessPointRecord->SetRecordId(iRecordId);
+		
+		// Set each of the record specific fields
+		TInt tempInt;
+		if(GetIntFromConfig(iSection, KAppSID, tempInt))
+			{
+			// Set the field within the record
+			accessPointRecord->iAppSID = static_cast<TUint>(tempInt);
+			}
+		
+		// Apply the record changes to the database
+		TRAPD(error, accessPointRecord->ModifyL(*cmdbSession);)
+
+		// Don't need the record any more
+		CleanupStack::PopAndDestroy(accessPointRecord);
+
+		if(error != KErrNone)
+			{
+			SetTestStepError(error);
+			INFO_PRINTF2(_L("Deletion of record failed. error:%d"), error);
+			}
+		else
+			{
+			SetTestStepResult(EPass);
+			}
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Invalid or unsupported record type recordType:%S"), &iRecordTypeName);
+		SetTestStepError(KErrNotSupported);
+		}
+
+	// Cleanup and out of here
+	CleanupStack::PopAndDestroy(cmdbSession);
+
+	return TestStepResult();
+	}
+
+
+// Delete record
+//--------------
+CDeleteCommsdatRecordStep::CDeleteCommsdatRecordStep(CCEsockTestBase*& aEsockTest)
+:   CCommsdatTestStep(aEsockTest)
+	{
+	SetTestStepName(KDeleteCommsdatRecordStep);
+	}
+
+TVerdict CDeleteCommsdatRecordStep::doTestStepPreambleL()
+	{
+	// TODO_CDG do we need this preamble here at all?
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TInt CDeleteCommsdatRecordStep::ConfigureFromIni()
+	{
+	// Read in record type name
+	if((GetStringFromConfig(iSection, KRecordType, iRecordTypeName) != 1)
+		|| (iRecordTypeName.Length() == 0))
+		{
+		INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KRecordType);
+		return KErrNotFound;
+		}
+
+	// Read in the record id
+	if(GetIntFromConfig(iSection, KRecordId, iRecordId) != 1)
+		{
+		INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KRecordId);
+		return KErrNotFound;
+		}
+
+    // All ok if we got this far
+    return KErrNone;
+	}
+
+TVerdict CDeleteCommsdatRecordStep::doSingleTestStep()
+	{
+    // Default to fail
+    SetTestStepResult(EFail);
+    
+    // Open a session with the comms database
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+	CleanupStack::PushL(cmdbSession);
+
+	if(iRecordTypeName == KAccessPointRecord)
+		{
+		CCDAccessPointRecord *accessPointRecord = (CCDAccessPointRecord*)CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord);
+		CleanupStack::PushL(accessPointRecord);
+
+		// Set the record id and perform the deletion
+		accessPointRecord->SetRecordId(iRecordId);
+		TRAPD(error, accessPointRecord->DeleteL(*cmdbSession);)
+
+		CleanupStack::PopAndDestroy(accessPointRecord);
+
+		if(error != KErrNone)
+			{
+			SetTestStepError(error);
+			INFO_PRINTF2(_L("Deletion of record failed. error:%d"), error);
+			}
+		else
+			{
+			SetTestStepResult(EPass);
+			}
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Invalid or unsupported record type recordType:%S"), &iRecordTypeName);
+		SetTestStepError(KErrNotSupported);
+		}
+
+	// Cleanup and out of here
+	CleanupStack::PopAndDestroy(cmdbSession);
+
+	return TestStepResult();
+	}
+
+
+
+// Create record
+//--------------
+CCreateCommsdatRecordStep::CCreateCommsdatRecordStep(CCEsockTestBase*& aEsockTest)
+:   CCommsdatTestStep(aEsockTest)
+	{
+	SetTestStepName(KCreateCommsdatRecordStep);
+	}
+
+TVerdict CCreateCommsdatRecordStep::doTestStepPreambleL()
+	{
+	// TODO_CDG do we need this preamble here at all?
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TInt CCreateCommsdatRecordStep::ConfigureFromIni()
+	{
+	// Read in record type name
+	if((GetStringFromConfig(iSection, KRecordType, iRecordTypeName) != 1)
+		|| (iRecordTypeName.Length() == 0))
+		{
+		INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KRecordType);
+		return KErrNotFound;
+		}
+
+	// Read in the record id
+	if(GetIntFromConfig(iSection, KRecordId, iRecordId) != 1)
+		{
+		INFO_PRINTF3(KErrString_MissingConfigFileField, &iSection, &KRecordId);
+		return KErrNotFound;
+		}
+
+    // All ok if we got this far
+    return KErrNone;
+	}
+
+TVerdict CCreateCommsdatRecordStep::doSingleTestStep()
+	{
+    // Default to fail
+    SetTestStepResult(EFail);
+    
+    // Open a session with the comms database
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+	CleanupStack::PushL(cmdbSession);
+
+	// Which type of record are we creating
+	if(iRecordTypeName == KAccessPointRecord)
+		{
+		TInt error;
+		CMDBSession *cmdbSession = NULL;
+		cmdbSession = CMDBSession::NewL(KCDVersion1_2);
+		CleanupStack::PushL(cmdbSession);
+
+		cmdbSession->OpenTransactionL();
+
+		// Create a new record object locally which we will populate provided it doesn't exist already
+		CCDAccessPointRecord *accessPointRecord = (CCDAccessPointRecord*)CCDRecordBase::RecordFactoryL(KCDTIdAccessPointRecord);
+		CleanupStack::PushL(accessPointRecord);
+
+		// Set the record id first
+		accessPointRecord->SetRecordId(iRecordId);
+
+		// See if there is already a record in the database
+		TBool found(0);
+		TRAP(error, found = accessPointRecord->FindL(*cmdbSession););
+
+		if(!found)
+			{
+			TInt tempInt;
+			
+			// iRecordTag
+			if(GetIntFromConfig(iSection, _L("RecordTag"), tempInt))
+				{
+				accessPointRecord->iRecordTag = static_cast<TUint>(tempInt);
+				}
+			
+			// iTier
+			if(GetIntFromConfig(iSection, _L("Tier"), tempInt))
+				{
+				accessPointRecord->iTier = static_cast<TUint>(tempInt);
+				}
+			
+			// iMCpr
+			if(GetIntFromConfig(iSection, _L("MCpr"), tempInt))
+				{
+				accessPointRecord->iMCpr = static_cast<TUint>(tempInt);
+				}
+			
+			// iCpr
+			if(GetIntFromConfig(iSection, _L("Cpr"), tempInt))
+				{
+				accessPointRecord->iCpr = static_cast<TUint>(tempInt);
+				}
+			
+			// iSCpr
+			if(GetIntFromConfig(iSection, _L("SCpr"), tempInt))
+				{
+				accessPointRecord->iSCpr = static_cast<TUint>(tempInt);
+				}
+			
+			// iProtocol
+			if(GetIntFromConfig(iSection, _L("Protocol"), tempInt))
+				{
+				accessPointRecord->iProtocol = static_cast<TUint>(tempInt);
+				}
+			
+			// iCprConfig
+			if(GetIntFromConfig(iSection, _L("CprConfig"), tempInt))
+				{
+				accessPointRecord->iCprConfig = static_cast<TUint>(tempInt);
+				}
+			
+			// iSelectionPolicy
+			if(GetIntFromConfig(iSection, _L("AccessPointSelectionPolicy"), tempInt))
+				{
+				accessPointRecord->iSelectionPolicy = static_cast<TUint>(tempInt);
+				}
+
+			// iAppSID
+			if(GetIntFromConfig(iSection, _L("AppSID"), tempInt))
+				{
+				accessPointRecord->iSelectionPolicy = static_cast<TUint>(tempInt);
+				}
+			
+			// iConfigAPIdList
+			TPtrC tempString;
+			if(GetStringFromConfig(iSection, _L("ConfigAPIdList"), tempString))
+				{
+				accessPointRecord->iConfigAPIdList = tempString;
+				}
+			
+			// Store the new record and commit the transaction
+			// TODO_CDG need to report on failed trapped routines here
+			TRAP(error, accessPointRecord->StoreL(*cmdbSession););
+			TRAP(error, cmdbSession->CommitTransactionL(););
+			}
+
+		cmdbSession->Close();
+		CleanupStack::PopAndDestroy(accessPointRecord);
+		CleanupStack::PopAndDestroy(cmdbSession);
+
+		if(error != KErrNone)
+			{
+			SetTestStepError(error);
+			INFO_PRINTF2(_L("Insertion of new record failed. error:%d"), error);
+			}
+		else
+			{
+			SetTestStepResult(EPass);
+			}
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Invalid or unsupported record type recordType:%S"), &iRecordTypeName);
+		SetTestStepError(KErrNotSupported);
+		}
+
+	// Cleanup and out of here
+	CleanupStack::PopAndDestroy(cmdbSession);
+
+	return TestStepResult();
+	}
+
+
+