sl@0: // Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: #include "t_logutil2.h" sl@0: sl@0: /* sl@0: This test may fail occasionally, especially after changing the LogEng server code. The reported error is KErrCorrupt. sl@0: The typical scenario when the test fails is: sl@0: 1) Some of the test functions calls "__FILE_FAILNEXT(failCount++)" sl@0: 2) The test calls some CLogClient method, typically "aClient.GetEventType()". sl@0: 3) The statement "test(active->iStatus == KErrNone)" fails. sl@0: This behaviour might be related to INC044553 "DBMS does not handle OOD error sl@0: scenarios correctly when committing a transaction". sl@0: "__FILE_FAILNEXT" is a macro, which calls theFs.SetErrorCondition(KErrGeneral, X). sl@0: If you perform a search with "SetErrorCondition" keyword in "Programming" database, you will find sl@0: some explanations that the programmer has to be careful when using SetErrorCondition() method, sl@0: because: sl@0: sl@0: "You have to be careful if you use this in the same way as you do for heap testing, because you sl@0: can get the file system in a state where it think the file you're working on is corrupted." sl@0: sl@0: Anyway, LOGENG server internally uses DBMS component. Calling SetErrorCondition() we test DBMS sl@0: component actually not LOGENG component! sl@0: There is one addidtional thing in the test, which makes me believing that the problem is not sl@0: in LOGENG but in SetErrorCondition()/DBMS interaction - in many if the test functions a statement sl@0: like: sl@0: sl@0: if (failCount == 5) sl@0: failCount++; sl@0: sl@0: may be found. I think that it is there to prevent exactly the problem with sl@0: SetErrorCondition()/DBMS interaction. sl@0: */ sl@0: sl@0: RTest TheTest(_L("t_logfile")); sl@0: sl@0: const TUid KTestEventUid = {0x10005393}; sl@0: _LIT(KTestEventDesc1, "Event Type Description"); sl@0: _LIT(KTestEventDesc2, "Changed Event Description"); sl@0: _LIT(KTestRemoteParty1, "Remote Party"); sl@0: _LIT(KTestRemoteParty2, "Changed Remote Party"); sl@0: _LIT(KTestDirection1, "Direction"); sl@0: _LIT(KTestDirection2, "Changed Direction"); sl@0: const TLogDurationType KTestDurationType1 = 1; sl@0: const TLogDurationType KTestDurationType2 = 2; sl@0: const TLogDuration KTestDuration1 = 0x1234; sl@0: const TLogDuration KTestDuration2 = 0x1234567; sl@0: _LIT(KTestStatus1, "Status"); sl@0: _LIT(KTestStatus2, "Changed Status"); sl@0: _LIT(KTestSubject1, "Subject"); sl@0: _LIT(KTestSubject2, "Changed Subject"); sl@0: _LIT(KTestNumber1, "Number"); sl@0: _LIT(KTestNumber2, "Changed Number"); sl@0: const TLogContactItemId KTestContact1 = 0x1234; sl@0: const TLogContactItemId KTestContact2 = 0x1234567; sl@0: const TLogLink KTestLink1 = 0x1234; sl@0: const TLogLink KTestLink2 = 0x1234567; sl@0: _LIT8(KTestData1, "ABCDEFGH"); sl@0: _LIT8(KTestData2, "IJKLMNOPQRSTUVWXYZ"); sl@0: const TLogSize KTestMaxLogSize = 0xFFF; sl@0: const TLogRecentSize KTestMaxRecentLogSize = 0xF; sl@0: const TLogAge KTestMaxEventAge = 0xFFFFFFF; sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-1334 sl@0: @SYMTestCaseDesc Basic test to add events sl@0: @SYMTestPriority High sl@0: @SYMTestActions Tests for CLogClient::AddEvent() function sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestBasicL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-1334 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: CLogEvent* event = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event); sl@0: sl@0: TTime now; sl@0: now.UniversalTime(); sl@0: sl@0: event->SetEventType(KLogCallEventTypeUid); sl@0: sl@0: active->StartL(); sl@0: aClient.AddEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TEST(event->EventType() == KLogCallEventTypeUid); sl@0: TEST(event->Description().Length() > 0); sl@0: TEST(event->Time() >= now); sl@0: now = event->Time(); sl@0: sl@0: TLogId id = event->Id(); sl@0: sl@0: event->SetRemoteParty(KTestRemoteParty1); sl@0: event->SetDirection(KTestDirection1); sl@0: event->SetDurationType(KTestDurationType1); sl@0: event->SetDuration(KTestDuration1); sl@0: event->SetStatus(KTestStatus1); sl@0: event->SetSubject(KTestSubject1); sl@0: event->SetNumber(KTestNumber1); sl@0: event->SetContact(KTestContact1); sl@0: event->SetLink(KTestLink1); sl@0: event->SetDataL(KTestData1); sl@0: sl@0: active->StartL(); sl@0: aClient.ChangeEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TEST(event->Id() == id); sl@0: TEST(event->EventType() == KLogCallEventTypeUid); sl@0: TEST(event->Description().Length() > 0); sl@0: TEST(event->Time() == now); sl@0: TEST(event->RemoteParty() == KTestRemoteParty1); sl@0: TEST(event->Direction() == KTestDirection1); sl@0: TEST(event->DurationType() == KTestDurationType1); sl@0: TEST(event->Duration() == KTestDuration1); sl@0: TEST(event->Status() == KTestStatus1); sl@0: TEST(event->Subject() == KTestSubject1); sl@0: TEST(event->Number() == KTestNumber1); sl@0: TEST(event->Contact() == KTestContact1); sl@0: TEST(event->Link() == KTestLink1); sl@0: TEST(event->Data() == KTestData1); sl@0: sl@0: CleanupStack::PopAndDestroy(); // event; sl@0: sl@0: event = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event); sl@0: sl@0: event->SetId(id); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(),KErrNone); sl@0: sl@0: TEST(event->Id() == id); sl@0: TEST(event->EventType() == KLogCallEventTypeUid); sl@0: TEST(event->Description().Length() > 0); sl@0: TEST(event->Time() == now); sl@0: TEST(event->RemoteParty() == KTestRemoteParty1); sl@0: TEST(event->Direction() == KTestDirection1); sl@0: TEST(event->DurationType() == KTestDurationType1); sl@0: TEST(event->Duration() == KTestDuration1); sl@0: TEST(event->Status() == KTestStatus1); sl@0: TEST(event->Subject() == KTestSubject1); sl@0: TEST(event->Number() == KTestNumber1); sl@0: TEST(event->Contact() == KTestContact1); sl@0: TEST(event->Link() == KTestLink1); sl@0: TEST(event->Data() == KTestData1); sl@0: sl@0: active->StartL(); sl@0: aClient.DeleteEvent(id, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(),KErrNone); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // event, active sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0911 sl@0: @SYMTestCaseDesc Tests for new CLogClient object creation sl@0: @SYMTestPriority High sl@0: @SYMTestActions Create a new CLogClient check for memory errors sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestConstructionL() sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0911 ")); sl@0: CLogClient* client = NULL; sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: TheTest.Printf(_L("%d\r\n"), failCount); sl@0: sl@0: if(failCount > 8) sl@0: { sl@0: TRAP(error, client = CLogClient::NewL(theFs)); sl@0: TEST2(error, KErrNone); sl@0: TestBasicL(*client); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: TRAP(error, client = CLogClient::NewL(theFs)); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNone) sl@0: { sl@0: finished = ETrue; sl@0: TestBasicL(*client); sl@0: } sl@0: else sl@0: { sl@0: TEST2(error, KErrNoMemory); sl@0: TestUtils::DeleteDatabaseL(); sl@0: } sl@0: } sl@0: sl@0: delete client; sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0912 sl@0: @SYMTestCaseDesc Adding an event type test, sl@0: Tests for CLogClient::AddEventType() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while adding event types sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestAddEventTypeL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0912 ")); sl@0: CLogEventType* type = CLogEventType::NewL(); sl@0: CleanupStack::PushL(type); sl@0: sl@0: type->SetUid(KTestEventUid); sl@0: type->SetDescription(KTestEventDesc1); sl@0: type->SetLoggingEnabled(ETrue); sl@0: sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: error = KErrNone; sl@0: if(failCount == 8) sl@0: { sl@0: aClient.AddEventType(*type, active->iStatus); sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: aClient.AddEventType(*type, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: error = active->iStatus.Int(); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNoMemory) sl@0: { sl@0: active->StartL(); sl@0: aClient.GetEventType(*type, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: } sl@0: else sl@0: TEST2(error, KErrNone); sl@0: sl@0: } sl@0: sl@0: active->StartL(); sl@0: aClient.AddEventType(*type, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrAlreadyExists); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // active, type sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0913 sl@0: @SYMTestCaseDesc Getting an event type test. sl@0: Tests for CLogClient::GetEventType() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while getting event types sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestGetEventTypeL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0913 ")); sl@0: CLogEventType* type = CLogEventType::NewL(); sl@0: CleanupStack::PushL(type); sl@0: sl@0: type->SetUid(KTestEventUid); sl@0: sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: sl@0: while(!finished) sl@0: { sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: aClient.GetEventType(*type, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: { sl@0: TEST2(active->iStatus.Int(), KErrNoMemory); sl@0: TEST(type->Description() == KNullDesC); sl@0: } sl@0: sl@0: __FILE_RESET; sl@0: } sl@0: sl@0: TEST(type->Uid() == KTestEventUid); sl@0: TEST(type->Description() == KTestEventDesc1); sl@0: TEST(type->LoggingEnabled()); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // active, type sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0914 sl@0: @SYMTestCaseDesc Changing an event type test, sl@0: Tests for CLogClient::ChangeEventType() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while changing event types sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestChangeEventTypeL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0914 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: CLogEventType* type = CLogEventType::NewL(); sl@0: CleanupStack::PushL(type); sl@0: sl@0: type->SetUid(KTestEventUid); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: error = KErrNone; sl@0: sl@0: type->SetDescription(KTestEventDesc2); sl@0: type->SetLoggingEnabled(EFalse); sl@0: sl@0: if(failCount == 8) sl@0: { sl@0: aClient.ChangeEventType(*type, active->iStatus); sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: aClient.ChangeEventType(*type, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: error = active->iStatus.Int(); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNoMemory) sl@0: { sl@0: active->StartL(); sl@0: aClient.GetEventType(*type, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TEST(type->Description() == KTestEventDesc1); sl@0: TEST(type->LoggingEnabled()); sl@0: } sl@0: else sl@0: TEST2(error, KErrNone); sl@0: } sl@0: sl@0: type->SetUid(KTestEventUid); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEventType(*type, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TEST(type->Uid() == KTestEventUid); sl@0: TEST(type->Description() == KTestEventDesc2); sl@0: TEST(type->LoggingEnabled() == EFalse); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // type, active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0915 sl@0: @SYMTestCaseDesc Deleting an event type test sl@0: Tests for CLogClient::DeleteEventType() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while deleting event types sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestDeleteEventTypeL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0915 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: CLogEventType* type = CLogEventType::NewL(); sl@0: CleanupStack::PushL(type); sl@0: sl@0: type->SetUid(KTestEventUid); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: error = KErrNone; sl@0: sl@0: if(failCount == 8) sl@0: { sl@0: aClient.DeleteEventType(KTestEventUid, active->iStatus); sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: aClient.DeleteEventType(KTestEventUid, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: error = active->iStatus.Int(); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNoMemory) sl@0: { sl@0: active->StartL(); sl@0: aClient.GetEventType(*type, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: } sl@0: else sl@0: TEST2(error, KErrNone); sl@0: } sl@0: sl@0: active->StartL(); sl@0: aClient.GetEventType(*type, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // type, active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0916 sl@0: @SYMTestCaseDesc Adding an event test, sl@0: Tests for CLogClient::AddEvent() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while adding event sl@0: Tests for no error conditons,and the event information sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestAddEventL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0916 ")); sl@0: // Ensure we always start from the same state sl@0: TestUtils::DeleteDatabaseL(); sl@0: sl@0: CLogEventType* type = CLogEventType::NewL(); sl@0: CleanupStack::PushL(type); sl@0: sl@0: type->SetUid(KTestEventUid); sl@0: type->SetDescription(KTestEventDesc1); sl@0: type->SetLoggingEnabled(ETrue); sl@0: sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: active->StartL(); sl@0: aClient.AddEventType(*type, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: CLogEvent* event = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event); sl@0: sl@0: TTime now; sl@0: now.UniversalTime(); sl@0: sl@0: event->SetEventType(KTestEventUid); sl@0: event->SetRemoteParty(KTestRemoteParty1); sl@0: event->SetDirection(KTestDirection1); sl@0: event->SetDurationType(KTestDurationType1); sl@0: event->SetDuration(KTestDuration1); sl@0: event->SetStatus(KTestStatus1); sl@0: event->SetSubject(KTestSubject1); sl@0: event->SetNumber(KTestNumber1); sl@0: event->SetContact(KTestContact1); sl@0: event->SetLink(KTestLink1); sl@0: event->SetDataL(KTestData1); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: error = KErrNone; sl@0: sl@0: if(failCount == 8) sl@0: { sl@0: aClient.AddEvent(*event, active->iStatus); sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: aClient.AddEvent(*event, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: error = active->iStatus.Int(); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNoMemory) sl@0: { sl@0: event->SetId(0); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: event->SetId(KLogNullId); sl@0: } sl@0: else sl@0: TEST2(error, KErrNone); sl@0: } sl@0: sl@0: TEST(event->Id() == 0); sl@0: TEST(event->Time() >= now); sl@0: TEST(event->Description() == KTestEventDesc1); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: CleanupStack::PopAndDestroy(3); // event, active, type sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0917 sl@0: @SYMTestCaseDesc Get an events' information test sl@0: Tests for CLogClient::GetEvent() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while getting an event sl@0: Tests for no error conditons,and the event information. sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestGetEventL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0917 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: CLogEvent* event = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event); sl@0: sl@0: event->SetId(0); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: sl@0: while(!finished) sl@0: { sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: TEST2(active->iStatus.Int(), KErrNoMemory); sl@0: sl@0: __FILE_RESET; sl@0: } sl@0: sl@0: TEST(event->Id() == 0); sl@0: TEST(event->Time() > TTime(0)); sl@0: TEST(event->Description() == KTestEventDesc1); sl@0: TEST(event->EventType() == KTestEventUid); sl@0: TEST(event->RemoteParty() == KTestRemoteParty1); sl@0: TEST(event->Direction() == KTestDirection1); sl@0: TEST(event->DurationType() == KTestDurationType1); sl@0: TEST(event->Duration() == KTestDuration1); sl@0: TEST(event->Status() == KTestStatus1); sl@0: TEST(event->Subject() == KTestSubject1); sl@0: TEST(event->Number() == KTestNumber1); sl@0: TEST(event->Contact() == KTestContact1); sl@0: TEST(event->Link() == KTestLink1); sl@0: TEST(event->Data() == KTestData1); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // event, active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0918 sl@0: @SYMTestCaseDesc Changing an event type test sl@0: Tests for CLogClient::ChangeEvent() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while changing an event sl@0: Tests for no error conditons,and the event information for the changed event sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestChangeEventL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0918 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: CLogEvent* event = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event); sl@0: sl@0: TTime now; sl@0: now.UniversalTime(); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: error = KErrNone; sl@0: sl@0: event->SetId(0); sl@0: event->SetTime(now); sl@0: event->SetRemoteParty(KTestRemoteParty2); sl@0: event->SetDirection(KTestDirection2); sl@0: event->SetDurationType(KTestDurationType2); sl@0: event->SetDuration(KTestDuration2); sl@0: event->SetStatus(KTestStatus2); sl@0: event->SetSubject(KTestSubject2); sl@0: event->SetNumber(KTestNumber2); sl@0: event->SetContact(KTestContact2); sl@0: event->SetLink(KTestLink2); sl@0: event->SetDataL(KTestData2); sl@0: sl@0: if(failCount == 14) sl@0: { sl@0: aClient.ChangeEvent(*event, active->iStatus); sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: aClient.ChangeEvent(*event, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: error = active->iStatus.Int(); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNoMemory) sl@0: { sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: if (active->iStatus != KErrNone) sl@0: TheTest.Printf(_L("\nerror code:%d failcount:%d\n"),active->iStatus.Int(),failCount); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TEST(event->Id() == 0); sl@0: TEST(event->Time() > TTime(0)); sl@0: TEST(event->Description() == KTestEventDesc1); sl@0: TEST(event->EventType() == KTestEventUid); sl@0: TEST(event->RemoteParty() == KTestRemoteParty1); sl@0: TEST(event->Direction() == KTestDirection1); sl@0: TEST(event->DurationType() == KTestDurationType1); sl@0: TEST(event->Duration() == KTestDuration1); sl@0: TEST(event->Status() == KTestStatus1); sl@0: TEST(event->Subject() == KTestSubject1); sl@0: TEST(event->Number() == KTestNumber1); sl@0: TEST(event->Contact() == KTestContact1); sl@0: TEST(event->Link() == KTestLink1); sl@0: TEST(event->Data() == KTestData1); sl@0: } sl@0: else sl@0: TEST2(error, KErrNone); sl@0: } sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TEST(event->Id() == 0); sl@0: TEST(event->Time() == now); sl@0: TEST(event->Description() == KTestEventDesc1); sl@0: TEST(event->EventType() == KTestEventUid); sl@0: TEST(event->RemoteParty() == KTestRemoteParty2); sl@0: TEST(event->Direction() == KTestDirection2); sl@0: TEST(event->DurationType() == KTestDurationType2); sl@0: TEST(event->Duration() == KTestDuration2); sl@0: TEST(event->Status() == KTestStatus2); sl@0: TEST(event->Subject() == KTestSubject2); sl@0: TEST(event->Number() == KTestNumber2); sl@0: TEST(event->Contact() == KTestContact2); sl@0: TEST(event->Link() == KTestLink2); sl@0: TEST(event->Data() == KTestData2); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // event, active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0919 sl@0: @SYMTestCaseDesc Deleting an event test, sl@0: Tests for CLogClient::DeleteEvent() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while deleting an event sl@0: Tests for ErrNone flag. sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestDeleteEventL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0919 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: CLogEvent* event = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event); sl@0: sl@0: event->SetId(0); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: error = KErrNone; sl@0: sl@0: if(failCount == 10) sl@0: { sl@0: aClient.DeleteEvent(0, active->iStatus); sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: aClient.DeleteEvent(0, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: error = active->iStatus.Int(); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNoMemory) sl@0: { sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: } sl@0: else sl@0: TEST2(error, KErrNone); sl@0: } sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: CleanupStack::PopAndDestroy(2); // event, active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0920 sl@0: @SYMTestCaseDesc Getting the Log Engine configuration information test sl@0: Tests for CLogClient::GetConfig() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while getting the configuration data sl@0: Tests for ErrNone flag.Tests for the retrieved information sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestGetConfigL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0920 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: TLogConfig config; sl@0: sl@0: TEST(config.iMaxEventAge == 0); sl@0: TEST(config.iMaxLogSize == 0); sl@0: TEST(config.iMaxRecentLogSize == 0); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: sl@0: while(!finished) sl@0: { sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: aClient.GetConfig(config, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: TEST2(active->iStatus.Int(), KErrNoMemory); sl@0: sl@0: __FILE_RESET; sl@0: } sl@0: sl@0: TEST(config.iMaxEventAge > 0); sl@0: TEST(config.iMaxLogSize > 0); sl@0: TEST(config.iMaxRecentLogSize > 0); sl@0: sl@0: CleanupStack::PopAndDestroy(); // active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0921 sl@0: @SYMTestCaseDesc Changing the configuration of Log Engine test, sl@0: Tests for CLogClient::ChangeConfig() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while changing the log engine configuration data sl@0: Tests for ErrNone error conditons.Tests for the changed configuration data sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestChangeConfigL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0921 ")); sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: TLogConfig configOld; sl@0: sl@0: active->StartL(); sl@0: aClient.GetConfig(configOld, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TLogConfig config; sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: error = KErrNone; sl@0: sl@0: config.iMaxLogSize = KTestMaxLogSize; sl@0: config.iMaxRecentLogSize = KTestMaxRecentLogSize; sl@0: config.iMaxEventAge = KTestMaxEventAge; sl@0: sl@0: if(failCount == 11) sl@0: { sl@0: aClient.ChangeConfig(config, active->iStatus); sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: finished = ETrue; sl@0: continue; sl@0: } sl@0: sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: aClient.ChangeConfig(config, active->iStatus); sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: error = active->iStatus.Int(); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNoMemory) sl@0: { sl@0: active->StartL(); sl@0: aClient.GetConfig(config, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TEST(config.iMaxLogSize == configOld.iMaxLogSize); sl@0: TEST(config.iMaxRecentLogSize == configOld.iMaxRecentLogSize); sl@0: TEST(config.iMaxEventAge == configOld.iMaxEventAge); sl@0: } sl@0: else sl@0: TEST2(error, KErrNone); sl@0: } sl@0: sl@0: TEST(config.iMaxLogSize == KTestMaxLogSize); sl@0: TEST(config.iMaxRecentLogSize == KTestMaxRecentLogSize); sl@0: TEST(config.iMaxEventAge == KTestMaxEventAge); sl@0: sl@0: CleanupStack::PopAndDestroy(); // active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0922 sl@0: @SYMTestCaseDesc Getting a standard string from the specified resource file test sl@0: Tests for CLogClient::GetString() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Check for file failure errors while changing the log engine configuration data sl@0: Check for ErrNone flag.Tests for general errors,and retrieved string length. sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: LOCAL_C void TestGetStringL(CLogClient& aClient) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0922 ")); sl@0: TBuf str; sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: TInt error; sl@0: sl@0: while(!finished) sl@0: { sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: error = aClient.GetString(str, R_LOG_DIR_IN); sl@0: sl@0: __FILE_RESET; sl@0: sl@0: if (error == KErrNone) sl@0: { sl@0: finished = ETrue; sl@0: TEST(str.Length() > 0); sl@0: } sl@0: else sl@0: { sl@0: TEST2(error, KErrNoMemory); sl@0: TEST(str.Length() == 0); sl@0: } sl@0: } sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-LOGENG-CT-0923 sl@0: @SYMTestCaseDesc Clearing the Log Event test. sl@0: Tests for CLogClient::ClearLog() function sl@0: @SYMTestPriority High sl@0: @SYMTestActions Add 4 events to the event log,check for ErrNone flag sl@0: Clear the log by calling CLogClient::ClearLog() function. sl@0: Try for getting the added 4 events.Check for not found error. sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ12748 sl@0: */ sl@0: LOCAL_C void TestClearEventLogL(CLogClient& aClient sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: , TBool aUseSimId = EFalse sl@0: #endif sl@0: ) sl@0: { sl@0: TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0923 ")); sl@0: TTime now; sl@0: now.UniversalTime(); sl@0: sl@0: TDateTime dt(now.DateTime()); sl@0: dt.SetYear(dt.Year() - 1); sl@0: TTime date1(dt); sl@0: sl@0: dt.SetYear(dt.Year() - 1); sl@0: TTime date2(dt); sl@0: sl@0: CTestActive* active = new(ELeave)CTestActive(); sl@0: CleanupStack::PushL(active); sl@0: sl@0: CLogEvent* event1 = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event1); sl@0: event1->SetEventType(KTestEventUid); sl@0: sl@0: active->StartL(); sl@0: aClient.AddEvent(*event1, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: event1->SetTime(date1); sl@0: sl@0: active->StartL(); sl@0: aClient.ChangeEvent(*event1, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: CLogEvent* event2 = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event2); sl@0: event2->SetEventType(KTestEventUid); sl@0: sl@0: active->StartL(); sl@0: aClient.AddEvent(*event2, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: event2->SetTime(date1); sl@0: sl@0: active->StartL(); sl@0: aClient.ChangeEvent(*event2, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: CLogEvent* event3 = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event3); sl@0: event3->SetEventType(KTestEventUid); sl@0: sl@0: active->StartL(); sl@0: aClient.AddEvent(*event3, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: event3->SetTime(date2); sl@0: sl@0: active->StartL(); sl@0: aClient.ChangeEvent(*event3, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: CLogEvent* event4 = CLogEvent::NewL(); sl@0: CleanupStack::PushL(event4); sl@0: event4->SetEventType(KTestEventUid); sl@0: sl@0: active->StartL(); sl@0: aClient.AddEvent(*event4, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: event4->SetTime(date2); sl@0: sl@0: active->StartL(); sl@0: aClient.ChangeEvent(*event4, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: TInt failCount = 0; sl@0: TBool finished = EFalse; sl@0: sl@0: while(!finished) sl@0: { sl@0: TheTest.Printf(_L("%d \r"), failCount); sl@0: __FILE_FAILNEXT(KErrNoMemory, failCount++); sl@0: sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: if(aUseSimId) sl@0: { sl@0: aClient.ClearLog(date1, KLogNullSimId, active->iStatus); sl@0: } sl@0: else sl@0: #endif sl@0: { sl@0: aClient.ClearLog(date1, active->iStatus); sl@0: } sl@0: sl@0: __FILE_RESET; sl@0: sl@0: active->StartL(); sl@0: CActiveScheduler::Start(); sl@0: sl@0: if (active->iStatus == KErrNone) sl@0: finished = ETrue; sl@0: else sl@0: TEST2(active->iStatus.Int(), KErrNoMemory); sl@0: } sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event1, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: if (active->iStatus != KErrNone) sl@0: TheTest.Printf(_L("error code:%d\n"),active->iStatus.Int()); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event2, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event3, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event4, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: active->StartL(); sl@0: aClient.ClearLog(now, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNone); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event1, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: active->StartL(); sl@0: aClient.GetEvent(*event2, active->iStatus); sl@0: CActiveScheduler::Start(); sl@0: TEST2(active->iStatus.Int(), KErrNotFound); sl@0: sl@0: CleanupStack::PopAndDestroy(5); // event4, event3, event2, event1, active sl@0: TheTest.Printf(_L("\r\nThe test has succeeded at iteration %d\n"), failCount); sl@0: } sl@0: sl@0: void doTestsL() sl@0: { sl@0: TestUtils::Initialize(_L("t_logfile")); sl@0: sl@0: TheTest.Start(_L("Construction + create db")); sl@0: TestUtils::DeleteDatabaseL(); sl@0: TestConstructionL(); // Creates database sl@0: TheTest.Next(_L("Construction + open db")); sl@0: TestConstructionL(); // Opens existing database sl@0: TestUtils::DeleteDatabaseL(); sl@0: theLog.Write(_L8("Test 1 OK\n")); sl@0: sl@0: CLogClient* client = CLogClient::NewL(theFs); sl@0: CleanupStack::PushL(client); sl@0: sl@0: TheTest.Next(_L("Add Event Type")); sl@0: TestAddEventTypeL(*client); sl@0: theLog.Write(_L8("Test 2 OK\n")); sl@0: sl@0: TheTest.Next(_L("Get Event Type")); sl@0: TestGetEventTypeL(*client); sl@0: theLog.Write(_L8("Test 3 OK\n")); sl@0: sl@0: TheTest.Next(_L("Change Event Type")); sl@0: TestChangeEventTypeL(*client); sl@0: theLog.Write(_L8("Test 4 OK\n")); sl@0: sl@0: TheTest.Next(_L("Delete Event Type")); sl@0: TestDeleteEventTypeL(*client); sl@0: theLog.Write(_L8("Test 5 OK\n")); sl@0: sl@0: TestUtils::DeleteDatabaseL(); sl@0: sl@0: TheTest.Next(_L("Add Event")); sl@0: TestAddEventL(*client); sl@0: theLog.Write(_L8("Test 6 OK\n")); sl@0: sl@0: TheTest.Next(_L("Get Event")); sl@0: TestGetEventL(*client); sl@0: theLog.Write(_L8("Test 7 OK\n")); sl@0: sl@0: TheTest.Next(_L("Change Event")); sl@0: TestChangeEventL(*client); sl@0: theLog.Write(_L8("Test 8 OK\n")); sl@0: sl@0: TheTest.Next(_L("Delete Event")); sl@0: TestDeleteEventL(*client); sl@0: theLog.Write(_L8("Test 9 OK\n")); sl@0: sl@0: TheTest.Next(_L("Get Config")); sl@0: TestGetConfigL(*client); sl@0: theLog.Write(_L8("Test 10 OK\n")); sl@0: sl@0: TheTest.Next(_L("Change Config")); sl@0: TestChangeConfigL(*client); sl@0: theLog.Write(_L8("Test 11 OK\n")); sl@0: sl@0: TheTest.Next(_L("Get String")); sl@0: TestGetStringL(*client); sl@0: theLog.Write(_L8("Test 12 OK\n")); sl@0: sl@0: TheTest.Next(_L("Clear Event Log")); sl@0: TestClearEventLogL(*client); sl@0: theLog.Write(_L8("Test 13 OK\n")); sl@0: sl@0: #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM sl@0: TheTest.Next(_L("Clear Event Log + SimId")); sl@0: TestClearEventLogL(*client, ETrue); sl@0: theLog.Write(_L8("Test 14 OK\n")); sl@0: #endif sl@0: sl@0: CleanupStack::PopAndDestroy(); // client sl@0: }