diff -r 000000000000 -r dfb7c4ff071f commsfwtools/preparedefaultcommsdatabase/te_commsdat/src/commsdatNotificationTests.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsfwtools/preparedefaultcommsdatabase/te_commsdat/src/commsdatNotificationTests.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,1354 @@ +// Copyright (c) 2005-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: +// CCommsdat150Step +// CCommsdat151Step +// CCommsdat152Step +// CCommsdat153Step +// CCommsdat154Step +// CCommsdat155Step +// CCommsdat156Step +// CCommsdat157Step +// CCommsdat158Step +// CCommsdat159Step +// CCommsdat160Step +// CCommsdat161Step +// CCommsdat162Step +// CCommsdat163Step +// CCommsdat164Step +// CCommsdat165Step +// NOTE: +// Ensure that PublishProperties() is called in any tests that need it - relying on +// a previous test having called it and setup the properties for subsequent tests will +// mean that the subsequent tests will fail if ever run in isolation. +// +// + +/** + @file commsdatNotificationTests.cpp +*/ +#include "commsdatNotificationTests.h" +#include "Te_commsdatSuiteDefs.h" +#include "notificationtester.h" +#include "CommsDatInternalDefs.h" +#include +#include +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif + +const TInt KNetworkWeighting = 10; + +CCommsdat150Step::CCommsdat150Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat150Step); + } + +TVerdict CCommsdat150Step::doTestStepL() +/** + * @return - TVerdict code + * + * Testing notification interface during RollBack Transaction; must do CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat150Step::doTestStepL(). Testing notification interface...")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + + record->iNetworkWeighting = KNetworkWeighting; + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL returned %b for record %08x"), found, record->ElementId()); + + if (found) + { + _LIT(KThreadName, "TestThread150"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, record); + CleanupStack::PushL(tester); + TRequestStatus notified; + tester->LogOn(notified); + + TPtrC testBearer(_L("Test Bearer")); + record->iBearerType.SetMaxLengthL(testBearer.Length()); + record->iBearerType = testBearer; + + record->ModifyL(*cmdbSession); + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + cmdbSession->RollbackTransactionL(); + + User::WaitForRequest (notified); + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ERollback) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(tester); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat151Step::CCommsdat151Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat151Step); + } + +TVerdict CCommsdat151Step::doTestStepL() +/** + * @return - TVerdict code + * Test Notification after doing a Modify and Commit. + * CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CCommsdat151Step::doTestStepL() in the file commsdat151Step.cpp")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + record->iNetworkWeighting = KNetworkWeighting; + + INFO_PRINTF1(_L("Finding IAP record...")); + + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL result for record %08x was %b, should be 1"), record->ElementId(), found); + + if (found) + { + _LIT(KThreadName,"TestThread151"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, record); + CleanupStack::PushL(tester); + + TRequestStatus notified; + tester->LogOn(notified); + + INFO_PRINTF1(_L("Set NotificationTester")); + + TPtrC testService(_L("Test Service")); + record->iServiceType.SetMaxLengthL(testService.Length()); + record->iServiceType = testService; + + record->ModifyL(*cmdbSession); + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + cmdbSession->CommitTransactionL(); + + User::WaitForRequest (notified); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ECommit) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(tester); + } + else + { + cmdbSession->CommitTransactionL(); + cmdbSession->Close(); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } +//---------------------------------------------------------------------------------------------------------------- +CCommsdat152Step::CCommsdat152Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat152Step); + } + + +TVerdict CCommsdat152Step::doTestStepL() +/** + * @return - TVerdict code + * test CancelAllNotifications when there are no notifications + * CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat152Step::doTestStepL() and trying to test CancelAllNotifications")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + cmdbSession->OpenTransactionL(); + cmdbSession->CancelAllNotifications(); + cmdbSession->RollbackTransactionL(); + + CleanupStack::PopAndDestroy(cmdbSession); + + SetTestStepResult(EPass); + return TestStepResult(); + } +//---------------------------------------------------------------------------------------------------------------- +CCommsdat153Step::CCommsdat153Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat153Step); + } + +TVerdict CCommsdat153Step::doTestStepL() +/** + * @return - TVerdict code + * test Cancelling a Notification + * CED -i Z:\testdata\configs\te_commsdat_modembearer_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat153Step::doTestStepL() and trying to test CancelAllNotifications")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + cmdbSession->OpenTransactionL(); + + CCDModemBearerRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord)); + CleanupStack::PushL(record); + + record->iDataBits = EData8; + + TBool found = record->FindL(*cmdbSession); + + if(found) + { + _LIT(KThreadName, "TestThread153"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, record); + CleanupStack::PushL(tester); + + TRequestStatus notified; + tester->LogOn(notified); + + INFO_PRINTF1(_L("Set NotificationTester")); + record->iDataBits = EData7; + + record->ModifyL(*cmdbSession); + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + tester->CancelNotification(notified); + + User::WaitForRequest (notified); + + if(tester->iStatus == KErrCancel) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + + CleanupStack::PopAndDestroy(tester); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat154Step::CCommsdat154Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat154Step); + } + +TVerdict CCommsdat154Step::doTestStepL() +/** + * @return - TVerdict code + * + * Testing notification interface while Closing a session; must do CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat154Step::doTestStepL(). Testing notification interface...")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + + record->iNetworkWeighting = KNetworkWeighting; + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL returned %b for record %08x"), found, record->ElementId()); + + if (found) + { + _LIT(KThreadName, "TestThread154"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, record); + CleanupStack::PushL(tester); + TRequestStatus notified; + tester->LogOn(notified); + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + cmdbSession->Close(); + + User::WaitForRequest (notified); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::EClose) + { + SetTestStepResult(EPass); + } + CleanupStack::PopAndDestroy(tester); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat155Step::CCommsdat155Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat155Step); + } + + +TVerdict CCommsdat155Step::doTestStepL() +/** + * @return - TVerdict code + * Test notification on linked records with modifying records + * CED -i Z:\testdata\configs\te_commsdat_wap_access_sms.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Testing notification over linked records CCommsdat155Step::doTestStepL() ")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDWAPAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord)); + + apRecord->SetRecordId(41); + + TPtrC name(_L("Voda")); + apRecord->iWAPCurrentBearer.SetMaxLengthL(name.Length()); + apRecord->iWAPCurrentBearer = name; + + apRecord->LoadL(*cmdbSession); + + _LIT(KThreadName, "TestThread155"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName,cmdbSession, apRecord); + CleanupStack::PushL(tester); + + TRequestStatus notified; + tester->LogOn(notified); + + CCDWAPSMSBearerRecord* sbRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPSMSBearerRecord)); + CleanupStack::PushL(sbRecord); + + sbRecord->SetRecordId(1); + sbRecord->iWAPAccessPointId = apRecord->RecordId(); + sbRecord->iWAPAccessPointId.iLinkedRecord = apRecord; + sbRecord->LoadL(*cmdbSession); + + CMDBElement* linkToAPRecord = sbRecord->iWAPAccessPointId.iLinkedRecord; + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + _LIT(KWapBearer, "ArbitraryName"); + if(linkToAPRecord != NULL) + { + static_cast(linkToAPRecord)->iWAPCurrentBearer.SetL(KWapBearer); + static_cast(linkToAPRecord)->ModifyL(*cmdbSession); + cmdbSession->CommitTransactionL(); + } + + User::WaitForRequest(notified); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ECommit) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(sbRecord); + CleanupStack::PopAndDestroy(tester); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat156Step::CCommsdat156Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat156Step); + } + +TVerdict CCommsdat156Step::doTestStepL() +/** + * @return - TVerdict code + * Test notification on linked records with modifying links + * CED -i Z:\testdata\configs\te_commsdat_wap_access_sms.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Testing notification over linked records CCommsdat156Step::doTestStepL() ")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDWAPAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord)); + + apRecord->SetRecordId(41); + + TPtrC name(_L("Voda")); + apRecord->iWAPCurrentBearer.SetMaxLengthL(name.Length()); + apRecord->iWAPCurrentBearer = name; + apRecord->LoadL(*cmdbSession); + + _LIT(KThreadName, "TestThread156"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, apRecord); + CleanupStack::PushL(tester); + + TRequestStatus notified; + tester->LogOn(notified); + + CCDWAPSMSBearerRecord* sbRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPSMSBearerRecord)); + CleanupStack::PushL(sbRecord); + + sbRecord->SetRecordId(1); + sbRecord->iWAPAccessPointId = apRecord->RecordId(); + sbRecord->iWAPAccessPointId.iLinkedRecord = apRecord; + sbRecord->LoadL(*cmdbSession); + + CMDBElement* linkToAPRecord = sbRecord->iWAPAccessPointId.iLinkedRecord; + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + _LIT(KWapBearer, "ArbitraryName"); + if(linkToAPRecord != NULL) + { + static_cast(linkToAPRecord)->iWAPCurrentBearer.SetL(KWapBearer); + static_cast(linkToAPRecord)->iWAPCurrentBearer.ModifyL(*cmdbSession); + cmdbSession->CommitTransactionL(); + } + + User::WaitForRequest(notified); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ECommit) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(sbRecord); + CleanupStack::PopAndDestroy(tester); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat157Step::CCommsdat157Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat157Step); + } + + +TVerdict CCommsdat157Step::doTestStepL() +/** + * @return - TVerdict code + * Test notification on linked records with deleting records + * CED -i Z:\testdata\configs\te_commsdat_wap_access_sms.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Testing notification over linked records CCommsdat157Step::doTestStepL() ")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + CCDWAPAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord)); + + apRecord->SetRecordId(41); + + TPtrC name(_L("Voda")); + apRecord->iWAPCurrentBearer.SetMaxLengthL(name.Length()); + apRecord->iWAPCurrentBearer = name; + + apRecord->LoadL(*cmdbSession); + + _LIT(KThreadName, "TestThread157"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, apRecord); + CleanupStack::PushL(tester); + + TRequestStatus notified; + tester->LogOn(notified); + + CCDWAPSMSBearerRecord* sbRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPSMSBearerRecord)); + CleanupStack::PushL(sbRecord); + + sbRecord->SetRecordId(1); + sbRecord->iWAPAccessPointId = apRecord->RecordId(); + sbRecord->iWAPAccessPointId.iLinkedRecord = apRecord; + + TBool found = sbRecord->FindL(*cmdbSession); + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + if(found) + { + CMDBElement* linkToAPRecord = sbRecord->iWAPAccessPointId.iLinkedRecord; + if(linkToAPRecord != NULL) + { + static_cast(linkToAPRecord)->DeleteL(*cmdbSession); + } + } + + User::WaitForRequest(notified); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ECommit) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + + CleanupStack::PopAndDestroy(sbRecord); + CleanupStack::PopAndDestroy(tester); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat158Step::CCommsdat158Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat158Step); + } + +TVerdict CCommsdat158Step::doTestStepL() +/** + * @return - TVerdict code + * Test notification on linked records with deleting fields + * CED -i Z:\testdata\configs\te_commsdat_wap_access_sms.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Testing notification over linked records CCommsdat158Step::doTestStepL() ")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + CCDWAPAccessPointRecord* apRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord)); + + apRecord->SetRecordId(41); + + TPtrC name(_L("Voda")); + apRecord->iWAPCurrentBearer.SetMaxLengthL(name.Length()); + apRecord->iWAPCurrentBearer = name; + + apRecord->LoadL(*cmdbSession); + + _LIT(KThreadName, "TestThread158"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, apRecord); + CleanupStack::PushL(tester); + + TRequestStatus notified; + tester->LogOn(notified); + + CCDWAPSMSBearerRecord* sbRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdWAPSMSBearerRecord)); + CleanupStack::PushL(sbRecord); + + sbRecord->SetRecordId(1); + sbRecord->iWAPAccessPointId = apRecord->RecordId(); + sbRecord->iWAPAccessPointId.iLinkedRecord = apRecord; + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + TBool found = sbRecord->FindL(*cmdbSession); + if(found ) + { + CMDBElement* linkToAPRecord = sbRecord->iWAPAccessPointId.iLinkedRecord; + if(linkToAPRecord != NULL) + { + static_cast(linkToAPRecord)->iWAPCurrentBearer.DeleteL(*cmdbSession); + } + } + + User::WaitForRequest(notified); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ECommit) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + + CleanupStack::PopAndDestroy(sbRecord); + CleanupStack::PopAndDestroy(tester); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } +//--------------------------------------------------------------------------------------------------------------- +CCommsdat159Step::CCommsdat159Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat159Step); + } + + +TVerdict CCommsdat159Step::doTestStepL() +/** + * @return - TVerdict code + * test CancelAllNotifications when there are no notifications + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Testing transaction behaviour in CCommsdat159Step::doTestStepL() ")); + + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + TRAPD(rollbackErr, cmdbSession->RollbackTransactionL()); // should give KErrAlreadyInTransaction + INFO_PRINTF2(_L("Rollback without transaction returns : %d"), rollbackErr); + if(rollbackErr == KErrNotFound) + { + SetTestStepResult(EPass); + } + + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//---------------------------------------------------------------------------------------------------------------- +CCommsdat160Step::CCommsdat160Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat160Step); + } + + +TVerdict CCommsdat160Step::doTestStepL() +/** + * @return - TVerdict code + * .tests type operator RECORD_TYPE with different data types. + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CCommsdat160Step::doTestStepL() in the file commsdat160Step.cpp")); + + //Initialisation of ptrIapRecord and ptrService + + CCDIAPRecord* ptrIapRecord = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(ptrIapRecord); + CCDServiceRecordBase* ptrService = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord)); + + TInt testVal = 10; + + ptrService->iServiceEnableLlmnr = ETrue;//ptrService is used to access iServiceEnableLlmnr of type TBool + ptrIapRecord->iService.iLinkedRecord = ptrService;//ptrIapRecord is used to access iService of type CCDServiceRecordBase + ptrIapRecord->iService = testVal; // ptrService is used to access SetRecordId of type TInt + ptrService = NULL; + + + //Checking if type operators are working + TInt serviceId = ptrIapRecord->iService; + TESTL(serviceId == testVal); //accessing integer value + + + CCDServiceRecordBase* ptrIapService = ptrIapRecord->iService; + if(ptrIapService->iServiceEnableLlmnr) + { + SetTestStepResult(EPass); //accesing Boolean value + } + + CleanupStack::PopAndDestroy(ptrIapRecord); + + + + return TestStepResult(); + } + +//------------------------------------------------------------------------------------------------------------------------------------------- + +CCommsdat161Step::CCommsdat161Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat161Step); + } + +TVerdict CCommsdat161Step::doTestStepL() +/** + * @return - TVerdict code + * + * Testing notification interface. Request notification using one session instance and change database with another one. Must do CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat161Step::doTestStepL(). Testing notification interface...")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties (doing it on one session is enough) + cmdbSession->PublishProperties(); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession2 = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession2 = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession2); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + + record->iNetworkWeighting = KNetworkWeighting; + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL returned %b for record %08x"), found, record->ElementId()); + + if (found) + { + _LIT(KThreadName, "TestThread161"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession2, record); + CleanupStack::PushL(tester); + TRequestStatus notified; + tester->LogOn(notified); + + TPtrC testBearer(_L("Test Bearer")); + record->iBearerType.SetMaxLengthL(testBearer.Length()); + record->iBearerType = testBearer; + + record->ModifyL(*cmdbSession); + + if(tester->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + cmdbSession->RollbackTransactionL(); + + User::WaitForRequest (notified); + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ERollback) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(tester); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession2); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//------------------------------------------------------------------------------------------------------------------------------------------- + +CCommsdat162Step::CCommsdat162Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat162Step); + } + +TVerdict CCommsdat162Step::doTestStepL() +/** + * @return - TVerdict code + * + * Testing notification interface. Request notification by several different clients. Check that all are completed. Must do CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat162Step::doTestStepL(). Testing notification interface...")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + + record->iNetworkWeighting = KNetworkWeighting; + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL returned %b for record %08x"), found, record->ElementId()); + + if (found) + { + _LIT(KThreadName, "TestThread162"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, record); + CleanupStack::PushL(tester); + TRequestStatus notified; + tester->LogOn(notified); + + _LIT(KThreadName1, "TestThread162_1"); + CNotificationTester *tester1 = CNotificationTester::NewL(KThreadName1, cmdbSession, record); + CleanupStack::PushL(tester1); + TRequestStatus notified1; + tester1->LogOn(notified1); + + _LIT(KThreadName2, "TestThread162_2"); + CNotificationTester *tester2 = CNotificationTester::NewL(KThreadName2, cmdbSession, record); + CleanupStack::PushL(tester2); + TRequestStatus notified2; + tester2->LogOn(notified2); + + + TPtrC testBearer(_L("Test Bearer")); + record->iBearerType.SetMaxLengthL(testBearer.Length()); + record->iBearerType = testBearer; + + record->ModifyL(*cmdbSession); + + if(tester->IsAdded() && tester1->IsAdded() && tester2->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + cmdbSession->RollbackTransactionL(); + + User::WaitForRequest (notified); + User::WaitForRequest (notified1); + User::WaitForRequest (notified2); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && tester1->iStatus == KErrNone && tester2->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ERollback) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(tester2); + CleanupStack::PopAndDestroy(tester1); + CleanupStack::PopAndDestroy(tester); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//------------------------------------------------------------------------------------------------------------------------------------------- + +CCommsdat163Step::CCommsdat163Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat163Step); + } + +TVerdict CCommsdat163Step::doTestStepL() +/** + * @return - TVerdict code + * + * Testing notification interface. Request notification by several different clients and then cancel prticular one. Check that all are completed. Must do CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + * + * NOTE: this test seems to require step 162 to have been run. + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat163Step::doTestStepL(). Testing notification interface...")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + + record->iNetworkWeighting = KNetworkWeighting; + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL returned %b for record %08x"), found, record->ElementId()); + + if (found) + { + _LIT(KThreadName, "TestThread163"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, record); + CleanupStack::PushL(tester); + TRequestStatus notified; + tester->LogOn(notified); + + _LIT(KThreadName1, "TestThread163_1"); + CNotificationTester *tester1 = CNotificationTester::NewL(KThreadName1, cmdbSession, record); + CleanupStack::PushL(tester1); + TRequestStatus notified1; + tester1->LogOn(notified1); + + _LIT(KThreadName2, "TestThread163_2"); + CNotificationTester *tester2 = CNotificationTester::NewL(KThreadName2, cmdbSession, record); + CleanupStack::PushL(tester2); + TRequestStatus notified2; + tester2->LogOn(notified2); + + + TPtrC testBearer(_L("Test Bearer")); + record->iBearerType.SetMaxLengthL(testBearer.Length()); + record->iBearerType = testBearer; + + record->ModifyL(*cmdbSession); + + if(tester->IsAdded() && tester1->IsAdded() && tester2->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + tester1->CancelNotification(notified1); + + cmdbSession->RollbackTransactionL(); + + User::WaitForRequest (notified); + User::WaitForRequest (notified1); + User::WaitForRequest (notified2); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrNone && tester1->iStatus == KErrCancel && tester2->iStatus == KErrNone && testEvtType == TCDNotifiableEvent::ERollback) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(tester2); + CleanupStack::PopAndDestroy(tester1); + CleanupStack::PopAndDestroy(tester); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//------------------------------------------------------------------------------------------------------------------------------------------- + +CCommsdat164Step::CCommsdat164Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat164Step); + } + +TVerdict CCommsdat164Step::doTestStepL() +/** + * @return - TVerdict code + * + * Testing notification interface. Request notification by several different clients and then cancel all. Check that all are completed. Must do CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + * + * NOTE: this test seems to require step 163 to have been performed. + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat164Step::doTestStepL(). Testing notification interface...")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + + record->iNetworkWeighting = KNetworkWeighting; + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL returned %b for record %08x"), found, record->ElementId()); + + if (found) + { + _LIT(KThreadName, "TestThread164"); + CNotificationTester *tester = CNotificationTester::NewL(KThreadName, cmdbSession, record); + CleanupStack::PushL(tester); + TRequestStatus notified; + tester->LogOn(notified); + + _LIT(KThreadName1, "TestThread164_1"); + CNotificationTester *tester1 = CNotificationTester::NewL(KThreadName1, cmdbSession, record); + CleanupStack::PushL(tester1); + TRequestStatus notified1; + tester1->LogOn(notified1); + + _LIT(KThreadName2, "TestThread164_2"); + CNotificationTester *tester2 = CNotificationTester::NewL(KThreadName2, cmdbSession, record); + CleanupStack::PushL(tester2); + TRequestStatus notified2; + tester2->LogOn(notified2); + + + TPtrC testBearer(_L("Test Bearer")); + record->iBearerType.SetMaxLengthL(testBearer.Length()); + record->iBearerType = testBearer; + + record->ModifyL(*cmdbSession); + + if(tester->IsAdded() && tester1->IsAdded() && tester2->IsAdded()) + { + INFO_PRINTF1(_L("added to active scheduler")); + } + else + { + INFO_PRINTF1(_L("not added to active scheduler")); + } + + cmdbSession->CancelAllNotifications(); + + User::WaitForRequest (notified); + User::WaitForRequest (notified1); + User::WaitForRequest (notified2); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(tester->iStatus == KErrCancel && tester1->iStatus == KErrCancel && tester2->iStatus == KErrCancel && testEvtType == TCDNotifiableEvent::EClose) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + CleanupStack::PopAndDestroy(tester2); + CleanupStack::PopAndDestroy(tester1); + CleanupStack::PopAndDestroy(tester); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//------------------------------------------------------------------------------------------------------------------------------------------- + +CCommsdat165Step::CCommsdat165Step() +/** + * Constructor + */ + { + SetTestStepName(KCommsdat165Step); + } + +TVerdict CCommsdat165Step::doTestStepL() +/** + * @return - TVerdict code + * + * Testing notification interface. Request notification by a client twice or more. Must do CED -i Z:\testdata\configs\te_commsdat_iap_table1.cfg + */ + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("I am in CCommsdat165Step::doTestStepL(). Testing notification interface...")); + +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_2); +#else + CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1); +#endif + CleanupStack::PushL(cmdbSession); + + // need to define P&S properties + cmdbSession->PublishProperties(); + + cmdbSession->OpenTransactionL(); + + CCDIAPRecord *record = static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); + CleanupStack::PushL(record); + + record->iNetworkWeighting = KNetworkWeighting; + TBool found = record->FindL(*cmdbSession); + + INFO_PRINTF3(_L("FindL returned %b for record %08x"), found, record->ElementId()); + + if (found) + { + TRequestStatus notified; + + record->RequestNotification(*cmdbSession, notified); + record->RequestNotification(*cmdbSession, notified); + record->RequestNotification(*cmdbSession, notified); + + TPtrC testBearer(_L("Test Bearer")); + record->iBearerType.SetMaxLengthL(testBearer.Length()); + record->iBearerType = testBearer; + + record->ModifyL(*cmdbSession); + + cmdbSession->RollbackTransactionL(); + + User::WaitForRequest (notified); + + TInt testEvtType = 0; + RProperty::Get(KUidSystemCategory, KUidCommDbNotificationEvent.iUid, testEvtType); + + if(notified == KErrNone && testEvtType == TCDNotifiableEvent::ERollback) + { + SetTestStepResult(EPass); + } + + cmdbSession->Close(); + } + + CleanupStack::PopAndDestroy(record); + CleanupStack::PopAndDestroy(cmdbSession); + + return TestStepResult(); + } + +//-------------------------------------------------------------------------------------------------------------------------------------------