diff -r fa9941cf3867 -r 667e88a979d7 loggingservices/eventlogger/test/src/t_logmaxnumlen.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loggingservices/eventlogger/test/src/t_logmaxnumlen.cpp Mon Mar 15 12:46:30 2010 +0200 @@ -0,0 +1,242 @@ +// Copyright (c) 2005-2010 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: +// test code for INC041118 - Numberfield in logdatabase/engine is too small +// +// + +#include +#include +#include +#include "t_logutil2.h" + +RTest TheTest(_L("t_logmaxnumlen")); + +_LIT(KTestEventDesc1, "Event Type Description"); +_LIT(KTestRemoteParty1, "Remote Party"); +_LIT(KTestDirection1, "Direction"); +_LIT(KTestStatus1, "Status"); +_LIT(KTestSubject1, "Subject"); + + +// These values are stored in "oldLogdb.dat" +_LIT(KTestEvent0, "00000"); +_LIT(KTestEvent1, "11111"); +_LIT(KTestEvent2, "22222"); + +const TUid KTestEventUid = {0x10005393}; +const TLogDurationType KTestDurationType1 = 1; +const TLogDuration KTestDuration1 = 0x1234; +const TLogContactItemId KTestContact1 = 0x1234; +const TLogLink KTestLink1 = 0x1234; +_LIT8(KTestData1, "ABCDEFGH"); +const TLogFlags KTestFlags1 = 0x5; + + +// with this value the test will ONLY pass with the new database +_LIT(KTestNumberMax, + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); + +// This test needs a number > 32 to check that database has been converted +_LIT(KTestNumber50, "01234567890123456789012345678901234567890123456789"); +_LIT(KTestNumberMin, "0"); + +// this coresponds to an event already stored in oldLogDb.dat +const TInt KoldId = 3; +_LIT(KTestOldDbNumber, "012345678901234567"); + + +/** +@SYMTestCaseID SYSLIB-LOGENG-CT-1336 +@SYMTestCaseDesc Tests for adding events to the log engine database +@SYMTestPriority High +@SYMTestActions Check for event ID assigned by log engine +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +TInt TestAddEventL(CLogClient& aClient, const TDesC &aNumber) + { + TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-1336 ")); + TInt returnId = KLogNullId; + + CTestActive* active = new(ELeave)CTestActive(); + CleanupStack::PushL(active); + + // create a new event + CLogEvent* event = CLogEvent::NewL(); + CleanupStack::PushL(event); + + // Reset + TTime now; + now.UniversalTime(); + + // load the event with test values + event->SetEventType(KTestEventUid); + event->SetRemoteParty(KTestRemoteParty1); + event->SetDirection(KTestDirection1); + event->SetDurationType(KTestDurationType1); + event->SetDuration(KTestDuration1); + event->SetStatus(KTestStatus1); + event->SetSubject(KTestSubject1); + event->SetNumber(aNumber); + event->SetContact(KTestContact1); + event->SetLink(KTestLink1); + event->SetDataL(KTestData1); + event->SetFlags(KTestFlags1); + + // add the event to the logeng database + active->StartL(); + aClient.AddEvent(*event, active->iStatus); + + CActiveScheduler::Start(); + TEST(!active->IsActive()); + aClient.Cancel(); + TEST2(active->iStatus.Int(), KErrNone); + + // check that an ID has been assigned + returnId = event->Id(); + TEST(returnId != KLogNullId); + + TEST(event->Time() >= now); + TEST(event->Description() == KTestEventDesc1); + + CleanupStack::PopAndDestroy(2); // event, active + + // return the event id which has been assigned by the + // log engine + return returnId; + } + +/** +@SYMTestCaseID SYSLIB-LOGENG-CT-1337 +@SYMTestCaseDesc Tests for getting the event from the log engine database +@SYMTestPriority High +@SYMTestActions Tests for CLogClient::GetEvent() function +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +void TestGetEventL(CLogClient& aClient, TInt aTheId, const TDesC& aNumber) + + { + TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-1337 ")); + CTestActive* active = new(ELeave)CTestActive(); + CleanupStack::PushL(active); + + CLogEvent* event = CLogEvent::NewL(); + CleanupStack::PushL(event); + + // set the id of the event to be fetched + event->SetId(aTheId); + + active->StartL(); + aClient.GetEvent(*event, active->iStatus); + CActiveScheduler::Start(); + aClient.Cancel(); + TEST2(active->iStatus.Int(), KErrNone); + + TEST(event->Id() == aTheId); + TEST(event->Time() > TTime(0)); + TEST(event->Description() == KTestEventDesc1); + TEST(event->EventType() == KTestEventUid); + TEST(event->RemoteParty() == KTestRemoteParty1); + TEST(event->Direction() == KTestDirection1); + TEST(event->DurationType() == KTestDurationType1); + TEST(event->Duration() == KTestDuration1); + TEST(event->Status() == KTestStatus1); + TEST(event->Subject() == KTestSubject1); + TEST(event->Contact() == KTestContact1); + TEST(event->Link() == KTestLink1); + TEST(event->Data() == KTestData1); + TEST(event->Flags() == KTestFlags1); + + // this is the important test + // check the number has not been truncated + TEST(event->Number() == aNumber); + + TPtrC eventStatus = event->Subject(); + TPtrC eventNumber = event->Number(); + TheTest.Printf(_L("Id:%d No:%S Sub:%S Con:0x%x \n"), + event->Id(), &eventNumber, &eventStatus, event->Contact()); + + CleanupStack::PopAndDestroy(2); // event, active + } + + +/** +Test code for INC041118 - Numberfield in logdatabase/engine is too small +This is the main part of the test + +@SYMTestCaseID SYSLIB-LOGENG-CT-1019 +@SYMTestCaseDesc Tests for number field in logdatabase/engine is too small +@SYMTestPriority High +@SYMTestActions Add an event to the log engine database.When the database is opened it should be + converted to new format.Check by reading the event and checking the number length + Check with maximum and minimum number field +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +void TestStartupL() + { + TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-1019 ")); + TestUtils::CopyOldDbL(); + + // add an event to the log engine database. + // When the database is opened it should be checked for the old numberfield length + // and converted to the new format if required. (It will be required, as old db has been copied) + CLogClient* client = CLogClient::NewL(theFs); + CleanupStack::PushL(client); + User::After(1000000); + TheTest.Next(_L("check database conversion")); + TInt eventId = TestAddEventL(*client, KTestNumber50 ); + + // check that the database has been converted to the new format + // by reading back an event the checking that number is the + // correct length + TestGetEventL(*client, eventId, KTestNumber50); + + // check using Max + TheTest.Next(_L("check a maxium length number")); + eventId = TestAddEventL(*client, KTestNumberMax ); + TestGetEventL(*client, eventId, KTestNumberMax); + + // check using Min + TheTest.Next(_L("check a mimium length number")); + eventId = TestAddEventL(*client, KTestNumberMin ); + TestGetEventL(*client, eventId, KTestNumberMin); + + // When OldLogdbu.dat was created, using TestBuildTestDbL() below, + // 4 events were stored. Check that these can still be accessed. + // Note: There was a problem here with old events being purged after 30 days + // This was fixed by setting TLogConfig::iMaxEventAge = 0 in OldLogdb.dat + TheTest.Next(_L("check all events in the old database")); + TestGetEventL(*client, 0, KTestEvent0); + TestGetEventL(*client, 1, KTestEvent1); + TestGetEventL(*client, 2, KTestEvent2); + TestGetEventL(*client, KoldId, KTestOldDbNumber); + + CleanupStack::PopAndDestroy(); // client + } + +// Test code for INC041118 - Numberfield in logdatabase/engine is too small +void doTestsL() + { + TestUtils::Initialize(_L("t_logmaxnumlen")); +#ifdef _DEBUG + TheTest.Start(_L("T_MaxNumberLength Set/Check Phone Number Maximum Length")); + + TestStartupL(); + theLog.Write(_L8("Test T_MAXNUMBERLENGTH OK\n")); +#else + TheTest.Start(_L("This test works only in debug mode, otherwise the LogEng server cannot be stopped. See TestUtils::CopyOldDbL()")); +#endif//_DEBUG + }