os/persistentdata/loggingservices/eventlogger/test/src/t_logsimid.cpp
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/persistentdata/loggingservices/eventlogger/test/src/t_logsimid.cpp	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,465 @@
     1.4 +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +// All rights reserved.
     1.6 +// This component and the accompanying materials are made available
     1.7 +// under the terms of "Eclipse Public License v1.0"
     1.8 +// which accompanies this distribution, and is available
     1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.10 +//
    1.11 +// Initial Contributors:
    1.12 +// Nokia Corporation - initial contribution.
    1.13 +//
    1.14 +// Contributors:
    1.15 +//
    1.16 +// Description:
    1.17 +// t_logsimid.cpp - Log event tests using the SimId event property
    1.18 +// 
    1.19 +//
    1.20 +#include <s32file.h>
    1.21 +#include <s32mem.h>
    1.22 +#include <e32math.h>
    1.23 +#include <bautils.h>
    1.24 +#include <logview.h>
    1.25 +#include <logcli.h>
    1.26 +#include "t_logutil2.h"
    1.27 +#include "LogServSqlStrings.h"
    1.28 +
    1.29 +RTest TheTest(_L("t_logsimid"));
    1.30 +
    1.31 +#ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
    1.32 +
    1.33 +const TLogId KEvId1 = 101;
    1.34 +_LIT(KEvDesc1, "Event Type Description 1");
    1.35 +_LIT(KEvRemote1, "Remote Party 1");
    1.36 +
    1.37 +//Event type related
    1.38 +//KLogCallEventType is used in order to use the "recent list" related functionality on the server side
    1.39 +//(KEvDirection1 value also plays important role)
    1.40 +const TUid KEvTypeUid = {KLogCallEventType};
    1.41 +//KEvDirection1 together with the KEvTypeUid guarantee that the properties of events being added match the conditions of one
    1.42 +//of the LogEng server recent lists and thus the "recent list" related functionality on the server side will be used.
    1.43 +_LIT(KEvDirection1, "Missed call");
    1.44 +
    1.45 +_LIT(KEvStatus1, "Status 1");
    1.46 +_LIT(KEvSubject1, "Subject 1");
    1.47 +_LIT(KEvNumber1, "11119999");
    1.48 +const TLogDurationType KEvDurationType1 = 1;
    1.49 +const TLogDuration KEvDuration1 = 1000;
    1.50 +const TLogContactItemId KEvContact1 = 1010;
    1.51 +const TLogLink KEvLink1 = 2000;
    1.52 +_LIT8(KEvData1, "ABCDEFGH 1");
    1.53 +const TLogFlags KEvFlags1 = 0x5;
    1.54 +const TSimId KEvSimId1 = 3000000910U;//Bigger than KMaxTInt, to check that SQL statement formatting works as expected
    1.55 +
    1.56 +const TInt KDiffEvCount = 10;
    1.57 +const TLogDurationType KEvDurationType2 = 2;
    1.58 +_LIT(KEvNumber2, "22226666");
    1.59 +
    1.60 +const TUid KEvTypeUidLoggingDisabled = {0x447422};
    1.61 +
    1.62 +//The default max log size is 1000. But the test timeouts on hardware with max log size of 1000.
    1.63 +const TInt KMaxLogSize = 200;
    1.64 +const TInt KMaxPlusEvCount = 100; //Added events count on top of the max log size
    1.65 +
    1.66 +TInt TheAddedEventCount = -1;
    1.67 +TInt TheMaxLogSize = -1;
    1.68 +
    1.69 +enum TLogViewSimId {ELogWithoutSimId, ELogWithSimId, ELogIgnoreSimId, ELogDiffEvents};
    1.70 +
    1.71 +TLogId TheEvId = -1;
    1.72 +
    1.73 +void DoTestEvent1(const CLogEvent& aEvent)
    1.74 +	{
    1.75 +	TEST(aEvent.Id() == KEvId1);
    1.76 +	TEST(aEvent.EventType() == KEvTypeUid);
    1.77 +	TEST(aEvent.RemoteParty() == KEvRemote1);
    1.78 +	TEST(aEvent.Direction() == KEvDirection1);
    1.79 +	TEST(aEvent.DurationType() == KEvDurationType1);
    1.80 +	TEST(aEvent.Duration() == KEvDuration1);
    1.81 +	TEST(aEvent.Status() == KEvStatus1);
    1.82 +	TEST(aEvent.Subject() == KEvSubject1);
    1.83 +	TEST(aEvent.Number() == KEvNumber1);
    1.84 +	TEST(aEvent.Contact() == KEvContact1);	
    1.85 +	TEST(aEvent.Link() == KEvLink1);
    1.86 +	TEST(aEvent.Description() == KEvDesc1);
    1.87 +	TEST(aEvent.Flags() == KEvFlags1);
    1.88 +	TEST(aEvent.Data() == KEvData1);
    1.89 +	TEST(aEvent.SimId() == KEvSimId1);
    1.90 +	}
    1.91 +
    1.92 +void DoTestFilter1(const CLogFilter& aFilter)
    1.93 +	{
    1.94 +	TEST(aFilter.EventType() == KEvTypeUid);
    1.95 +	TEST(aFilter.RemoteParty() == KEvRemote1);
    1.96 +	TEST(aFilter.Direction() == KEvDirection1);
    1.97 +	TEST(aFilter.DurationType() == KEvDurationType1);
    1.98 +	TEST(aFilter.Status() == KEvStatus1);
    1.99 +	TEST(aFilter.Contact() == KEvContact1);
   1.100 +	TEST(aFilter.Number() == KEvNumber1);
   1.101 +	TEST(aFilter.Flags() == KEvFlags1);
   1.102 +	TEST(aFilter.SimId() == KEvSimId1);
   1.103 +	}
   1.104 +
   1.105 +/**
   1.106 +@SYMTestCaseID			PDS-LOGENG-UT-4025
   1.107 +@SYMTestCaseDesc		CLogEvent API  and SimId test.
   1.108 +						The test creates an event and checks that event Copy(), Internalize() and Externalize()
   1.109 +						operations work properly.
   1.110 +@SYMTestActions			CLogEvent API  and SimId test.
   1.111 +@SYMTestExpectedResults Test must not fail
   1.112 +@SYMTestPriority 	    Medium
   1.113 +@SYMREQ					REQ12746
   1.114 +*/
   1.115 +void LogEventApiTestL()
   1.116 +	{
   1.117 +	CLogEvent* event = CLogEvent::NewL();
   1.118 +	CleanupStack::PushL(event);
   1.119 +	
   1.120 +	event->SetId(KEvId1);
   1.121 +	event->SetEventType(KEvTypeUid);
   1.122 +	event->SetRemoteParty(KEvRemote1);
   1.123 +	event->SetDirection(KEvDirection1);
   1.124 +	event->SetDurationType(KEvDurationType1);
   1.125 +	event->SetDuration(KEvDuration1);
   1.126 +	event->SetStatus(KEvStatus1);
   1.127 +	event->SetSubject(KEvSubject1);
   1.128 +	event->SetNumber(KEvNumber1);
   1.129 +	event->SetContact(KEvContact1);
   1.130 +	event->SetLink(KEvLink1);
   1.131 +	event->SetDescription(KEvDesc1);
   1.132 +	event->SetFlags(KEvFlags1);
   1.133 +	event->SetDataL(KEvData1);
   1.134 +	event->SetSimId( KEvSimId1);
   1.135 +	
   1.136 +	//Copy event
   1.137 +	CLogEvent* event2 = CLogEvent::NewL();
   1.138 +	CleanupStack::PushL(event2);
   1.139 +	event2->CopyL(*event);
   1.140 +	DoTestEvent1(*event2);
   1.141 +	CleanupStack::PopAndDestroy(event2);
   1.142 +
   1.143 +	//Externalize event
   1.144 +	TBuf8<512> buf;
   1.145 +	RDesWriteStream strmOut;
   1.146 +	strmOut.Open(buf);
   1.147 +	event->ExternalizeL(strmOut);
   1.148 +	strmOut.CommitL();
   1.149 +	strmOut.Close();
   1.150 +	
   1.151 +	//Internalize event
   1.152 +	CLogEvent* event3 = CLogEvent::NewL();
   1.153 +	CleanupStack::PushL(event3);
   1.154 +	RDesReadStream strmIn;
   1.155 +	strmIn.Open(buf);
   1.156 +	event3->InternalizeL(strmIn);
   1.157 +	strmIn.Close();
   1.158 +	DoTestEvent1(*event3);
   1.159 +	CleanupStack::PopAndDestroy(event3);
   1.160 +
   1.161 +	CleanupStack::PopAndDestroy(event);
   1.162 +	}
   1.163 +
   1.164 +/**
   1.165 +@SYMTestCaseID			PDS-LOGENG-UT-4026
   1.166 +@SYMTestCaseDesc		CLogEvent API  and SimId test.
   1.167 +						The test creates a filter and checks that filter Copy() operation work properly.
   1.168 +@SYMTestActions			CLogEvent API  and SimId test.
   1.169 +@SYMTestExpectedResults Test must not fail
   1.170 +@SYMTestPriority 	    Medium
   1.171 +@SYMREQ					REQ12747
   1.172 +*/
   1.173 +void LogFilterApiTestL()
   1.174 +	{
   1.175 +	CLogFilter* filter = CLogFilter::NewL();
   1.176 +	CleanupStack::PushL(filter);
   1.177 +	
   1.178 +	filter->SetEventType(KEvTypeUid);
   1.179 +	filter->SetRemoteParty(KEvRemote1);
   1.180 +	filter->SetDirection(KEvDirection1);
   1.181 +	filter->SetDurationType(KEvDurationType1);
   1.182 +	filter->SetStatus(KEvStatus1);
   1.183 +	filter->SetContact(KEvContact1);
   1.184 +	filter->SetNumber(KEvNumber1);
   1.185 +	filter->SetFlags(KEvFlags1);
   1.186 +	filter->SetSimId( KEvSimId1);
   1.187 +
   1.188 +	//Copy filter
   1.189 +	CLogFilter* filter2 = CLogFilter::NewL();
   1.190 +	CleanupStack::PushL(filter2);
   1.191 +	filter2->Copy(*filter);
   1.192 +	DoTestFilter1(*filter2);
   1.193 +	CleanupStack::PopAndDestroy(filter2);
   1.194 +
   1.195 +	CleanupStack::PopAndDestroy(filter);
   1.196 +	}
   1.197 +
   1.198 +void DoSetNewMaxLogSizeL(CLogClient& aClient, CTestActive& aActive)
   1.199 +	{
   1.200 +	//Check what is the max log size.
   1.201 +	TLogConfig config;
   1.202 +	aActive.StartL();
   1.203 +	aClient.GetConfig(config, aActive.iStatus);
   1.204 +	CActiveScheduler::Start();
   1.205 +	TEST2(aActive.iStatus.Int(), KErrNone);
   1.206 +	//Set new max log size
   1.207 +	config.iMaxLogSize = KMaxLogSize;
   1.208 +	aActive.StartL();
   1.209 +	aClient.ChangeConfig(config, aActive.iStatus);
   1.210 +	CActiveScheduler::Start();
   1.211 +	TEST2(aActive.iStatus.Int(), KErrNone);
   1.212 +	//Test the new max log size
   1.213 +	aActive.StartL();
   1.214 +	aClient.GetConfig(config, aActive.iStatus);
   1.215 +	CActiveScheduler::Start();
   1.216 +	TEST2(aActive.iStatus.Int(), KErrNone);
   1.217 +	TEST2(config.iMaxLogSize, KMaxLogSize);
   1.218 +	//
   1.219 +	TheMaxLogSize = config.iMaxLogSize;
   1.220 +	TheAddedEventCount = config.iMaxLogSize + KMaxPlusEvCount;
   1.221 +	}
   1.222 +
   1.223 +/**
   1.224 +@SYMTestCaseID			PDS-LOGENG-UT-4027
   1.225 +@SYMTestCaseDesc		Add events test.
   1.226 +						The test adds events to the LogEng database. The events count is bigger than the
   1.227 +						max log size. Half of the events will be with non-zero SimId property. 
   1.228 +						10 of the events will have different DurationType and Number values than the other events.
   1.229 +						Apart from checking that the "add event" opertaion works with the new SimId property, this 
   1.230 +						test case also prepares data for the other "view event" test cases.
   1.231 +@SYMTestActions			Add events test.
   1.232 +@SYMTestExpectedResults Test must not fail
   1.233 +@SYMTestPriority 	    Medium
   1.234 +@SYMREQ					REQ12746
   1.235 +*/
   1.236 +void LogAddEventsTestL()
   1.237 +	{
   1.238 +	CLogClient* client = CLogClient::NewL(theFs);
   1.239 +	CleanupStack::PushL(client);
   1.240 +	CTestActive* active = new(ELeave)CTestActive();
   1.241 +	CleanupStack::PushL(active);
   1.242 +	
   1.243 +	//Set new max log size
   1.244 +	DoSetNewMaxLogSizeL(*client, *active);
   1.245 +
   1.246 +	//Add TheAddedEventCount events. Some of them with SimId, some - not.
   1.247 +	//This certainly will involve some log purging operations when the log size reaches the max.
   1.248 +	CLogEvent* event = CLogEvent::NewL();
   1.249 +	CleanupStack::PushL(event);
   1.250 +	event->SetEventType(KLogCallEventTypeUid);
   1.251 +	event->SetRemoteParty(KEvRemote1);
   1.252 +	event->SetDirection(KEvDirection1);
   1.253 +	event->SetDurationType(KEvDurationType1);
   1.254 +	event->SetDuration(KEvDuration1);
   1.255 +	event->SetStatus(KEvStatus1);
   1.256 +	event->SetSubject(KEvSubject1);
   1.257 +	event->SetNumber(KEvNumber1);
   1.258 +	event->SetContact(KEvContact1);
   1.259 +	event->SetLink(KEvLink1);
   1.260 +	event->SetDescription(KEvDesc1);
   1.261 +	event->SetFlags(KEvFlags1);
   1.262 +	event->SetDataL(KEvData1);
   1.263 +	
   1.264 +	TTime st_time;
   1.265 +	st_time.UniversalTime();
   1.266 +	
   1.267 +	TheTest.Printf(_L("Added events:\n"));
   1.268 +	TInt diffEvCount = KDiffEvCount;
   1.269 +	for(TInt i=0;i<TheAddedEventCount;++i)
   1.270 +		{
   1.271 +		event->SetSimId(KLogNullSimId);
   1.272 +		event->SetDurationType(KEvDurationType1);
   1.273 +		event->SetNumber(KEvNumber1);
   1.274 +		if((i %2) == 0)
   1.275 +			{
   1.276 +			event->SetSimId(KEvSimId1);
   1.277 +			if((i > TheMaxLogSize / 2 + 1) && (i % 10) == 0 && --diffEvCount >= 0)
   1.278 +				{//Add after the second half because when the log grows above the max log size, the first events will be deleted
   1.279 +				event->SetDurationType(KEvDurationType2);
   1.280 +				event->SetNumber(KEvNumber2);
   1.281 +				}
   1.282 +			}
   1.283 +		active->StartL();
   1.284 +		client->AddEvent(*event, active->iStatus);
   1.285 +		CActiveScheduler::Start();
   1.286 +		TEST(!active->IsActive());
   1.287 +		TEST2(active->iStatus.Int(), KErrNone);
   1.288 +		if((i % 50) == 0)
   1.289 +			{
   1.290 +			TheTest.Printf(_L("%d\r"), i);
   1.291 +			}
   1.292 +		}
   1.293 +	TheTest.Printf(_L("%d\n"), TheAddedEventCount);
   1.294 +	
   1.295 +	TTime end_time;
   1.296 +	end_time.UniversalTime();
   1.297 +	
   1.298 +	CleanupStack::PopAndDestroy(event);
   1.299 +	
   1.300 +	CleanupStack::PopAndDestroy(active);
   1.301 +	CleanupStack::PopAndDestroy(client);
   1.302 +	
   1.303 +	TTimeIntervalMicroSeconds us = end_time.MicroSecondsFrom(st_time);
   1.304 +	TheTest.Printf(_L("%d events added. Time: %ld milliseconds\n"), TheAddedEventCount, us.Int64() / 1000);
   1.305 +	}
   1.306 +
   1.307 +void DoSetFilterL(TLogViewSimId aViewSimId, TInt aExpectedEventCount, 
   1.308 +				 CLogViewEvent& aLogView, CLogFilter& aLogFilter, CTestActive& aActive)
   1.309 +	{
   1.310 +	switch(aViewSimId)
   1.311 +		{
   1.312 +		case ELogWithoutSimId:
   1.313 +			aLogFilter.SetNullFields(ELogSimIdField);
   1.314 +			break;
   1.315 +		case ELogWithSimId:
   1.316 +			aLogFilter.SetSimId(KEvSimId1);
   1.317 +			break;
   1.318 +		case ELogDiffEvents:
   1.319 +			aLogFilter.SetSimId(KEvSimId1);
   1.320 +			aLogFilter.SetDurationType(KEvDurationType2);
   1.321 +			aLogFilter.SetNumber(KEvNumber2);
   1.322 +			break;
   1.323 +		case ELogIgnoreSimId:
   1.324 +		default:
   1.325 +			break;
   1.326 +		}
   1.327 +	TBool res = aLogView.SetFilterL(aLogFilter, aActive.iStatus);
   1.328 +	TEST(res);
   1.329 +	aActive.StartL();
   1.330 +	CActiveScheduler::Start();
   1.331 +	TEST2(aActive.iStatus.Int(), KErrNone);
   1.332 +	TInt count = aLogView.CountL();
   1.333 +	TheTest.Printf(_L("===Events count: %d\n"), count);
   1.334 +	TEST2(count, aExpectedEventCount);
   1.335 +	}
   1.336 +
   1.337 +void DoTestViewEvent(TLogViewSimId aViewSimId, CLogViewEvent& aLogView)
   1.338 +	{
   1.339 +	const CLogEvent& e = aLogView.Event();
   1.340 +	TSimId simid = e.SimId();
   1.341 +	TLogDurationType durationType = e.DurationType();
   1.342 +	const TDesC& number = e.Number();
   1.343 +	switch(aViewSimId)
   1.344 +		{
   1.345 +		case ELogWithoutSimId:
   1.346 +			TEST2(simid, KLogNullSimId);
   1.347 +			break;
   1.348 +		case ELogWithSimId:
   1.349 +			TEST2U(simid, KEvSimId1);
   1.350 +			break;
   1.351 +		case ELogDiffEvents:
   1.352 +			TEST2U(simid, KEvSimId1);
   1.353 +			TEST2(durationType, KEvDurationType2);
   1.354 +			TEST(number == KEvNumber2);
   1.355 +			break;
   1.356 +		case ELogIgnoreSimId:
   1.357 +		default:
   1.358 +			break;
   1.359 +		}
   1.360 +	}
   1.361 +
   1.362 +/**
   1.363 +@SYMTestCaseID			PDS-LOGENG-UT-4028
   1.364 +@SYMTestCaseDesc		View events test.
   1.365 +						The test case expects the LogEng database to be already filled with events.
   1.366 +						Depending what is the value of the aViewSimId, the test will prepare a view and
   1.367 +						set the view filter to filter in events without SimId, events with SimId, all events,
   1.368 +						or the events with different DurationType and Number property values. The purpose
   1.369 +						of the test is to check that the event filtering works as expected with the new SimId
   1.370 +						property. 
   1.371 +@SYMTestActions			View events test.
   1.372 +@SYMTestExpectedResults Test must not fail
   1.373 +@SYMTestPriority 	    Medium
   1.374 +@SYMREQ					REQ12746
   1.375 +*/
   1.376 +void LogViewEventsTestL(TLogViewSimId aViewSimId, TInt aExpectedEventCount)
   1.377 +	{
   1.378 +	CLogClient* client = CLogClient::NewL(theFs);
   1.379 +	CleanupStack::PushL(client);
   1.380 +	CTestActive* active = new(ELeave)CTestActive();
   1.381 +	CleanupStack::PushL(active);
   1.382 +	CLogViewEvent* view = CLogViewEvent::NewL(*client);
   1.383 +	CleanupStack::PushL(view);
   1.384 +	CLogFilter* filter = CLogFilter::NewL();
   1.385 +	CleanupStack::PushL(filter);
   1.386 +	
   1.387 +	TTime st_time;
   1.388 +	st_time.UniversalTime();
   1.389 +	DoSetFilterL(aViewSimId, aExpectedEventCount, *view, *filter, *active); 
   1.390 +	TTime end_time;
   1.391 +	end_time.UniversalTime();
   1.392 +	TTimeIntervalMicroSeconds us = end_time.MicroSecondsFrom(st_time);
   1.393 +	TheTest.Printf(_L("SetFilter(). Time: %ld milliseconds\n"), us.Int64() / 1000);
   1.394 +	
   1.395 +	TInt count = 0; 
   1.396 +	st_time.UniversalTime();
   1.397 +	if(view->FirstL(active->iStatus))
   1.398 +		{
   1.399 +		do
   1.400 +			{
   1.401 +			active->StartL();
   1.402 +			CActiveScheduler::Start();
   1.403 +			TEST2(active->iStatus.Int(), KErrNone);
   1.404 +			DoTestViewEvent(aViewSimId, *view);
   1.405 +			++count;
   1.406 +			}
   1.407 +		while(view->NextL(active->iStatus));
   1.408 +		}
   1.409 +	end_time.UniversalTime();
   1.410 +	us = end_time.MicroSecondsFrom(st_time);
   1.411 +	TheTest.Printf(_L("Event view walk completed. Events count: %d. Time: %ld milliseconds\n"), count, us.Int64() / 1000);
   1.412 +		
   1.413 +	CleanupStack::PopAndDestroy(filter);
   1.414 +	CleanupStack::PopAndDestroy(view);
   1.415 +	CleanupStack::PopAndDestroy(active);
   1.416 +	CleanupStack::PopAndDestroy(client);
   1.417 +	}
   1.418 +
   1.419 +//Add a new event type with "logging disabled"
   1.420 +void DoAddEventTypeL(CLogClient& aClient, CTestActive& aActive)
   1.421 +	{
   1.422 +	CLogEventType* type = CLogEventType::NewL();
   1.423 +	CleanupStack::PushL(type);
   1.424 +
   1.425 +	type->SetUid(KEvTypeUidLoggingDisabled);
   1.426 +	type->SetDescription(_L("110111011011"));
   1.427 +	type->SetLoggingEnabled(EFalse);
   1.428 +
   1.429 +	aClient.AddEventType(*type, aActive.iStatus);
   1.430 +	aActive.StartL();
   1.431 +	CActiveScheduler::Start();
   1.432 +	TEST2(aActive.iStatus.Int(), KErrNone);
   1.433 +
   1.434 +	CleanupStack::PopAndDestroy(type);
   1.435 +	}
   1.436 +
   1.437 +void doTestsL()
   1.438 +	{
   1.439 +    TestUtils::Initialize(_L("t_logsimid"));
   1.440 +	TestUtils::DeleteDatabaseL();
   1.441 +	//
   1.442 +	TheTest.Start(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4025: CLogEvent API test"));
   1.443 +	LogEventApiTestL();
   1.444 +	TheTest.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4026: CLogFilter API test"));
   1.445 +	LogFilterApiTestL();
   1.446 +	TheTest.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4027: Add events test"));
   1.447 +	LogAddEventsTestL();
   1.448 +	TheTest.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4028: View events without SimId test"));
   1.449 +	LogViewEventsTestL(ELogWithoutSimId, TheMaxLogSize / 2);
   1.450 +	TheTest.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4028: View events with SimId test"));
   1.451 +	LogViewEventsTestL(ELogWithSimId, TheMaxLogSize / 2);
   1.452 +	TheTest.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4028: View events with or without SimId test"));
   1.453 +	LogViewEventsTestL(ELogIgnoreSimId, TheMaxLogSize);
   1.454 +	TheTest.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4028: More complex event view test"));
   1.455 +	LogViewEventsTestL(ELogDiffEvents, KDiffEvCount);
   1.456 +	//
   1.457 +	TestUtils::DeleteDatabaseL();
   1.458 +	}
   1.459 +
   1.460 +#else//SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM
   1.461 +
   1.462 +void doTestsL()
   1.463 +	{
   1.464 +    TestUtils::Initialize(_L("t_logsimid"));
   1.465 +	TheTest.Start(_L("The t_simid test cases are compiled only when SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM macro is defined!"));
   1.466 +	}
   1.467 +
   1.468 +#endif//SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM