loggingservices/eventlogger/test/src/t_logheap.cpp
changeset 0 08ec8eefde2f
child 9 667e88a979d7
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include <s32file.h>
       
    17 #include <logview.h>
       
    18 #include "TEST.H"
       
    19 
       
    20 #undef test  //there is a "test" macro which hides "RTest test" declaration.
       
    21 
       
    22 RTest test(_L("Log Client API Heap Failure Test Harness"));
       
    23 
       
    24 const TUid KTestEventUid = {0x10005393};
       
    25 _LIT(KTestEventDesc1, "Event Type Description");
       
    26 _LIT(KTestEventDesc2, "Changed Event Description");
       
    27 _LIT(KTestRemoteParty1, "Remote Party");
       
    28 _LIT(KTestRemoteParty2, "Changed Remote Party");
       
    29 _LIT(KTestDirection1, "Direction");
       
    30 _LIT(KTestDirection2, "Changed Direction");
       
    31 const TLogDurationType KTestDurationType1 = 1;
       
    32 const TLogDurationType KTestDurationType2 = 2;
       
    33 const TLogDuration KTestDuration1 = 0x1234;
       
    34 const TLogDuration KTestDuration2 = 0x1234567;
       
    35 _LIT(KTestStatus1, "Status");
       
    36 _LIT(KTestStatus2, "Changed Status");
       
    37 _LIT(KTestSubject1, "Subject");
       
    38 _LIT(KTestSubject2, "Changed Subject");
       
    39 _LIT(KTestNumber1, "Number");
       
    40 _LIT(KTestNumber2, "Changed Number");
       
    41 const TLogContactItemId KTestContact1 = 0x1234;
       
    42 const TLogContactItemId KTestContact2 = 0x1234567;
       
    43 const TLogLink KTestLink1 = 0x1234;
       
    44 const TLogLink KTestLink2 = 0x1234567;
       
    45 _LIT8(KTestData1, "ABCDEFGH");
       
    46 _LIT8(KTestData2, "IJKLMNOPQRSTUVWXYZ");
       
    47 const TLogSize KTestMaxLogSize = 0xFFF;
       
    48 const TLogRecentSize KTestMaxRecentLogSize = 0xF;
       
    49 const TLogAge KTestMaxEventAge = 0xFFFFFFF;
       
    50 
       
    51 _LIT(KCreateDb, "Create Db");
       
    52 _LIT(KOpenDb,   "Open Db");
       
    53 
       
    54 #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
       
    55 _LIT(KServerSide, "server side");
       
    56 _LIT(KClientSide, "client side");
       
    57 #endif
       
    58 
       
    59 /**
       
    60 @SYMTestCaseID          SYSLIB-LOGENG-CT-0884
       
    61 @SYMTestCaseDesc	    Tests for functionality of CLogEvent,CTestActive classes
       
    62 @SYMTestPriority 	    High
       
    63 @SYMTestActions  	    Tests for no memory errors.
       
    64 @SYMTestExpectedResults Test must not fail
       
    65 @SYMREQ                 REQ0000
       
    66 */
       
    67 LOCAL_C void TestStartup1L()
       
    68 	{
       
    69 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0884 "));
       
    70 	CLogClient* client = CLogClient::NewL(theFs);
       
    71 	CleanupStack::PushL(client);
       
    72 
       
    73 	CTestActive* active = new(ELeave)CTestActive();
       
    74 	CleanupStack::PushL(active);
       
    75 
       
    76 	CLogEvent* event = CLogEvent::NewL();
       
    77 	CleanupStack::PushL(event);
       
    78 
       
    79 	TTime now;
       
    80 	now.UniversalTime();
       
    81 
       
    82 	event->SetEventType(KLogCallEventTypeUid);
       
    83 
       
    84 	active->StartL();
       
    85 	client->AddEvent(*event, active->iStatus);
       
    86 	CActiveScheduler::Start();
       
    87 	TEST2(active->iStatus.Int(), KErrNone);
       
    88 	
       
    89 	TBool finished = EFalse;
       
    90 	TInt failCount = 0;
       
    91 
       
    92 	while(!finished)
       
    93 		{
       
    94 		__UHEAP_FAILNEXT(++failCount);
       
    95 		client->ChangeEvent(*event, active->iStatus);
       
    96 		__UHEAP_RESET;
       
    97 		active->StartL();
       
    98 		CActiveScheduler::Start();
       
    99 
       
   100 		if (active->iStatus == KErrNone)
       
   101 			{
       
   102 			finished = ETrue;
       
   103 			}
       
   104 		else
       
   105 			{
       
   106 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
   107 			}
       
   108 		}
       
   109 
       
   110 	CleanupStack::PopAndDestroy(3); // client, active, event
       
   111     test.Printf(_L("===CLogClient::ChangeEvent() client side OOM test succeeded at iteration %d\n"), failCount);
       
   112 	}
       
   113 
       
   114 /**
       
   115 @SYMTestCaseID          SYSLIB-LOGENG-CT-0885
       
   116 @SYMTestCaseDesc	    Tests for CLogEvent,CTestActive classes
       
   117 @SYMTestPriority 	    High
       
   118 @SYMTestActions  	    Tests for all basic functions of CLogEvent,CTestActive classes.Check for ErrNone flag.
       
   119 @SYMTestExpectedResults Test must not fail
       
   120 @SYMREQ                 REQ0000
       
   121 */
       
   122 LOCAL_C void TestBasicL(CLogClient& aClient)
       
   123 	{
       
   124 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0885 "));
       
   125 	
       
   126 	CTestActive* active = new(ELeave)CTestActive();
       
   127 	CleanupStack::PushL(active);
       
   128 
       
   129 	CLogEvent* event = CLogEvent::NewL();
       
   130 	CleanupStack::PushL(event);
       
   131 
       
   132 	TTime now;
       
   133 	now.UniversalTime();
       
   134 
       
   135 	event->SetEventType(KLogCallEventTypeUid);
       
   136 
       
   137 	active->StartL();
       
   138 	aClient.AddEvent(*event, active->iStatus);
       
   139 	CActiveScheduler::Start();
       
   140 	TEST2(active->iStatus.Int(), KErrNone);
       
   141 
       
   142 	TEST(event->EventType() == KLogCallEventTypeUid);
       
   143 	TEST(event->Description().Length() > 0);
       
   144 	TEST(event->Time() >= now);
       
   145 	now = event->Time();
       
   146 
       
   147 	TLogId id = event->Id();
       
   148 
       
   149 	event->SetRemoteParty(KTestRemoteParty1);
       
   150 	event->SetDirection(KTestDirection1);
       
   151 	event->SetDurationType(KTestDurationType1);
       
   152 	event->SetDuration(KTestDuration1);
       
   153 	event->SetStatus(KTestStatus1);
       
   154 	event->SetSubject(KTestSubject1);
       
   155 	event->SetNumber(KTestNumber1);
       
   156 	event->SetContact(KTestContact1);
       
   157 	event->SetLink(KTestLink1);
       
   158 	event->SetDataL(KTestData1);
       
   159 
       
   160 	active->StartL();
       
   161 	aClient.ChangeEvent(*event, active->iStatus);
       
   162 	CActiveScheduler::Start();
       
   163 	TEST2(active->iStatus.Int(), KErrNone);
       
   164 
       
   165 	TEST(event->Id() == id);
       
   166 	TEST(event->EventType() == KLogCallEventTypeUid);
       
   167 	TEST(event->Description().Length() > 0);
       
   168 	TEST(event->Time() == now);
       
   169 	TEST(event->RemoteParty() == KTestRemoteParty1);
       
   170 	TEST(event->Direction() == KTestDirection1);
       
   171 	TEST(event->DurationType() == KTestDurationType1);
       
   172 	TEST(event->Duration() == KTestDuration1);
       
   173 	TEST(event->Status() == KTestStatus1);
       
   174 	TEST(event->Subject() == KTestSubject1);
       
   175 	TEST(event->Number() == KTestNumber1);
       
   176 	TEST(event->Contact() == KTestContact1);
       
   177 	TEST(event->Link() == KTestLink1);
       
   178 	TEST(event->Data() == KTestData1);
       
   179 
       
   180 	CleanupStack::PopAndDestroy(); // event;
       
   181 
       
   182 	event = CLogEvent::NewL();
       
   183 	CleanupStack::PushL(event);
       
   184 
       
   185 	event->SetId(id);
       
   186 
       
   187 	active->StartL();
       
   188 	aClient.GetEvent(*event, active->iStatus);
       
   189 	CActiveScheduler::Start();
       
   190 	TEST2(active->iStatus.Int(), KErrNone);
       
   191 
       
   192 	TEST(event->Id() == id);
       
   193 	TEST(event->EventType() == KLogCallEventTypeUid);
       
   194 	TEST(event->Description().Length() > 0);
       
   195 	TEST(event->Time() == now);
       
   196 	TEST(event->RemoteParty() == KTestRemoteParty1);
       
   197 	TEST(event->Direction() == KTestDirection1);
       
   198 	TEST(event->DurationType() == KTestDurationType1);
       
   199 	TEST(event->Duration() == KTestDuration1);
       
   200 	TEST(event->Status() == KTestStatus1);
       
   201 	TEST(event->Subject() == KTestSubject1);
       
   202 	TEST(event->Number() == KTestNumber1);
       
   203 	TEST(event->Contact() == KTestContact1);
       
   204 	TEST(event->Link() == KTestLink1);
       
   205 	TEST(event->Data() == KTestData1);
       
   206 
       
   207 	active->StartL();
       
   208 	aClient.DeleteEvent(id, active->iStatus);
       
   209 	CActiveScheduler::Start();
       
   210 	TEST2(active->iStatus.Int(), KErrNone);
       
   211 
       
   212 	active->StartL();
       
   213 	aClient.GetEvent(*event, active->iStatus);
       
   214 	CActiveScheduler::Start();
       
   215 	TEST2(active->iStatus.Int(), KErrNotFound);
       
   216 
       
   217 	CleanupStack::PopAndDestroy(2, active); // event, active
       
   218 	}
       
   219 
       
   220 /**
       
   221 @SYMTestCaseID          SYSLIB-LOGENG-CT-0886
       
   222 @SYMTestCaseDesc	    Tests for new CLogClient object creation
       
   223 @SYMTestPriority 	    High
       
   224 @SYMTestActions  	    Create a CLogClient object on heap.Check for memory errors
       
   225 @SYMTestExpectedResults Test must not fail
       
   226 @SYMREQ                 REQ0000
       
   227 */
       
   228 LOCAL_C void TestConstruction1L(TBool aCreateDb)
       
   229 	{
       
   230 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0886 "));
       
   231 
       
   232 	if(aCreateDb)
       
   233 	    {
       
   234 	    TestUtils::DeleteDatabaseL();
       
   235 	    }
       
   236 		
       
   237 	CLogClient* client = NULL;
       
   238 	TInt failCount = 0;
       
   239 
       
   240 	TBool finished = EFalse;
       
   241 	TInt error;
       
   242 
       
   243 	while(!finished)
       
   244 		{
       
   245 		__UHEAP_FAILNEXT(++failCount);
       
   246 
       
   247 		TRAP(error, client = CLogClient::NewL(theFs));
       
   248 
       
   249 		__UHEAP_RESET;
       
   250 
       
   251 		if (error == KErrNone)
       
   252 			{
       
   253 			finished = ETrue;
       
   254 			TestBasicL(*client);
       
   255 			}
       
   256 		else
       
   257 			TEST2(error, KErrNoMemory);
       
   258 		}
       
   259 
       
   260 	delete client;
       
   261     test.Printf(_L("==CLogClient::NewL()+\"%S\" client side OOM test succeeded at iteration %d\n"), aCreateDb ? &KCreateDb : &KOpenDb, failCount);
       
   262 	}
       
   263 
       
   264 /**s
       
   265 @SYMTestCaseID          SYSLIB-LOGENG-CT-0887
       
   266 @SYMTestCaseDesc	    Tests for creation of new CLogClient object 
       
   267 @SYMTestPriority 	    High
       
   268 @SYMTestActions  	    Check for memory errors and error in the environment 
       
   269 @SYMTestExpectedResults Test must not fail
       
   270 @SYMREQ                 REQ0000
       
   271 */
       
   272 LOCAL_C void TestConstruction3L(TBool aCreateDb)
       
   273 	{
       
   274 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0887 "));
       
   275 
       
   276     if(aCreateDb)
       
   277         {
       
   278         TestUtils::DeleteDatabaseL();
       
   279         }
       
   280 
       
   281 	CLogClient* client = NULL;
       
   282 
       
   283 	TInt failCount = 0;
       
   284 
       
   285 	TBool finished = EFalse;
       
   286 	TInt error;
       
   287 
       
   288 	while(!finished)
       
   289 		{
       
   290 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
   291 
       
   292 		TRAP(error, client = CLogClient::NewL(theFs));
       
   293 
       
   294 		__LOGSERV_UHEAP_RESET;
       
   295 
       
   296 		if (error == KErrNone)
       
   297 			{
       
   298 			finished = ETrue;
       
   299 			TestBasicL(*client);
       
   300 			}
       
   301 		else
       
   302 			TEST2(error, KErrNoMemory);
       
   303 		}
       
   304 
       
   305 	delete client;
       
   306     test.Printf(_L("==CLogClient::NewL()+\"%S\" server side OOM test succeeded at iteration %d\n"), aCreateDb ? &KCreateDb : &KOpenDb, failCount);
       
   307 	}
       
   308 
       
   309 /**
       
   310 @SYMTestCaseID          SYSLIB-LOGENG-CT-0888
       
   311 @SYMTestCaseDesc	    Tests for CLogClient::AddEventType() function
       
   312 @SYMTestPriority 	    High
       
   313 @SYMTestActions  	    Tests for adding events to the log
       
   314                         Check for memory errors and error in the environment 
       
   315 @SYMTestExpectedResults Test must not fail
       
   316 @SYMREQ                 REQ0000
       
   317 */
       
   318 LOCAL_C void TestAddEventType1L()
       
   319 	{
       
   320 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0888 "));
       
   321 	
       
   322 	CLogClient* client = CLogClient::NewL(theFs);
       
   323 	CleanupStack::PushL(client);
       
   324 	
       
   325 	CLogEventType* type = CLogEventType::NewL();
       
   326 	CleanupStack::PushL(type);
       
   327 
       
   328 	type->SetUid(KTestEventUid);
       
   329 	type->SetDescription(KTestEventDesc1);
       
   330 	type->SetLoggingEnabled(ETrue);
       
   331 
       
   332 	CTestActive* active = new(ELeave)CTestActive();
       
   333 	CleanupStack::PushL(active);
       
   334 
       
   335 	TInt failCount = 0;
       
   336 	TBool finished = EFalse;
       
   337 	TInt error;
       
   338 
       
   339 	while(!finished)
       
   340 		{
       
   341 		error = KErrNone;
       
   342 
       
   343 		__UHEAP_FAILNEXT(++failCount);
       
   344 		client->AddEventType(*type, active->iStatus);
       
   345 	
       
   346 		active->StartL();
       
   347 		CActiveScheduler::Start();
       
   348 		
       
   349 		if (active->iStatus == KErrNone)
       
   350 			finished = ETrue;
       
   351 		else
       
   352 			error = active->iStatus.Int();
       
   353 
       
   354 		__UHEAP_RESET;
       
   355 
       
   356 		if (error == KErrNoMemory)
       
   357 			{
       
   358 			active->StartL();
       
   359 			client->GetEventType(*type, active->iStatus);
       
   360 			CActiveScheduler::Start();
       
   361 			TEST2(active->iStatus.Int(), KErrNotFound);
       
   362 			}
       
   363 		else
       
   364 			TEST2(error, KErrNone);
       
   365 
       
   366 		}
       
   367 
       
   368 	active->StartL();
       
   369 	client->AddEventType(*type, active->iStatus);
       
   370 	CActiveScheduler::Start();
       
   371 	TEST2(active->iStatus.Int(), KErrAlreadyExists);
       
   372 
       
   373 	CleanupStack::PopAndDestroy(3, client); // active, type, client
       
   374    test.Printf(_L("===CLogClient::AddEventType() client side OOM test succeeded at iteration %d\n"), failCount);
       
   375 	}
       
   376 
       
   377 /**
       
   378 @SYMTestCaseID          SYSLIB-LOGENG-CT-0889
       
   379 @SYMTestCaseDesc	    Tests for CLogClient::AddEventType() function
       
   380 @SYMTestPriority 	    High
       
   381 @SYMTestActions  	    Tests for adding events to the log
       
   382                         Check for memory errors and error in the environment 
       
   383 						Test for adding the same event and check for already exits error.
       
   384 @SYMTestExpectedResults Test must not fail
       
   385 @SYMREQ                 REQ0000
       
   386 */
       
   387 LOCAL_C void TestAddEventType3L()
       
   388 	{
       
   389 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0889 "));
       
   390 	
       
   391 	CLogClient* client = CLogClient::NewL(theFs);
       
   392 	CleanupStack::PushL(client);
       
   393 	
       
   394 	CLogEventType* type = CLogEventType::NewL();
       
   395 	CleanupStack::PushL(type);
       
   396 
       
   397 	type->SetUid(KTestEventUid);
       
   398 	type->SetDescription(KTestEventDesc1);
       
   399 	type->SetLoggingEnabled(ETrue);
       
   400 
       
   401 	CTestActive* active = new(ELeave)CTestActive();
       
   402 	CleanupStack::PushL(active);
       
   403 
       
   404 	TInt failCount = 0;
       
   405 
       
   406 	TBool finished = EFalse;
       
   407 	TInt error;
       
   408 
       
   409 	while(!finished)
       
   410 		{
       
   411 		error = KErrNone;
       
   412 
       
   413 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
   414 		client->AddEventType(*type, active->iStatus);
       
   415 	
       
   416 		active->StartL();
       
   417 		CActiveScheduler::Start();
       
   418 		
       
   419 		if (active->iStatus == KErrNone)
       
   420 			finished = ETrue;
       
   421 		else
       
   422 			error = active->iStatus.Int();
       
   423 
       
   424 		__LOGSERV_UHEAP_RESET;
       
   425 
       
   426 		if (error == KErrNoMemory)
       
   427 			{
       
   428 			active->StartL();
       
   429 			client->GetEventType(*type, active->iStatus);
       
   430 			CActiveScheduler::Start();
       
   431 			TEST2(active->iStatus.Int(), KErrNotFound);
       
   432 			}
       
   433 		else
       
   434 			TEST2(error, KErrNone);
       
   435 
       
   436 		}
       
   437 
       
   438 	active->StartL();
       
   439 	client->AddEventType(*type, active->iStatus);
       
   440 	CActiveScheduler::Start();
       
   441 	TEST2(active->iStatus.Int(), KErrAlreadyExists);
       
   442 
       
   443 	CleanupStack::PopAndDestroy(3, client); // active, type, client
       
   444 	test.Printf(_L("===CLogClient::AddEventType() server side OOM test succeeded at iteration %d\n"), failCount);
       
   445 	}
       
   446 
       
   447 /**
       
   448 @SYMTestCaseID          SYSLIB-LOGENG-CT-0890
       
   449 @SYMTestCaseDesc	    Tests for CLogClient::GetEventType() function 
       
   450 @SYMTestPriority 	    High
       
   451 @SYMTestActions  	    Tests for getting event type for the specific UID  from the log
       
   452                         Check for memory errors and error in the environment
       
   453 @SYMTestExpectedResults Test must not fail
       
   454 @SYMREQ                 REQ0000
       
   455 */
       
   456 LOCAL_C void TestGetEventType1L()
       
   457 	{
       
   458 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0890 "));
       
   459 	
       
   460 	CLogClient* client = CLogClient::NewL(theFs);
       
   461 	CleanupStack::PushL(client);
       
   462 	
       
   463 	CLogEventType* type = CLogEventType::NewL();
       
   464 	CleanupStack::PushL(type);
       
   465 
       
   466 	type->SetUid(KTestEventUid);
       
   467 
       
   468 	CTestActive* active = new(ELeave)CTestActive();
       
   469 	CleanupStack::PushL(active);
       
   470 
       
   471 	TInt failCount = 0;
       
   472 	TBool finished = EFalse;
       
   473 
       
   474 	while(!finished)
       
   475 		{
       
   476 		__UHEAP_FAILNEXT(++failCount);
       
   477 
       
   478 		client->GetEventType(*type, active->iStatus);
       
   479 
       
   480 		active->StartL();
       
   481 		CActiveScheduler::Start();
       
   482 		
       
   483 		if (active->iStatus == KErrNone)
       
   484 			finished = ETrue;
       
   485 		else
       
   486 			{
       
   487 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
   488 			TEST(type->Description() == KNullDesC);
       
   489 			}
       
   490 
       
   491 		__UHEAP_RESET;
       
   492 		}
       
   493 
       
   494 	TEST(type->Uid() == KTestEventUid);
       
   495 	TEST(type->Description() == KTestEventDesc1);
       
   496 	TEST(type->LoggingEnabled());
       
   497 
       
   498 	CleanupStack::PopAndDestroy(3, client); // active, type, client
       
   499     test.Printf(_L("===CLogClient::GetEventType() client side OOM test succeeded at iteration %d\n"), failCount);
       
   500 	}
       
   501 
       
   502 /**
       
   503 @SYMTestCaseID          SYSLIB-LOGENG-CT-0891
       
   504 @SYMTestCaseDesc	    Tests for CLogClient::GetEventType() function 
       
   505 @SYMTestPriority 	    High
       
   506 @SYMTestActions  	    Tests for getting event type for the specific UID  from the log
       
   507                         Check for memory errors and error in the environment
       
   508 @SYMTestExpectedResults Test must not fail
       
   509 @SYMREQ                 REQ0000
       
   510 */
       
   511 LOCAL_C void TestGetEventType3L()
       
   512 	{
       
   513 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0891 "));
       
   514 	
       
   515 	CLogClient* client = CLogClient::NewL(theFs);
       
   516 	CleanupStack::PushL(client);
       
   517 	
       
   518 	CLogEventType* type = CLogEventType::NewL();
       
   519 	CleanupStack::PushL(type);
       
   520 
       
   521 	type->SetUid(KTestEventUid);
       
   522 
       
   523 	CTestActive* active = new(ELeave)CTestActive();
       
   524 	CleanupStack::PushL(active);
       
   525 
       
   526 	TInt failCount = 0;
       
   527 	TBool finished = EFalse;
       
   528 
       
   529 	while(!finished)
       
   530 		{
       
   531 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
   532 
       
   533 		client->GetEventType(*type, active->iStatus);
       
   534 
       
   535 		active->StartL();
       
   536 		CActiveScheduler::Start();
       
   537 		
       
   538 		if (active->iStatus == KErrNone)
       
   539 			finished = ETrue;
       
   540 		else
       
   541 			{
       
   542 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
   543 			TEST(type->Description() == KNullDesC);
       
   544 			}
       
   545 
       
   546 		__LOGSERV_UHEAP_RESET;
       
   547 		}
       
   548 
       
   549 	TEST(type->Uid() == KTestEventUid);
       
   550 	TEST(type->Description() == KTestEventDesc1);
       
   551 	TEST(type->LoggingEnabled());
       
   552 
       
   553 	CleanupStack::PopAndDestroy(3, client); // active, type, client
       
   554     test.Printf(_L("===CLogClient::GetEventType() server side OOM test succeeded at iteration %d\n"), failCount);
       
   555 	}
       
   556 
       
   557 /**
       
   558 @SYMTestCaseID          SYSLIB-LOGENG-CT-0892
       
   559 @SYMTestCaseDesc	    Tests for CLogClient::ChangeEventType() function 
       
   560 @SYMTestPriority 	    High
       
   561 @SYMTestActions  	    Tests for changing the event type 
       
   562                         Check for memory errors and error in the environment 
       
   563 @SYMTestExpectedResults Test must not fail
       
   564 @SYMREQ                 REQ0000
       
   565 */
       
   566 LOCAL_C void TestChangeEventType1L()
       
   567 	{
       
   568 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0892 "));
       
   569 	
       
   570 	CLogClient* client = CLogClient::NewL(theFs);
       
   571 	CleanupStack::PushL(client);
       
   572 	
       
   573 	CTestActive* active = new(ELeave)CTestActive();
       
   574 	CleanupStack::PushL(active);
       
   575 
       
   576 	CLogEventType* type = CLogEventType::NewL();
       
   577 	CleanupStack::PushL(type);
       
   578 
       
   579 	type->SetUid(KTestEventUid);
       
   580 
       
   581 	type->SetDescription(KTestEventDesc1);
       
   582 	type->SetDescription(KTestEventDesc2);
       
   583 
       
   584 	TInt failCount = 0;
       
   585 	TBool finished = EFalse;
       
   586 	TInt error;
       
   587 
       
   588 	while(!finished)
       
   589 		{
       
   590 		error = KErrNone;
       
   591 
       
   592 		type->SetDescription(KTestEventDesc2);
       
   593 		type->SetLoggingEnabled(EFalse);
       
   594 
       
   595 		__UHEAP_FAILNEXT(++failCount);
       
   596 		
       
   597 		client->ChangeEventType(*type, active->iStatus);
       
   598 
       
   599 		active->StartL();
       
   600 		CActiveScheduler::Start();
       
   601 
       
   602 		if (active->iStatus == KErrNone)
       
   603 			finished = ETrue;
       
   604 		else
       
   605 			error = active->iStatus.Int();
       
   606 
       
   607 		__UHEAP_RESET;
       
   608 
       
   609 		if (error == KErrNoMemory)
       
   610 			{
       
   611 			active->StartL();
       
   612 			client->GetEventType(*type, active->iStatus);
       
   613 			CActiveScheduler::Start();
       
   614 			TEST2(active->iStatus.Int(), KErrNone);
       
   615 
       
   616 			TEST(type->Description() == KTestEventDesc1);
       
   617 			TEST(type->LoggingEnabled());
       
   618 			}
       
   619 		else
       
   620 			TEST2(error, KErrNone);
       
   621 		}
       
   622 
       
   623 	type->SetUid(KTestEventUid);
       
   624 
       
   625 	active->StartL();
       
   626 	client->GetEventType(*type, active->iStatus);
       
   627 	CActiveScheduler::Start();
       
   628 	TEST2(active->iStatus.Int(), KErrNone);
       
   629 
       
   630 	TEST(type->Uid() == KTestEventUid);
       
   631 	TEST(type->Description() == KTestEventDesc2);
       
   632 	TEST(type->LoggingEnabled() == EFalse);
       
   633 
       
   634 	CleanupStack::PopAndDestroy(3, client); // type, active, client
       
   635     test.Printf(_L("===CLogClient::ChangeEventType() client side OOM test succeeded at iteration %d\n"), failCount);
       
   636 	}
       
   637 
       
   638 /**
       
   639 @SYMTestCaseID          SYSLIB-LOGENG-CT-0893
       
   640 @SYMTestCaseDesc	    Tests for CLogClient::ChangeEventType() function 
       
   641 @SYMTestPriority 	    High
       
   642 @SYMTestActions  	    Tests for changing the event type. 
       
   643                         Check for memory errors and error in the environment 
       
   644 @SYMTestExpectedResults Test must not fail
       
   645 @SYMREQ                 REQ0000
       
   646 */
       
   647 LOCAL_C void TestChangeEventType3L()
       
   648 	{
       
   649 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0893 "));
       
   650 	
       
   651 	CLogClient* client = CLogClient::NewL(theFs);
       
   652 	CleanupStack::PushL(client);
       
   653 	
       
   654 	CTestActive* active = new(ELeave)CTestActive();
       
   655 	CleanupStack::PushL(active);
       
   656 
       
   657 	CLogEventType* type = CLogEventType::NewL();
       
   658 	CleanupStack::PushL(type);
       
   659 
       
   660 	type->SetUid(KTestEventUid);
       
   661 
       
   662 	type->SetDescription(KTestEventDesc1);
       
   663 	type->SetDescription(KTestEventDesc2);
       
   664 
       
   665 	TInt failCount = 0;
       
   666 	TBool finished = EFalse;
       
   667 	TInt error;
       
   668 
       
   669 	while(!finished)
       
   670 		{
       
   671 		error = KErrNone;
       
   672 
       
   673 		type->SetDescription(KTestEventDesc2);
       
   674 		type->SetLoggingEnabled(EFalse);
       
   675 
       
   676 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
   677 		
       
   678 		client->ChangeEventType(*type, active->iStatus);
       
   679 
       
   680 		active->StartL();
       
   681 		CActiveScheduler::Start();
       
   682 
       
   683 		if (active->iStatus == KErrNone)
       
   684 			finished = ETrue;
       
   685 		else
       
   686 			error = active->iStatus.Int();
       
   687 
       
   688 		__LOGSERV_UHEAP_RESET;
       
   689 
       
   690 		if (error == KErrNoMemory)
       
   691 			{
       
   692 			active->StartL();
       
   693 			client->GetEventType(*type, active->iStatus);
       
   694 			CActiveScheduler::Start();
       
   695 			TEST2(active->iStatus.Int(), KErrNone);
       
   696 
       
   697 			TEST(type->Description() == KTestEventDesc1);
       
   698 			TEST(type->LoggingEnabled());
       
   699 			}
       
   700 		else
       
   701 			TEST2(error, KErrNone);
       
   702 		}
       
   703 
       
   704 	type->SetUid(KTestEventUid);
       
   705 
       
   706 	active->StartL();
       
   707 	client->GetEventType(*type, active->iStatus);
       
   708 	CActiveScheduler::Start();
       
   709 	TEST2(active->iStatus.Int(), KErrNone);
       
   710 
       
   711 	TEST(type->Uid() == KTestEventUid);
       
   712 	TEST(type->Description() == KTestEventDesc2);
       
   713 	TEST(type->LoggingEnabled() == EFalse);
       
   714 
       
   715 	CleanupStack::PopAndDestroy(3, client); // type, active, client
       
   716     test.Printf(_L("===CLogClient::ChangeEventType() server side OOM test succeeded at iteration %d\n"), failCount);
       
   717 	}
       
   718 
       
   719 /**
       
   720 @SYMTestCaseID          SYSLIB-LOGENG-CT-0894
       
   721 @SYMTestCaseDesc	    Tests for CLogClient::DeleteEventType() function 
       
   722 @SYMTestPriority 	    High
       
   723 @SYMTestActions  	    Tests for deleting of event type.
       
   724                         After deletion check by trying to retrieve the event.
       
   725 						Check for ErrNotFound,error flag
       
   726 @SYMTestExpectedResults Test must not fail
       
   727 @SYMREQ                 REQ0000
       
   728 */
       
   729 LOCAL_C void TestDeleteEventType1L()
       
   730 	{
       
   731 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0894 "));
       
   732 
       
   733 	CLogClient* client = CLogClient::NewL(theFs);
       
   734 	CleanupStack::PushL(client);
       
   735 	
       
   736 	CTestActive* active = new(ELeave)CTestActive();
       
   737 	CleanupStack::PushL(active);
       
   738 
       
   739 	CLogEventType* type = CLogEventType::NewL();
       
   740 	CleanupStack::PushL(type);
       
   741 
       
   742 	type->SetUid(KTestEventUid);
       
   743 
       
   744 	TInt failCount = 0;
       
   745 	TBool finished = EFalse;
       
   746 	TInt error;
       
   747 
       
   748 	while(!finished)
       
   749 		{
       
   750 		error = KErrNone;
       
   751 
       
   752 		__UHEAP_FAILNEXT(++failCount);
       
   753 		client->DeleteEventType(KTestEventUid, active->iStatus);
       
   754 
       
   755 		active->StartL();
       
   756 		CActiveScheduler::Start();
       
   757 
       
   758 		if (active->iStatus == KErrNone)
       
   759 			finished = ETrue;
       
   760 		else
       
   761 			error = active->iStatus.Int();
       
   762 
       
   763 		__UHEAP_RESET;
       
   764 
       
   765 		if (error == KErrNoMemory)
       
   766 			{
       
   767 			active->StartL();
       
   768 			client->GetEventType(*type, active->iStatus);
       
   769 			CActiveScheduler::Start();
       
   770 			TEST2(active->iStatus.Int(), KErrNone);
       
   771 			}
       
   772 		else
       
   773 			TEST2(error, KErrNone);
       
   774 		}
       
   775 
       
   776 	active->StartL();
       
   777 	client->GetEventType(*type, active->iStatus);
       
   778 	CActiveScheduler::Start();
       
   779 	TEST2(active->iStatus.Int(), KErrNotFound);
       
   780 
       
   781 	CleanupStack::PopAndDestroy(3, client); // type, active, client
       
   782     test.Printf(_L("===CLogClient::DeleteEventType() client side OOM test succeeded at iteration %d\n"), failCount);
       
   783 	}
       
   784 
       
   785 /**
       
   786 @SYMTestCaseID          SYSLIB-LOGENG-CT-0895
       
   787 @SYMTestCaseDesc	    Tests for CLogClient::DeleteEventType() function 
       
   788 @SYMTestPriority 	    High
       
   789 @SYMTestActions  	    Tests for deleting of event type.
       
   790                         After deletion check by trying to retrieve the event.
       
   791 						Check for ErrNotFound,error flag.
       
   792 @SYMTestExpectedResults Test must not fail
       
   793 @SYMREQ                 REQ0000
       
   794 */
       
   795 LOCAL_C void TestDeleteEventType3L()
       
   796 	{
       
   797 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0895 "));
       
   798 	
       
   799 	CLogClient* client = CLogClient::NewL(theFs);
       
   800 	CleanupStack::PushL(client);
       
   801 	
       
   802 	CTestActive* active = new(ELeave)CTestActive();
       
   803 	CleanupStack::PushL(active);
       
   804 
       
   805 	CLogEventType* type = CLogEventType::NewL();
       
   806 	CleanupStack::PushL(type);
       
   807 
       
   808 	type->SetUid(KTestEventUid);
       
   809 
       
   810 	TInt failCount = 0;
       
   811 
       
   812 	TBool finished = EFalse;
       
   813 	TInt error;
       
   814 
       
   815 	while(!finished)
       
   816 		{
       
   817 		error = KErrNone;
       
   818 
       
   819 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
   820 		client->DeleteEventType(KTestEventUid, active->iStatus);
       
   821 
       
   822 		active->StartL();
       
   823 		CActiveScheduler::Start();
       
   824 
       
   825 		if (active->iStatus == KErrNone)
       
   826 			finished = ETrue;
       
   827 		else
       
   828 			error = active->iStatus.Int();
       
   829 
       
   830 		__LOGSERV_UHEAP_RESET;
       
   831 
       
   832 		if (error == KErrNoMemory)
       
   833 			{
       
   834 			active->StartL();
       
   835 			client->GetEventType(*type, active->iStatus);
       
   836 			CActiveScheduler::Start();
       
   837 			TEST2(active->iStatus.Int(), KErrNone);
       
   838 			}
       
   839 		else
       
   840 			TEST2(error, KErrNone);
       
   841 		}
       
   842 
       
   843 	active->StartL();
       
   844 	client->GetEventType(*type, active->iStatus);
       
   845 	CActiveScheduler::Start();
       
   846 	TEST2(active->iStatus.Int(), KErrNotFound);
       
   847 
       
   848 	CleanupStack::PopAndDestroy(3, client); // type, active, client
       
   849     test.Printf(_L("===CLogClient::DeleteEventType() server side OOM test succeeded at iteration %d\n"), failCount);
       
   850 	}
       
   851 
       
   852 /**
       
   853 @SYMTestCaseID          SYSLIB-LOGENG-CT-0896
       
   854 @SYMTestCaseDesc	    Tests for adding event CLogClient::AddEvent() function  
       
   855 @SYMTestPriority 	    High
       
   856 @SYMTestActions  	    Add logeventtype and logevent to the log
       
   857                         Tests for memory errors and environment errors.
       
   858 @SYMTestExpectedResults Test must not fail 
       
   859 @SYMREQ                 REQ0000
       
   860 */
       
   861 LOCAL_C void TestAddEvent1L()
       
   862 	{
       
   863 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0896 "));
       
   864 
       
   865 	CLogClient* client = CLogClient::NewL(theFs);
       
   866 	CleanupStack::PushL(client);
       
   867 	
       
   868 	CLogEventType* type = CLogEventType::NewL();
       
   869 	CleanupStack::PushL(type);
       
   870 
       
   871 	type->SetUid(KTestEventUid);
       
   872 	type->SetDescription(KTestEventDesc1);
       
   873 	type->SetLoggingEnabled(ETrue);
       
   874 
       
   875 	CTestActive* active = new(ELeave)CTestActive();
       
   876 	CleanupStack::PushL(active);
       
   877 
       
   878 	active->StartL();
       
   879 	client->AddEventType(*type, active->iStatus);
       
   880 	CActiveScheduler::Start();
       
   881 	TEST2(active->iStatus.Int(), KErrNone);
       
   882 
       
   883 	CLogEvent* event = CLogEvent::NewL();
       
   884 	CleanupStack::PushL(event);
       
   885 
       
   886 	TTime now;
       
   887 	now.UniversalTime();
       
   888 
       
   889 	event->SetEventType(KTestEventUid);
       
   890 	event->SetRemoteParty(KTestRemoteParty1);
       
   891 	event->SetDirection(KTestDirection1);
       
   892 	event->SetDurationType(KTestDurationType1);
       
   893 	event->SetDuration(KTestDuration1);
       
   894 	event->SetStatus(KTestStatus1);
       
   895 	event->SetSubject(KTestSubject1);
       
   896 	event->SetNumber(KTestNumber1);
       
   897 	event->SetContact(KTestContact1);
       
   898 	event->SetLink(KTestLink1);
       
   899 	event->SetDataL(KTestData1);
       
   900 
       
   901 	TInt failCount = 0;
       
   902 	TBool finished = EFalse;
       
   903 	TInt error;
       
   904 
       
   905 	while(!finished)
       
   906 		{
       
   907 		error = KErrNone;
       
   908 
       
   909 		__UHEAP_FAILNEXT(++failCount);
       
   910 		client->AddEvent(*event, active->iStatus);
       
   911 		active->StartL();
       
   912 		CActiveScheduler::Start();
       
   913 
       
   914 		if (active->iStatus == KErrNone)
       
   915 			finished = ETrue;
       
   916 		else
       
   917 			error = active->iStatus.Int();
       
   918 
       
   919 		__UHEAP_RESET;
       
   920 
       
   921 		if(error != KErrNoMemory)
       
   922 			{
       
   923 			TEST2(error, KErrNone);
       
   924 			}
       
   925 		}
       
   926 
       
   927 	TEST(event->Time() >= now);
       
   928 	TEST(event->Description() == KTestEventDesc1);
       
   929 
       
   930 	active->StartL();
       
   931 	client->GetEvent(*event, active->iStatus);
       
   932 	CActiveScheduler::Start();
       
   933 	TEST2(active->iStatus.Int(), KErrNone);
       
   934 
       
   935 	CleanupStack::PopAndDestroy(4, client); // event, active, type, client
       
   936     test.Printf(_L("===CLogClient::AddEvent() client side OOM test succeeded at iteration %d\n"), failCount);
       
   937 	}
       
   938 
       
   939 /**
       
   940 @SYMTestCaseID          SYSLIB-LOGENG-CT-0897
       
   941 @SYMTestCaseDesc	    Tests for adding event CLogClient::AddEvent() function 
       
   942 @SYMTestPriority 	    High
       
   943 @SYMTestActions  	    Add logeventtype and logevent to the log
       
   944                         Tests for memory errors and environment errors.
       
   945 @SYMTestExpectedResults Test must not fail 
       
   946 @SYMREQ                 REQ0000
       
   947 */
       
   948 LOCAL_C void TestAddEvent3L()
       
   949 	{
       
   950 	
       
   951 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0897 "));
       
   952 	
       
   953 	CLogClient* client = CLogClient::NewL(theFs);
       
   954 	CleanupStack::PushL(client);
       
   955 
       
   956 	CLogEventType* type = CLogEventType::NewL();
       
   957 	CleanupStack::PushL(type);
       
   958 
       
   959 	type->SetUid(KTestEventUid);
       
   960 	type->SetDescription(KTestEventDesc1);
       
   961 	type->SetLoggingEnabled(ETrue);
       
   962 
       
   963 	CTestActive* active = new(ELeave)CTestActive();
       
   964 	CleanupStack::PushL(active);
       
   965 
       
   966 	active->StartL();
       
   967 	client->AddEventType(*type, active->iStatus);
       
   968 	CActiveScheduler::Start();
       
   969 	TEST2(active->iStatus.Int(), KErrNone);
       
   970 
       
   971 	CLogEvent* event = CLogEvent::NewL();
       
   972 	CleanupStack::PushL(event);
       
   973 
       
   974 	TTime now;
       
   975 	now.UniversalTime();
       
   976 
       
   977 	event->SetEventType(KTestEventUid);
       
   978 	event->SetRemoteParty(KTestRemoteParty1);
       
   979 	event->SetDirection(KTestDirection1);
       
   980 	event->SetDurationType(KTestDurationType1);
       
   981 	event->SetDuration(KTestDuration1);
       
   982 	event->SetStatus(KTestStatus1);
       
   983 	event->SetSubject(KTestSubject1);
       
   984 	event->SetNumber(KTestNumber1);
       
   985 	event->SetContact(KTestContact1);
       
   986 	event->SetLink(KTestLink1);
       
   987 	event->SetDataL(KTestData1);
       
   988 
       
   989 	TInt failCount = 0;
       
   990 	TBool finished = EFalse;
       
   991 	TInt error;
       
   992 
       
   993 	while(!finished)
       
   994 		{
       
   995 		error = KErrNone;
       
   996 
       
   997 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
   998 		client->AddEvent(*event, active->iStatus);
       
   999 		active->StartL();
       
  1000 		CActiveScheduler::Start();
       
  1001 
       
  1002 		if (active->iStatus == KErrNone)
       
  1003 			finished = ETrue;
       
  1004 		else
       
  1005 			error = active->iStatus.Int();
       
  1006 
       
  1007 		__LOGSERV_UHEAP_RESET;
       
  1008 
       
  1009 		if(error != KErrNoMemory)
       
  1010 			{
       
  1011 			TEST2(error, KErrNone);
       
  1012 			}
       
  1013 		}
       
  1014 
       
  1015 	TEST(event->Time() >= now);
       
  1016 	TEST(event->Description() == KTestEventDesc1);
       
  1017 
       
  1018 	active->StartL();
       
  1019 	client->GetEvent(*event, active->iStatus);
       
  1020 	CActiveScheduler::Start();
       
  1021 	TEST2(active->iStatus.Int(), KErrNone);
       
  1022 
       
  1023 	CleanupStack::PopAndDestroy(4, client); // event, active, type, client
       
  1024     test.Printf(_L("===CLogClient::AddEvent() server side OOM test succeeded at iteration %d\n"), failCount);
       
  1025 	}
       
  1026 
       
  1027 /**
       
  1028 @SYMTestCaseID          SYSLIB-LOGENG-CT-0898
       
  1029 @SYMTestCaseDesc	    Tests for retrieving details of an event 
       
  1030                         Tests for CLogClient::GetEvent() function.
       
  1031 @SYMTestPriority 	    High
       
  1032 @SYMTestActions  	    Tests for getting event details.Check for memory errors and error in the environment
       
  1033                         Tests for the integrity of the information
       
  1034 @SYMTestExpectedResults Test must not fail
       
  1035 @SYMREQ                 REQ0000
       
  1036 */
       
  1037 LOCAL_C void TestGetEvent1L()
       
  1038 	{
       
  1039 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0898 "));
       
  1040 	
       
  1041 	CLogClient* client = CLogClient::NewL(theFs);
       
  1042 	CleanupStack::PushL(client);
       
  1043 	
       
  1044 	CTestActive* active = new(ELeave)CTestActive();
       
  1045 	CleanupStack::PushL(active);
       
  1046 
       
  1047 	CLogEvent* event = CLogEvent::NewL();
       
  1048 	CleanupStack::PushL(event);
       
  1049 
       
  1050 	event->SetId(0);
       
  1051 
       
  1052 	TInt failCount = 0;
       
  1053 	TBool finished = EFalse;
       
  1054 
       
  1055 	while(!finished)
       
  1056 		{
       
  1057 		__UHEAP_FAILNEXT(++failCount);
       
  1058 		client->GetEvent(*event, active->iStatus);
       
  1059 
       
  1060 		active->StartL();
       
  1061 		CActiveScheduler::Start();
       
  1062 
       
  1063 		if (active->iStatus == KErrNone)
       
  1064 			finished = ETrue;
       
  1065 		else
       
  1066 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  1067 
       
  1068 		__UHEAP_RESET;
       
  1069 		}
       
  1070 
       
  1071 	TEST(event->Id() == 0);
       
  1072 	TEST(event->Time() > TTime(0));
       
  1073 	TEST(event->Description() == KTestEventDesc1);
       
  1074 	TEST(event->EventType() == KTestEventUid);
       
  1075 	TEST(event->RemoteParty() == KTestRemoteParty1);
       
  1076 	TEST(event->Direction() == KTestDirection1);
       
  1077 	TEST(event->DurationType() == KTestDurationType1);
       
  1078 	TEST(event->Duration() == KTestDuration1);
       
  1079 	TEST(event->Status() == KTestStatus1);
       
  1080 	TEST(event->Subject() == KTestSubject1);
       
  1081 	TEST(event->Number() == KTestNumber1);
       
  1082 	TEST(event->Contact() == KTestContact1);
       
  1083 	TEST(event->Link() == KTestLink1);
       
  1084 	TEST(event->Data() == KTestData1);
       
  1085 
       
  1086 	CleanupStack::PopAndDestroy(3, client); // event, active, client
       
  1087     test.Printf(_L("===CLogClient::AddEvent() client side OOM test succeeded at iteration %d\n"), failCount);
       
  1088 	}
       
  1089 
       
  1090 /**
       
  1091 @SYMTestCaseID          SYSLIB-LOGENG-CT-0899
       
  1092 @SYMTestCaseDesc	    Tests for retrieving details of an event.Tests for CLogClient::GetEventL() function 
       
  1093 @SYMTestPriority 	    High
       
  1094 @SYMTestActions  	    Tests for getting event details of UID 0.Check for memory errors and error in the environment
       
  1095                         Tests for the integrity of the information
       
  1096 @SYMTestExpectedResults Test must not fail
       
  1097 @SYMREQ                 REQ0000
       
  1098 */
       
  1099 LOCAL_C void TestGetEvent3L()
       
  1100 	{
       
  1101 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0899 "));
       
  1102 	
       
  1103 	CLogClient* client = CLogClient::NewL(theFs);
       
  1104 	CleanupStack::PushL(client);
       
  1105 	
       
  1106 	CTestActive* active = new(ELeave)CTestActive();
       
  1107 	CleanupStack::PushL(active);
       
  1108 
       
  1109 	CLogEvent* event = CLogEvent::NewL();
       
  1110 	CleanupStack::PushL(event);
       
  1111 
       
  1112 	event->SetId(0);
       
  1113 
       
  1114 	TInt failCount = 0;
       
  1115 	TBool finished = EFalse;
       
  1116 
       
  1117 	while(!finished)
       
  1118 		{
       
  1119 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  1120 		client->GetEvent(*event, active->iStatus);
       
  1121 
       
  1122 		active->StartL();
       
  1123 		CActiveScheduler::Start();
       
  1124 
       
  1125 		if (active->iStatus == KErrNone)
       
  1126 			finished = ETrue;
       
  1127 		else
       
  1128 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  1129 
       
  1130 		__LOGSERV_UHEAP_RESET;
       
  1131 		}
       
  1132 
       
  1133 	TEST(event->Id() == 0);
       
  1134 	TEST(event->Time() > TTime(0));
       
  1135 	TEST(event->Description() == KTestEventDesc1);
       
  1136 	TEST(event->EventType() == KTestEventUid);
       
  1137 	TEST(event->RemoteParty() == KTestRemoteParty1);
       
  1138 	TEST(event->Direction() == KTestDirection1);
       
  1139 	TEST(event->DurationType() == KTestDurationType1);
       
  1140 	TEST(event->Duration() == KTestDuration1);
       
  1141 	TEST(event->Status() == KTestStatus1);
       
  1142 	TEST(event->Subject() == KTestSubject1);
       
  1143 	TEST(event->Number() == KTestNumber1);
       
  1144 	TEST(event->Contact() == KTestContact1);
       
  1145 	TEST(event->Link() == KTestLink1);
       
  1146 	TEST(event->Data() == KTestData1);
       
  1147 
       
  1148 	CleanupStack::PopAndDestroy(3, client); // event, active, client
       
  1149     test.Printf(_L("===CLogClient::GetEvent() server side OOM test succeeded at iteration %d\n"), failCount);
       
  1150 	}
       
  1151 
       
  1152 /**
       
  1153 @SYMTestCaseID          SYSLIB-LOGENG-CT-0900
       
  1154 @SYMTestCaseDesc	    Tests for changing the log event details.
       
  1155                         Tests for CLogClient::ChangeEvent() function
       
  1156 @SYMTestPriority 	    High
       
  1157 @SYMTestActions  	    Tests for changing the event details.Check for memory errors and error in the environment
       
  1158                         If no memory error,get the event details and check for the integrity.
       
  1159 @SYMTestExpectedResults Test must not fail
       
  1160 @SYMREQ                 REQ0000
       
  1161 */
       
  1162 LOCAL_C void TestChangeEvent3L()
       
  1163 	{
       
  1164 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0900 "));
       
  1165 	
       
  1166 	CLogClient* client = CLogClient::NewL(theFs);
       
  1167 	CleanupStack::PushL(client);
       
  1168 	
       
  1169 	CTestActive* active = new(ELeave)CTestActive();
       
  1170 	CleanupStack::PushL(active);
       
  1171 
       
  1172 	CLogEvent* event = CLogEvent::NewL();
       
  1173 	CleanupStack::PushL(event);
       
  1174 
       
  1175 	TTime now;
       
  1176 	now.UniversalTime();
       
  1177 
       
  1178 	TInt failCount = 0;
       
  1179 	TBool finished = EFalse;
       
  1180 	TInt error;
       
  1181 
       
  1182 	while(!finished)
       
  1183 		{
       
  1184 		error = KErrNone;
       
  1185 
       
  1186 		event->SetId(0);
       
  1187 		event->SetTime(now);
       
  1188 		event->SetRemoteParty(KTestRemoteParty2);
       
  1189 		event->SetDirection(KTestDirection2);
       
  1190 		event->SetDurationType(KTestDurationType2);
       
  1191 		event->SetDuration(KTestDuration2);
       
  1192 		event->SetStatus(KTestStatus2);
       
  1193 		event->SetSubject(KTestSubject2);
       
  1194 		event->SetNumber(KTestNumber2);
       
  1195 		event->SetContact(KTestContact2);
       
  1196 		event->SetLink(KTestLink2);
       
  1197 		event->SetDataL(KTestData2);
       
  1198 
       
  1199 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  1200 		client->ChangeEvent(*event, active->iStatus);
       
  1201 
       
  1202 		active->StartL();
       
  1203 		CActiveScheduler::Start();
       
  1204 		if (active->iStatus == KErrNone)
       
  1205 			finished = ETrue;
       
  1206 		else
       
  1207 			error = active->iStatus.Int();
       
  1208 
       
  1209 		__LOGSERV_UHEAP_RESET;
       
  1210 
       
  1211 		if (error == KErrNoMemory)
       
  1212 			{
       
  1213 			active->StartL();
       
  1214 			client->GetEvent(*event, active->iStatus);
       
  1215 			CActiveScheduler::Start();
       
  1216 			TEST2(active->iStatus.Int(), KErrNone);
       
  1217 
       
  1218 			TEST(event->Id() == 0);
       
  1219 			TEST(event->Time() > TTime(0));
       
  1220 			TEST(event->Description() == KTestEventDesc1);
       
  1221 			TEST(event->EventType() == KTestEventUid);
       
  1222 			TEST(event->RemoteParty() == KTestRemoteParty1);
       
  1223 			TEST(event->Direction() == KTestDirection1);
       
  1224 			TEST(event->DurationType() == KTestDurationType1);
       
  1225 			TEST(event->Duration() == KTestDuration1);
       
  1226 			TEST(event->Status() == KTestStatus1);
       
  1227 			TEST(event->Subject() == KTestSubject1);
       
  1228 			TEST(event->Number() == KTestNumber1);
       
  1229 			TEST(event->Contact() == KTestContact1);
       
  1230 			TEST(event->Link() == KTestLink1);
       
  1231 			TEST(event->Data() == KTestData1);
       
  1232 			}
       
  1233 		else
       
  1234 			TEST2(error, KErrNone);
       
  1235 		}
       
  1236 
       
  1237 	active->StartL();
       
  1238 	client->GetEvent(*event, active->iStatus);
       
  1239 	CActiveScheduler::Start();
       
  1240 	TEST2(active->iStatus.Int(), KErrNone);
       
  1241 
       
  1242 	TEST(event->Id() == 0);
       
  1243 	TEST(event->Time() == now);
       
  1244 	TEST(event->Description() == KTestEventDesc1);
       
  1245 	TEST(event->EventType() == KTestEventUid);
       
  1246 	TEST(event->RemoteParty() == KTestRemoteParty2);
       
  1247 	TEST(event->Direction() == KTestDirection2);
       
  1248 	TEST(event->DurationType() == KTestDurationType2);
       
  1249 	TEST(event->Duration() == KTestDuration2);
       
  1250 	TEST(event->Status() == KTestStatus2);
       
  1251 	TEST(event->Subject() == KTestSubject2);
       
  1252 	TEST(event->Number() == KTestNumber2);
       
  1253 	TEST(event->Contact() == KTestContact2);
       
  1254 	TEST(event->Link() == KTestLink2);
       
  1255 	TEST(event->Data() == KTestData2);
       
  1256 
       
  1257 	CleanupStack::PopAndDestroy(3, client); // event, active, client
       
  1258     test.Printf(_L("===CLogClient::ChangeEvent() server side OOM test succeeded at iteration %d\n"), failCount);
       
  1259 	}
       
  1260 
       
  1261 /**
       
  1262 @SYMTestCaseID          SYSLIB-LOGENG-CT-0901
       
  1263 @SYMTestCaseDesc	    Tests for changing the log event details.Tests for CLogClient::ChangeEvent() function
       
  1264 @SYMTestPriority 	    High
       
  1265 @SYMTestActions  	    Tests for changing the event details.Check for memory errors and error in the environment
       
  1266                         If no memory error,get the event details and check for the integrity.
       
  1267 @SYMTestExpectedResults Test must not fail
       
  1268 @SYMREQ                 REQ0000
       
  1269 */
       
  1270 LOCAL_C void TestChangeEvent1L()
       
  1271 	{
       
  1272 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0901 "));
       
  1273 	
       
  1274 	CLogClient* client = CLogClient::NewL(theFs);
       
  1275 	CleanupStack::PushL(client);
       
  1276 	
       
  1277 	CTestActive* active = new(ELeave)CTestActive();
       
  1278 	CleanupStack::PushL(active);
       
  1279 
       
  1280 	CLogEvent* event = CLogEvent::NewL();
       
  1281 	CleanupStack::PushL(event);
       
  1282 
       
  1283 	TTime now;
       
  1284 	now.UniversalTime();
       
  1285 
       
  1286 	TInt failCount = 0;
       
  1287 	TBool finished = EFalse;
       
  1288 	TInt error;
       
  1289 
       
  1290 	while(!finished)
       
  1291 		{
       
  1292 		error = KErrNone;
       
  1293 
       
  1294 		event->SetId(0);
       
  1295 		event->SetTime(now);
       
  1296 		event->SetRemoteParty(KTestRemoteParty2);
       
  1297 		event->SetDirection(KTestDirection2);
       
  1298 		event->SetDurationType(KTestDurationType2);
       
  1299 		event->SetDuration(KTestDuration2);
       
  1300 		event->SetStatus(KTestStatus2);
       
  1301 		event->SetSubject(KTestSubject2);
       
  1302 		event->SetNumber(KTestNumber2);
       
  1303 		event->SetContact(KTestContact2);
       
  1304 		event->SetLink(KTestLink2);
       
  1305 		event->SetDataL(KTestData2);
       
  1306 
       
  1307 		__UHEAP_FAILNEXT(++failCount);
       
  1308 		client->ChangeEvent(*event, active->iStatus);
       
  1309 
       
  1310 		active->StartL();
       
  1311 		CActiveScheduler::Start();
       
  1312 		if (active->iStatus == KErrNone)
       
  1313 			finished = ETrue;
       
  1314 		else
       
  1315 			error = active->iStatus.Int();
       
  1316 
       
  1317 		__UHEAP_RESET;
       
  1318 
       
  1319 		if (error == KErrNoMemory)
       
  1320 			{
       
  1321 			active->StartL();
       
  1322 			client->GetEvent(*event, active->iStatus);
       
  1323 			CActiveScheduler::Start();
       
  1324 			TEST2(active->iStatus.Int(), KErrNone);
       
  1325 
       
  1326 			TEST(event->Id() == 0);
       
  1327 			TEST(event->Time() > TTime(0));
       
  1328 			TEST(event->Description() == KTestEventDesc1);
       
  1329 			TEST(event->EventType() == KTestEventUid);
       
  1330 			TEST(event->RemoteParty() == KTestRemoteParty1);
       
  1331 			TEST(event->Direction() == KTestDirection1);
       
  1332 			TEST(event->DurationType() == KTestDurationType1);
       
  1333 			TEST(event->Duration() == KTestDuration1);
       
  1334 			TEST(event->Status() == KTestStatus1);
       
  1335 			TEST(event->Subject() == KTestSubject1);
       
  1336 			TEST(event->Number() == KTestNumber1);
       
  1337 			TEST(event->Contact() == KTestContact1);
       
  1338 			TEST(event->Link() == KTestLink1);
       
  1339 			TEST(event->Data() == KTestData1);
       
  1340 			}
       
  1341 		else
       
  1342 			TEST2(error, KErrNone);
       
  1343 		}
       
  1344 
       
  1345 	active->StartL();
       
  1346 	client->GetEvent(*event, active->iStatus);
       
  1347 	CActiveScheduler::Start();
       
  1348 	TEST2(active->iStatus.Int(), KErrNone);
       
  1349 
       
  1350 	TEST(event->Id() == 0);
       
  1351 	TEST(event->Time() == now);
       
  1352 	TEST(event->Description() == KTestEventDesc1);
       
  1353 	TEST(event->EventType() == KTestEventUid);
       
  1354 	TEST(event->RemoteParty() == KTestRemoteParty2);
       
  1355 	TEST(event->Direction() == KTestDirection2);
       
  1356 	TEST(event->DurationType() == KTestDurationType2);
       
  1357 	TEST(event->Duration() == KTestDuration2);
       
  1358 	TEST(event->Status() == KTestStatus2);
       
  1359 	TEST(event->Subject() == KTestSubject2);
       
  1360 	TEST(event->Number() == KTestNumber2);
       
  1361 	TEST(event->Contact() == KTestContact2);
       
  1362 	TEST(event->Link() == KTestLink2);
       
  1363 	TEST(event->Data() == KTestData2);
       
  1364 
       
  1365 	CleanupStack::PopAndDestroy(3, client); // event, active, client
       
  1366     test.Printf(_L("===CLogClient::ChangeEvent() client side OOM test succeeded at iteration %d\n"), failCount);
       
  1367 	}
       
  1368 
       
  1369 /**
       
  1370 @SYMTestCaseID          SYSLIB-LOGENG-CT-0902
       
  1371 @SYMTestCaseDesc	    Tests for deleting an event from the main event log.Tests for CLogClient::DeleteEvent() function
       
  1372 @SYMTestPriority 	    High
       
  1373 @SYMTestActions  	    Tests for deleting an event with unique ID of 0,check for any memory errors
       
  1374                         Try to get the deleted event and test for not found error.
       
  1375 @SYMTestExpectedResults Test must not fail
       
  1376 @SYMREQ                 REQ0000
       
  1377 */
       
  1378 LOCAL_C void TestDeleteEvent1L()
       
  1379 	{
       
  1380 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0902 "));
       
  1381 	
       
  1382 	CLogClient* client = CLogClient::NewL(theFs);
       
  1383 	CleanupStack::PushL(client);
       
  1384 	
       
  1385 	CTestActive* active = new(ELeave)CTestActive();
       
  1386 	CleanupStack::PushL(active);
       
  1387 
       
  1388 	CLogEvent* event = CLogEvent::NewL();
       
  1389 	CleanupStack::PushL(event);
       
  1390 
       
  1391 	event->SetId(0);
       
  1392 
       
  1393 	TInt failCount = 0;
       
  1394 	TBool finished = EFalse;
       
  1395 	TInt error;
       
  1396 
       
  1397 	while(!finished)
       
  1398 		{
       
  1399 		error = KErrNone;
       
  1400 
       
  1401 		__UHEAP_FAILNEXT(++failCount);
       
  1402 		client->DeleteEvent(0, active->iStatus);
       
  1403 
       
  1404 		if (error == KErrNone)
       
  1405 			{
       
  1406 			active->StartL();
       
  1407 			CActiveScheduler::Start();
       
  1408 
       
  1409 			if (active->iStatus == KErrNone)
       
  1410 				finished = ETrue;
       
  1411 			else
       
  1412 				error = active->iStatus.Int();
       
  1413 			}
       
  1414 
       
  1415 		__UHEAP_RESET;
       
  1416 
       
  1417 		if (error == KErrNoMemory)
       
  1418 			{
       
  1419 			active->StartL();
       
  1420 			client->GetEvent(*event, active->iStatus);
       
  1421 			CActiveScheduler::Start();
       
  1422 			TEST2(active->iStatus.Int(), KErrNone);
       
  1423 			}
       
  1424 		else
       
  1425 			TEST2(error, KErrNone);
       
  1426 		}
       
  1427 
       
  1428 	active->StartL();
       
  1429 	client->GetEvent(*event, active->iStatus);
       
  1430 	CActiveScheduler::Start();
       
  1431 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  1432 
       
  1433 	CleanupStack::PopAndDestroy(3); // event, active, client
       
  1434     test.Printf(_L("===CLogClient::DeleteEvent() client side OOM test succeeded at iteration %d\n"), failCount);
       
  1435 	}
       
  1436 
       
  1437 /**
       
  1438 @SYMTestCaseID          SYSLIB-LOGENG-CT-0903
       
  1439 @SYMTestCaseDesc	    Tests for deleting an event from the main event log
       
  1440 @SYMTestPriority 	    High
       
  1441 @SYMTestActions  	    Tests for deleting an event with unique ID of 0,check for any memory errors
       
  1442                         Try to get the deleted event and test for not found error.
       
  1443 @SYMTestExpectedResults Test must not fail
       
  1444 @SYMREQ                 REQ0000
       
  1445 */
       
  1446 LOCAL_C void TestDeleteEvent3L()
       
  1447 	{
       
  1448 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0903 "));
       
  1449 	
       
  1450 	CLogClient* client = CLogClient::NewL(theFs);
       
  1451 	CleanupStack::PushL(client);
       
  1452 	
       
  1453 	CTestActive* active = new(ELeave)CTestActive();
       
  1454 	CleanupStack::PushL(active);
       
  1455 
       
  1456 	CLogEvent* event = CLogEvent::NewL();
       
  1457 	CleanupStack::PushL(event);
       
  1458 
       
  1459 	event->SetId(0);
       
  1460 
       
  1461 	TInt failCount = 0;
       
  1462 	TBool finished = EFalse;
       
  1463 	TInt error;
       
  1464 
       
  1465 	while(!finished)
       
  1466 		{
       
  1467 		error = KErrNone;
       
  1468 
       
  1469 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  1470 		client->DeleteEvent(0, active->iStatus);
       
  1471 
       
  1472 		if (error == KErrNone)
       
  1473 			{
       
  1474 			active->StartL();
       
  1475 			CActiveScheduler::Start();
       
  1476 
       
  1477 			if (active->iStatus == KErrNone)
       
  1478 				finished = ETrue;
       
  1479 			else
       
  1480 				error = active->iStatus.Int();
       
  1481 			}
       
  1482 
       
  1483 		__LOGSERV_UHEAP_RESET;
       
  1484 
       
  1485 		if (error == KErrNoMemory)
       
  1486 			{
       
  1487 			active->StartL();
       
  1488 			client->GetEvent(*event, active->iStatus);
       
  1489 			CActiveScheduler::Start();
       
  1490 			TEST2(active->iStatus.Int(), KErrNone);
       
  1491 			}
       
  1492 		else
       
  1493 			TEST2(error, KErrNone);
       
  1494 		}
       
  1495 
       
  1496 	active->StartL();
       
  1497 	client->GetEvent(*event, active->iStatus);
       
  1498 	CActiveScheduler::Start();
       
  1499 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  1500 
       
  1501 	CleanupStack::PopAndDestroy(3, client); // event, active, client
       
  1502     test.Printf(_L("===CLogClient::DeleteEvent() server side OOM test succeeded at iteration %d\n"), failCount);
       
  1503 	}
       
  1504 
       
  1505 /**
       
  1506 @SYMTestCaseID          SYSLIB-LOGENG-CT-0904
       
  1507 @SYMTestCaseDesc	    Tests for CLogClient::GetConfig() function
       
  1508 @SYMTestPriority 	    High
       
  1509 @SYMTestActions  	    Set the configuration data with zero values.
       
  1510                         Get the log engine configuration data,check for any memory errors.
       
  1511 						Tests for the integrity of the data
       
  1512 @SYMTestExpectedResults Test must not fail
       
  1513 @SYMREQ                 REQ0000
       
  1514 */
       
  1515 LOCAL_C void TestGetConfig1L()
       
  1516 	{
       
  1517 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0904 "));
       
  1518 	
       
  1519 	CLogClient* client = CLogClient::NewL(theFs);
       
  1520 	CleanupStack::PushL(client);
       
  1521 	
       
  1522 	CTestActive* active = new(ELeave)CTestActive();
       
  1523 	CleanupStack::PushL(active);
       
  1524 
       
  1525 	TLogConfig config;
       
  1526 
       
  1527 	TEST(config.iMaxEventAge == 0);
       
  1528 	TEST(config.iMaxLogSize == 0);
       
  1529 	TEST(config.iMaxRecentLogSize == 0);
       
  1530 
       
  1531 	TInt failCount = 0;
       
  1532 	TBool finished = EFalse;
       
  1533 
       
  1534 	while(!finished)
       
  1535 		{
       
  1536 		__UHEAP_FAILNEXT(++failCount);
       
  1537 		client->GetConfig(config, active->iStatus);
       
  1538 
       
  1539 		active->StartL();
       
  1540 		CActiveScheduler::Start();
       
  1541 
       
  1542 		if (active->iStatus == KErrNone)
       
  1543 			finished = ETrue;
       
  1544 		else
       
  1545 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  1546 
       
  1547 		__UHEAP_RESET;
       
  1548 		}
       
  1549 
       
  1550 	TEST(config.iMaxEventAge > 0);
       
  1551 	TEST(config.iMaxLogSize > 0);
       
  1552 	TEST(config.iMaxRecentLogSize > 0);
       
  1553 
       
  1554 	CleanupStack::PopAndDestroy(2, client); // active, client
       
  1555     test.Printf(_L("===CLogClient::GetConfig() client side OOM test succeeded at iteration %d\n"), failCount);
       
  1556 	}
       
  1557 
       
  1558 /**
       
  1559 @SYMTestCaseID          SYSLIB-LOGENG-CT-0905
       
  1560 @SYMTestCaseDesc	    Tests for CLogClient::GetConfig() function
       
  1561 @SYMTestPriority 	    High
       
  1562 @SYMTestActions  	    Set the configuration data with zero values.
       
  1563                         Get the log engine configuration data,check for any memory errors.
       
  1564 						Tests for the integrity of the data
       
  1565 @SYMTestExpectedResults Test must not fail
       
  1566 @SYMREQ                 REQ0000
       
  1567 */
       
  1568 LOCAL_C void TestGetConfig3L()
       
  1569 	{
       
  1570 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0905 "));
       
  1571 	
       
  1572 	CLogClient* client = CLogClient::NewL(theFs);
       
  1573 	CleanupStack::PushL(client);
       
  1574 	
       
  1575 	CTestActive* active = new(ELeave)CTestActive();
       
  1576 	CleanupStack::PushL(active);
       
  1577 
       
  1578 	TLogConfig config;
       
  1579 
       
  1580 	TEST(config.iMaxEventAge == 0);
       
  1581 	TEST(config.iMaxLogSize == 0);
       
  1582 	TEST(config.iMaxRecentLogSize == 0);
       
  1583 
       
  1584 	TInt failCount = 0;
       
  1585 	TBool finished = EFalse;
       
  1586 
       
  1587 	while(!finished)
       
  1588 		{
       
  1589 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  1590 		client->GetConfig(config, active->iStatus);
       
  1591 
       
  1592 		active->StartL();
       
  1593 		CActiveScheduler::Start();
       
  1594 
       
  1595 		if (active->iStatus == KErrNone)
       
  1596 			finished = ETrue;
       
  1597 		else
       
  1598 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  1599 
       
  1600 		__LOGSERV_UHEAP_RESET;
       
  1601 		}
       
  1602 
       
  1603 	TEST(config.iMaxEventAge > 0);
       
  1604 	TEST(config.iMaxLogSize > 0);
       
  1605 	TEST(config.iMaxRecentLogSize > 0);
       
  1606 
       
  1607 	CleanupStack::PopAndDestroy(2, client); // active, client
       
  1608     test.Printf(_L("===CLogClient::GetConfig() server side OOM test succeeded at iteration %d\n"), failCount);
       
  1609 	}
       
  1610 
       
  1611 /**
       
  1612 @SYMTestCaseID          SYSLIB-LOGENG-CT-0906
       
  1613 @SYMTestCaseDesc	    Tests for CLogClient::ChangeConfig() function
       
  1614 @SYMTestPriority 	    High
       
  1615 @SYMTestActions  	    Get the configuration data and store in temporary object.
       
  1616                         Set the new configuration data and change the log engine configuration,check for no memory error
       
  1617                         If no memory error,get the configuration data and test for the new changes of the data with the old data.
       
  1618 @SYMTestExpectedResults Test must not fail
       
  1619 @SYMREQ                 REQ0000
       
  1620 */
       
  1621 LOCAL_C void TestChangeConfig1L()
       
  1622 	{
       
  1623 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0906 "));
       
  1624 	
       
  1625 	CLogClient* client = CLogClient::NewL(theFs);
       
  1626 	CleanupStack::PushL(client);
       
  1627 	
       
  1628 	CTestActive* active = new(ELeave)CTestActive();
       
  1629 	CleanupStack::PushL(active);
       
  1630 
       
  1631 	TLogConfig configOld;
       
  1632 
       
  1633 	active->StartL();
       
  1634 	client->GetConfig(configOld, active->iStatus);
       
  1635 	CActiveScheduler::Start();
       
  1636 	TEST2(active->iStatus.Int(), KErrNone);
       
  1637 
       
  1638 	TLogConfig config;
       
  1639 
       
  1640 	TInt failCount = 0;
       
  1641 	TBool finished = EFalse;
       
  1642 	TInt error;
       
  1643 
       
  1644 	while(!finished)
       
  1645 		{
       
  1646 		error = KErrNone;
       
  1647 
       
  1648 		config.iMaxLogSize = KTestMaxLogSize;
       
  1649 		config.iMaxRecentLogSize = KTestMaxRecentLogSize;
       
  1650 		config.iMaxEventAge = KTestMaxEventAge;
       
  1651 
       
  1652 		__UHEAP_FAILNEXT(++failCount);
       
  1653 		client->ChangeConfig(config, active->iStatus);
       
  1654 
       
  1655 		active->StartL();
       
  1656 		CActiveScheduler::Start();
       
  1657 
       
  1658 		if (active->iStatus == KErrNone)
       
  1659 			finished = ETrue;
       
  1660 		else
       
  1661 			error = active->iStatus.Int();
       
  1662 		
       
  1663 		__UHEAP_RESET;
       
  1664 
       
  1665 		if (error == KErrNoMemory)
       
  1666 			{
       
  1667 			active->StartL();
       
  1668 			client->GetConfig(config, active->iStatus);
       
  1669 			CActiveScheduler::Start();
       
  1670 			TEST2(active->iStatus.Int(), KErrNone);
       
  1671 
       
  1672 			TEST(config.iMaxLogSize == configOld.iMaxLogSize);
       
  1673 			TEST(config.iMaxRecentLogSize == configOld.iMaxRecentLogSize);
       
  1674 			TEST(config.iMaxEventAge == configOld.iMaxEventAge);
       
  1675 			}
       
  1676 		else
       
  1677 			TEST2(error, KErrNone);		
       
  1678 		}
       
  1679 
       
  1680 	TEST(config.iMaxLogSize == KTestMaxLogSize);
       
  1681 	TEST(config.iMaxRecentLogSize == KTestMaxRecentLogSize);
       
  1682 	TEST(config.iMaxEventAge == KTestMaxEventAge);
       
  1683 
       
  1684 	CleanupStack::PopAndDestroy(2, client); // active, client
       
  1685     test.Printf(_L("===CLogClient::ChangeConfig() client side OOM test succeeded at iteration %d\n"), failCount);
       
  1686 	}
       
  1687 
       
  1688 /**
       
  1689 @SYMTestCaseID          SYSLIB-LOGENG-CT-0907
       
  1690 @SYMTestCaseDesc	    Tests for CLogClient::ChangeConfig() function
       
  1691 @SYMTestPriority 	    High
       
  1692 @SYMTestActions  	    Get the configuration data and store in temporary object.
       
  1693                         Set the new configuration data and change the log engine configuration,check for no memory error
       
  1694                         If no memory error,get the configuration data and test for the new changes of the data with the old data.
       
  1695 @SYMTestExpectedResults Test must not fail
       
  1696 @SYMREQ                 REQ0000
       
  1697 */
       
  1698 LOCAL_C void TestChangeConfig3L()
       
  1699 	{
       
  1700 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0907 "));
       
  1701 	
       
  1702 	CLogClient* client = CLogClient::NewL(theFs);
       
  1703 	CleanupStack::PushL(client);
       
  1704 	
       
  1705 	CTestActive* active = new(ELeave)CTestActive();
       
  1706 	CleanupStack::PushL(active);
       
  1707 
       
  1708 	TLogConfig configOld;
       
  1709 
       
  1710 	active->StartL();
       
  1711 	client->GetConfig(configOld, active->iStatus);
       
  1712 	CActiveScheduler::Start();
       
  1713 	TEST2(active->iStatus.Int(), KErrNone);
       
  1714 
       
  1715 	TLogConfig config;
       
  1716 
       
  1717 	TInt failCount = 0;
       
  1718 	TBool finished = EFalse;
       
  1719 	TInt error;
       
  1720 
       
  1721 	while(!finished)
       
  1722 		{
       
  1723 		error = KErrNone;
       
  1724 
       
  1725 		config.iMaxLogSize = KTestMaxLogSize;
       
  1726 		config.iMaxRecentLogSize = KTestMaxRecentLogSize;
       
  1727 		config.iMaxEventAge = KTestMaxEventAge;
       
  1728 
       
  1729 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  1730 		client->ChangeConfig(config, active->iStatus);
       
  1731 
       
  1732 		active->StartL();
       
  1733 		CActiveScheduler::Start();
       
  1734 
       
  1735 		if (active->iStatus == KErrNone)
       
  1736 			finished = ETrue;
       
  1737 		else
       
  1738 			error = active->iStatus.Int();
       
  1739 		
       
  1740 		__LOGSERV_UHEAP_RESET;
       
  1741 
       
  1742 		if (error == KErrNoMemory)
       
  1743 			{
       
  1744 			active->StartL();
       
  1745 			client->GetConfig(config, active->iStatus);
       
  1746 			CActiveScheduler::Start();
       
  1747 			TEST2(active->iStatus.Int(), KErrNone);
       
  1748 
       
  1749 			TEST(config.iMaxLogSize == configOld.iMaxLogSize);
       
  1750 			TEST(config.iMaxRecentLogSize == configOld.iMaxRecentLogSize);
       
  1751 			TEST(config.iMaxEventAge == configOld.iMaxEventAge);
       
  1752 			}
       
  1753 		else
       
  1754 			TEST2(error, KErrNone);		
       
  1755 		}
       
  1756 
       
  1757 	TEST(config.iMaxLogSize == KTestMaxLogSize);
       
  1758 	TEST(config.iMaxRecentLogSize == KTestMaxRecentLogSize);
       
  1759 	TEST(config.iMaxEventAge == KTestMaxEventAge);
       
  1760 
       
  1761 	CleanupStack::PopAndDestroy(2, client); // active, client
       
  1762     test.Printf(_L("===CLogClient::ChangeConfig() server side OOM test succeeded at iteration %d\n"), failCount);
       
  1763 	}
       
  1764 
       
  1765 /**
       
  1766 @SYMTestCaseID          SYSLIB-LOGENG-CT-0908
       
  1767 @SYMTestCaseDesc	    Tests for CLogClient::GetString() function
       
  1768 @SYMTestPriority 	    High
       
  1769 @SYMTestActions  	    Get the standard string name from the resource.
       
  1770                         Tests for no memory error and null string.
       
  1771 @SYMTestExpectedResults Test must not fail
       
  1772 @SYMREQ                 REQ0000
       
  1773 */
       
  1774 LOCAL_C void TestGetString1L()
       
  1775 	{
       
  1776 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0908 "));
       
  1777 	
       
  1778 	CLogClient* client = CLogClient::NewL(theFs);
       
  1779 	CleanupStack::PushL(client);
       
  1780 	
       
  1781 	TBuf<KLogMaxSharedStringLength> str;
       
  1782 	
       
  1783 	TInt failCount = 0;
       
  1784 	TBool finished = EFalse;
       
  1785 	TInt error;
       
  1786 
       
  1787 	while(!finished)
       
  1788 		{
       
  1789 		__UHEAP_FAILNEXT(++failCount);
       
  1790 
       
  1791 		error = client->GetString(str, R_LOG_DIR_IN);
       
  1792 
       
  1793 		__UHEAP_RESET;
       
  1794 
       
  1795 		if (error == KErrNone)
       
  1796 			{
       
  1797 			finished = ETrue;
       
  1798 			TEST(str.Length() > 0);
       
  1799 			}
       
  1800 		else
       
  1801 			{
       
  1802 			TEST2(error, KErrNoMemory);
       
  1803 			TEST(str.Length() == 0);
       
  1804 			}
       
  1805 		}
       
  1806 	CleanupStack::PopAndDestroy(client);
       
  1807     test.Printf(_L("===CLogClient::GetString() client side OOM test succeeded at iteration %d\n"), failCount);
       
  1808 	}
       
  1809 
       
  1810 /**
       
  1811 @SYMTestCaseID          SYSLIB-LOGENG-CT-0909
       
  1812 @SYMTestCaseDesc	    Tests for CLogClient::ClearLog() function
       
  1813 @SYMTestPriority 	    High
       
  1814 @SYMTestActions  	    Add 4 events to the event log,check for no errors
       
  1815                         Clear the log by calling ClearLog function.
       
  1816 						Try for getting the before added 4 events and check for not found error.
       
  1817 @SYMTestExpectedResults Test must not fail
       
  1818 @SYMREQ                 REQ0000
       
  1819 */
       
  1820 LOCAL_C void TestClearEventLog1L(TBool aMicroSeconds)
       
  1821 	{
       
  1822 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0909 "));
       
  1823 	
       
  1824 	CLogClient* client = CLogClient::NewL(theFs);
       
  1825 	CleanupStack::PushL(client);
       
  1826 	
       
  1827 	TTime now;
       
  1828 	now.UniversalTime();
       
  1829 	
       
  1830 	TDateTime dt(now.DateTime());
       
  1831 	if(!aMicroSeconds)
       
  1832 		dt.SetMicroSecond(0);
       
  1833 	dt.SetYear(dt.Year() - 1);
       
  1834 	TTime date1(dt);
       
  1835 
       
  1836 	dt.SetYear(dt.Year() - 1);
       
  1837 	TTime date2(dt);
       
  1838 
       
  1839 	TTime ClearThreshold(date1);
       
  1840 	ClearThreshold -= TTimeIntervalSeconds(1);
       
  1841 	/*need to use set the clear threshold (at least 1 sec) before the date of event 1,2.
       
  1842 	Otherwise the test will fail if now happens to occur at 0 microseconds (e.g the  
       
  1843 	last 6 digit of now is 0) */
       
  1844 	
       
  1845 	CTestActive* active = new(ELeave)CTestActive();
       
  1846 	CleanupStack::PushL(active);
       
  1847 
       
  1848 	CLogEvent* event1 = CLogEvent::NewL();
       
  1849 	CleanupStack::PushL(event1);
       
  1850 	event1->SetEventType(KTestEventUid);
       
  1851 
       
  1852 	active->StartL();
       
  1853 	client->AddEvent(*event1, active->iStatus);
       
  1854 	CActiveScheduler::Start();
       
  1855 	TEST2(active->iStatus.Int(), KErrNone);
       
  1856 
       
  1857 	event1->SetTime(date1);
       
  1858 
       
  1859 	active->StartL();
       
  1860 	client->ChangeEvent(*event1, active->iStatus);
       
  1861 	CActiveScheduler::Start();
       
  1862 	TEST2(active->iStatus.Int(), KErrNone);
       
  1863 
       
  1864 	CLogEvent* event2 = CLogEvent::NewL();
       
  1865 	CleanupStack::PushL(event2);
       
  1866 	event2->SetEventType(KTestEventUid);
       
  1867 
       
  1868 	active->StartL();
       
  1869 	client->AddEvent(*event2, active->iStatus);
       
  1870 	CActiveScheduler::Start();
       
  1871 	TEST2(active->iStatus.Int(), KErrNone);
       
  1872 
       
  1873 	event2->SetTime(date1);
       
  1874 
       
  1875 	active->StartL();
       
  1876 	client->ChangeEvent(*event2, active->iStatus);
       
  1877 	CActiveScheduler::Start();
       
  1878 	TEST2(active->iStatus.Int(), KErrNone);
       
  1879 
       
  1880 	CLogEvent* event3 = CLogEvent::NewL();
       
  1881 	CleanupStack::PushL(event3);
       
  1882 	event3->SetEventType(KTestEventUid);
       
  1883 
       
  1884 	active->StartL();
       
  1885 	client->AddEvent(*event3, active->iStatus);
       
  1886 	CActiveScheduler::Start();
       
  1887 	TEST2(active->iStatus.Int(), KErrNone);
       
  1888 
       
  1889 	event3->SetTime(date2);
       
  1890 
       
  1891 	active->StartL();
       
  1892 	client->ChangeEvent(*event3, active->iStatus);
       
  1893 	CActiveScheduler::Start();
       
  1894 	TEST2(active->iStatus.Int(), KErrNone);
       
  1895 
       
  1896 	CLogEvent* event4 = CLogEvent::NewL();
       
  1897 	CleanupStack::PushL(event4);
       
  1898 	event4->SetEventType(KTestEventUid);
       
  1899 
       
  1900 	active->StartL();
       
  1901 	client->AddEvent(*event4, active->iStatus);
       
  1902 	CActiveScheduler::Start();
       
  1903 	TEST2(active->iStatus.Int(), KErrNone);
       
  1904 
       
  1905 	event4->SetTime(date2);
       
  1906 
       
  1907 	active->StartL();
       
  1908 	client->ChangeEvent(*event4, active->iStatus);
       
  1909 	CActiveScheduler::Start();
       
  1910 	TEST2(active->iStatus.Int(), KErrNone);
       
  1911 
       
  1912 	TInt failCount = 0;
       
  1913 	TBool finished = EFalse;
       
  1914 
       
  1915 	while(!finished)
       
  1916 		{
       
  1917 		__UHEAP_FAILNEXT(++failCount);
       
  1918 
       
  1919 		client->ClearLog(ClearThreshold, active->iStatus);
       
  1920 
       
  1921 		__UHEAP_RESET;
       
  1922 
       
  1923 		active->StartL();	
       
  1924 		CActiveScheduler::Start();
       
  1925 
       
  1926 		if (active->iStatus == KErrNone)
       
  1927 			finished = ETrue;
       
  1928 		else
       
  1929 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  1930 		}
       
  1931 
       
  1932 	active->StartL();
       
  1933 	client->GetEvent(*event1, active->iStatus);
       
  1934 	CActiveScheduler::Start();
       
  1935 	if (active->iStatus != KErrNone) 
       
  1936 		RDebug::Print(_L("error code:%d failcoount:%d\n"),active->iStatus.Int(),failCount);
       
  1937 	TEST2(active->iStatus.Int(), KErrNone);
       
  1938 
       
  1939 	active->StartL();
       
  1940 	client->GetEvent(*event2, active->iStatus);
       
  1941 	CActiveScheduler::Start();
       
  1942 	TEST2(active->iStatus.Int(), KErrNone);
       
  1943 
       
  1944 	active->StartL();
       
  1945 	client->GetEvent(*event3, active->iStatus);
       
  1946 	CActiveScheduler::Start();
       
  1947 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  1948 
       
  1949 	active->StartL();
       
  1950 	client->GetEvent(*event4, active->iStatus);
       
  1951 	CActiveScheduler::Start();
       
  1952 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  1953 
       
  1954 	active->StartL();
       
  1955 	client->ClearLog(now, active->iStatus);
       
  1956 	CActiveScheduler::Start();
       
  1957 	TEST2(active->iStatus.Int(), KErrNone);
       
  1958 
       
  1959 	active->StartL();
       
  1960 	client->GetEvent(*event1, active->iStatus);
       
  1961 	CActiveScheduler::Start();
       
  1962 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  1963 
       
  1964 	active->StartL();
       
  1965 	client->GetEvent(*event2, active->iStatus);
       
  1966 	CActiveScheduler::Start();
       
  1967 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  1968 
       
  1969 	CleanupStack::PopAndDestroy(6, client); // event4, event3, event2, event1, active, client
       
  1970     test.Printf(_L("===CLogClient::ClearLog() client side OOM test succeeded at iteration %d\n"), failCount);
       
  1971 	}
       
  1972 
       
  1973 /**
       
  1974 @SYMTestCaseID          SYSLIB-LOGENG-CT-0910
       
  1975 @SYMTestCaseDesc	    Tests for CLogClient::ClearLog() function
       
  1976 @SYMTestPriority 	    High
       
  1977 @SYMTestActions  	    Add 4 events to the event log,check for no errors
       
  1978                         Clear the log by calling ClearLog function.
       
  1979 						Try for getting the before added 4 events and check for not found error.
       
  1980 @SYMTestExpectedResults Test must not fail
       
  1981 @SYMREQ                 REQ0000
       
  1982 */
       
  1983 LOCAL_C void TestClearEventLog3L(TBool aMicroSeconds)
       
  1984 	{
       
  1985 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0910 "));
       
  1986 	
       
  1987 	CLogClient* client = CLogClient::NewL(theFs);
       
  1988 	CleanupStack::PushL(client);
       
  1989 	
       
  1990 	TTime now;
       
  1991 	now.UniversalTime();
       
  1992 	
       
  1993 	TDateTime dt(now.DateTime());
       
  1994 	if(!aMicroSeconds)
       
  1995 		dt.SetMicroSecond(0);
       
  1996 	dt.SetYear(dt.Year() - 1);
       
  1997 	TTime date1(dt);
       
  1998 
       
  1999 	dt.SetYear(dt.Year() - 1);
       
  2000 	TTime date2(dt);
       
  2001 	
       
  2002 	TTime ClearThreshold(date1);
       
  2003 	ClearThreshold -= TTimeIntervalSeconds(1);
       
  2004 	/*need to use set the clear threshold (at least 1 sec) before the date of event 1,2.
       
  2005 	Otherwise the test will fail if now happens to occur at 0 microseconds (e.g the  
       
  2006 	last 6 digit of now is 0) */
       
  2007 	
       
  2008 	
       
  2009 	CTestActive* active = new(ELeave)CTestActive();
       
  2010 	CleanupStack::PushL(active);
       
  2011 
       
  2012 	CLogEvent* event1 = CLogEvent::NewL();
       
  2013 	CleanupStack::PushL(event1);
       
  2014 	event1->SetEventType(KTestEventUid);
       
  2015 
       
  2016 	active->StartL();
       
  2017 	client->AddEvent(*event1, active->iStatus);
       
  2018 	CActiveScheduler::Start();
       
  2019 	TEST2(active->iStatus.Int(), KErrNone);
       
  2020 
       
  2021 	event1->SetTime(date1);
       
  2022 
       
  2023 	active->StartL();
       
  2024 	client->ChangeEvent(*event1, active->iStatus);
       
  2025 	CActiveScheduler::Start();
       
  2026 	TEST2(active->iStatus.Int(), KErrNone);
       
  2027 
       
  2028 	CLogEvent* event2 = CLogEvent::NewL();
       
  2029 	CleanupStack::PushL(event2);
       
  2030 	event2->SetEventType(KTestEventUid);
       
  2031 
       
  2032 	active->StartL();
       
  2033 	client->AddEvent(*event2, active->iStatus);
       
  2034 	CActiveScheduler::Start();
       
  2035 	TEST2(active->iStatus.Int(), KErrNone);
       
  2036 
       
  2037 	event2->SetTime(date1);
       
  2038 
       
  2039 	active->StartL();
       
  2040 	client->ChangeEvent(*event2, active->iStatus);
       
  2041 	CActiveScheduler::Start();
       
  2042 	TEST2(active->iStatus.Int(), KErrNone);
       
  2043 
       
  2044 	CLogEvent* event3 = CLogEvent::NewL();
       
  2045 	CleanupStack::PushL(event3);
       
  2046 	event3->SetEventType(KTestEventUid);
       
  2047 
       
  2048 	active->StartL();
       
  2049 	client->AddEvent(*event3, active->iStatus);
       
  2050 	CActiveScheduler::Start();
       
  2051 	TEST2(active->iStatus.Int(), KErrNone);
       
  2052 
       
  2053 	event3->SetTime(date2);
       
  2054 
       
  2055 	active->StartL();
       
  2056 	client->ChangeEvent(*event3, active->iStatus);
       
  2057 	CActiveScheduler::Start();
       
  2058 	TEST2(active->iStatus.Int(), KErrNone);
       
  2059 
       
  2060 	CLogEvent* event4 = CLogEvent::NewL();
       
  2061 	CleanupStack::PushL(event4);
       
  2062 	event4->SetEventType(KTestEventUid);
       
  2063 
       
  2064 	active->StartL();
       
  2065 	client->AddEvent(*event4, active->iStatus);
       
  2066 	CActiveScheduler::Start();
       
  2067 	TEST2(active->iStatus.Int(), KErrNone);
       
  2068 
       
  2069 	event4->SetTime(date2);
       
  2070 
       
  2071 	active->StartL();
       
  2072 	client->ChangeEvent(*event4, active->iStatus);
       
  2073 	CActiveScheduler::Start();
       
  2074 	TEST2(active->iStatus.Int(), KErrNone);
       
  2075 
       
  2076 	TInt failCount = 0;
       
  2077 	TBool finished = EFalse;
       
  2078 
       
  2079 	while(!finished)
       
  2080 		{
       
  2081 		__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  2082 
       
  2083 		client->ClearLog(ClearThreshold, active->iStatus);
       
  2084 
       
  2085 		__LOGSERV_UHEAP_RESET;
       
  2086 
       
  2087 		active->StartL();	
       
  2088 		CActiveScheduler::Start();
       
  2089 
       
  2090 		if (active->iStatus == KErrNone)
       
  2091 			finished = ETrue;
       
  2092 		else
       
  2093 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  2094 		}
       
  2095 
       
  2096 	active->StartL();
       
  2097 	client->GetEvent(*event1, active->iStatus);
       
  2098 	CActiveScheduler::Start();
       
  2099 	TEST2(active->iStatus.Int(), KErrNone);
       
  2100 
       
  2101 	active->StartL();
       
  2102 	client->GetEvent(*event2, active->iStatus);
       
  2103 	CActiveScheduler::Start();
       
  2104 	TEST2(active->iStatus.Int(), KErrNone);
       
  2105 
       
  2106 	active->StartL();
       
  2107 	client->GetEvent(*event3, active->iStatus);
       
  2108 	CActiveScheduler::Start();
       
  2109 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  2110 
       
  2111 	active->StartL();
       
  2112 	client->GetEvent(*event4, active->iStatus);
       
  2113 	CActiveScheduler::Start();
       
  2114 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  2115 
       
  2116 	active->StartL();
       
  2117 	client->ClearLog(now, active->iStatus);
       
  2118 	CActiveScheduler::Start();
       
  2119 	TEST2(active->iStatus.Int(), KErrNone);
       
  2120 
       
  2121 	active->StartL();
       
  2122 	client->GetEvent(*event1, active->iStatus);
       
  2123 	CActiveScheduler::Start();
       
  2124 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  2125 
       
  2126 	active->StartL();
       
  2127 	client->GetEvent(*event2, active->iStatus);
       
  2128 	CActiveScheduler::Start();
       
  2129 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  2130 
       
  2131 	CleanupStack::PopAndDestroy(6, client); // event4, event3, event2, event1, active, client
       
  2132     test.Printf(_L("===CLogClient::ClearLog() server side OOM test succeeded at iteration %d\n"), failCount);
       
  2133 	}
       
  2134 	
       
  2135 	/**
       
  2136 @SYMTestCaseID          SYSLIB-LOGENG-CT-1910
       
  2137 @SYMTestCaseDesc	    Tests for CLogClient::ClearLog() under boundary conditions
       
  2138 @SYMTestPriority 	    High
       
  2139 @SYMTestActions  	    Add 4 events to the event log,check for no errors
       
  2140                         Clear the log by calling ClearLog function. 
       
  2141                         However using the date for 2 events the same as the clear date threshold.
       
  2142 						Try for getting the before added 4 events and check for not found error.
       
  2143 @SYMTestExpectedResults Test must not fail
       
  2144 @SYMDEF                 DEF093601
       
  2145 */
       
  2146 LOCAL_C void TestDEF093601L(TBool aClientTest)
       
  2147 	{
       
  2148 	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-1910 "));
       
  2149 	if(aClientTest)
       
  2150 		TestClearEventLog3L(EFalse);
       
  2151 	else
       
  2152 		TestClearEventLog1L(EFalse);
       
  2153 	}
       
  2154 
       
  2155 #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
       
  2156 
       
  2157 /**
       
  2158 @SYMTestCaseID			PDS-LOGENG-UT-4038
       
  2159 @SYMTestCaseDesc		Clear log events with specific SimId - client/server side OOM test.
       
  2160 						The test adds 2 events, one of them with a SimId. Then the test
       
  2161 						executes CLogClient::ClearLog() in an OOM loop.
       
  2162 @SYMTestActions			Clear log events with specific SimId - client/server side OOM test.
       
  2163 @SYMTestExpectedResults Test must not fail
       
  2164 @SYMTestPriority		Medium
       
  2165 @SYMREQ					REQ12748
       
  2166 */
       
  2167 void ClearLogSimIdOomTestL(TBool aServerSideOomTest)
       
  2168 	{//This test case is compiled only when SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM macro is defined
       
  2169 	CLogClient* client = CLogClient::NewL(theFs);
       
  2170 	CleanupStack::PushL(client);
       
  2171 	
       
  2172 	const TSimId KSimId = 4100000000U;
       
  2173 	TTime now;
       
  2174 	now.UniversalTime();
       
  2175 	
       
  2176 	TDateTime dt(now.DateTime());
       
  2177 	dt.SetYear(dt.Year() - 1);
       
  2178 	TTime date(dt);
       
  2179 	
       
  2180 	TTime threshold(date);
       
  2181 	threshold += TTimeIntervalSeconds(10);
       
  2182 	
       
  2183 	CTestActive* active = new(ELeave)CTestActive();
       
  2184 	CleanupStack::PushL(active);
       
  2185 	
       
  2186 	//////// Event1 ///////////////////////////
       
  2187 	CLogEvent* event1 = CLogEvent::NewL();
       
  2188 	CleanupStack::PushL(event1);
       
  2189 	event1->SetEventType(KTestEventUid);
       
  2190 
       
  2191 	active->StartL();
       
  2192 	client->AddEvent(*event1, active->iStatus);
       
  2193 	CActiveScheduler::Start();
       
  2194 	TEST2(active->iStatus.Int(), KErrNone);
       
  2195 
       
  2196 	event1->SetTime(date);
       
  2197 
       
  2198 	active->StartL();
       
  2199 	client->ChangeEvent(*event1, active->iStatus);
       
  2200 	CActiveScheduler::Start();
       
  2201 	TEST2(active->iStatus.Int(), KErrNone);
       
  2202 
       
  2203 	//////// Event2 ///////////////////////////
       
  2204 	CLogEvent* event2 = CLogEvent::NewL();
       
  2205 	CleanupStack::PushL(event2);
       
  2206 	event2->SetEventType(KTestEventUid);
       
  2207 
       
  2208 	active->StartL();
       
  2209 	client->AddEvent(*event2, active->iStatus);
       
  2210 	CActiveScheduler::Start();
       
  2211 	TEST2(active->iStatus.Int(), KErrNone);
       
  2212 
       
  2213 	event2->SetTime(date);
       
  2214 	event2->SetSimId(KSimId);
       
  2215 
       
  2216 	active->StartL();
       
  2217 	client->ChangeEvent(*event2, active->iStatus);
       
  2218 	CActiveScheduler::Start();
       
  2219 	TEST2(active->iStatus.Int(), KErrNone);
       
  2220 	////////////////////////////////////////////
       
  2221 	
       
  2222 	TInt failCount = 0;
       
  2223 	TBool finished = EFalse;
       
  2224 
       
  2225 	while(!finished)
       
  2226 		{
       
  2227 		if(aServerSideOomTest)
       
  2228 			{
       
  2229 			__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  2230 			}
       
  2231 		else
       
  2232 			{
       
  2233 			__UHEAP_FAILNEXT(++failCount);
       
  2234 			}
       
  2235 
       
  2236 		client->ClearLog(threshold, KSimId, active->iStatus);
       
  2237 
       
  2238 		if(aServerSideOomTest)
       
  2239 			{
       
  2240 			__LOGSERV_UHEAP_RESET;
       
  2241 			}
       
  2242 		else
       
  2243 			{
       
  2244 			__UHEAP_RESET;
       
  2245 			}
       
  2246 
       
  2247 		active->StartL();	
       
  2248 		CActiveScheduler::Start();
       
  2249 
       
  2250 		if (active->iStatus == KErrNone)
       
  2251 			finished = ETrue;
       
  2252 		else
       
  2253 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  2254 		}
       
  2255 
       
  2256 	//Check: event1 is without SimId and must not be deleted. event2 is with SimId and should be deleted. 
       
  2257 	active->StartL();
       
  2258 	client->GetEvent(*event1, active->iStatus);
       
  2259 	CActiveScheduler::Start();
       
  2260 	TEST2(active->iStatus.Int(), KErrNone);
       
  2261 
       
  2262 	active->StartL();
       
  2263 	client->GetEvent(*event2, active->iStatus);
       
  2264 	CActiveScheduler::Start();
       
  2265 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  2266 
       
  2267 	//Delete all events
       
  2268 	active->StartL();
       
  2269 	client->ClearLog(now, active->iStatus);
       
  2270 	CActiveScheduler::Start();
       
  2271 	TEST2(active->iStatus.Int(), KErrNone);
       
  2272 	
       
  2273 	active->StartL();
       
  2274 	client->GetEvent(*event1, active->iStatus);
       
  2275 	CActiveScheduler::Start();
       
  2276 	TEST2(active->iStatus.Int(), KErrNotFound);
       
  2277 
       
  2278 	active->StartL();
       
  2279 	client->GetEvent(*event2, active->iStatus);
       
  2280 	CActiveScheduler::Start();
       
  2281 	TEST2(active->iStatus.Int(), KErrNotFound);	
       
  2282 	
       
  2283 	CleanupStack::PopAndDestroy(4, client); //event2, event1, active, client
       
  2284     test.Printf(_L("===CLogClient::ClearLog() + SimId %S OOM test succeeded at iteration %d\n"), aServerSideOomTest ? &KServerSide : &KClientSide, failCount);
       
  2285 	}
       
  2286 
       
  2287 /**
       
  2288 @SYMTestCaseID			PDS-LOGENG-UT-4039
       
  2289 @SYMTestCaseDesc		Clear log events with specific SimId and recent list- client/server side OOM test.
       
  2290 						The test adds 2 events to a recent list, one of them with a SimId. Then the test
       
  2291 						executes CLogClient::ClearLog() in an OOM loop.
       
  2292 @SYMTestActions			Clear log events with specific SimId and recent list- client/server side OOM test.
       
  2293 @SYMTestExpectedResults Test must not fail
       
  2294 @SYMTestPriority		Medium
       
  2295 @SYMREQ					REQ12748
       
  2296 */
       
  2297 void ClearLogRecentSimIdOomTestL(TBool aServerSideOomTest)
       
  2298 	{//This test case is compiled only when SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM macro is defined
       
  2299 	CLogClient* client = CLogClient::NewL(theFs);
       
  2300 	CleanupStack::PushL(client);
       
  2301 	
       
  2302 	const TSimId KSimId = 4200000000U;
       
  2303 	const TUid KEvTypeUid = {KLogCallEventType};
       
  2304 	_LIT(KEvDirection, "Missed call");
       
  2305 	
       
  2306 	CTestActive* active = new(ELeave)CTestActive();
       
  2307 	CleanupStack::PushL(active);
       
  2308 	
       
  2309 	//////// Event1 ///////////////////////////
       
  2310 	CLogEvent* event1 = CLogEvent::NewL();
       
  2311 	CleanupStack::PushL(event1);
       
  2312 	event1->SetEventType(KEvTypeUid);
       
  2313 	event1->SetDirection(KEvDirection);
       
  2314 	event1->SetNumber(_L("12345678"));
       
  2315 
       
  2316 	active->StartL();
       
  2317 	client->AddEvent(*event1, active->iStatus);
       
  2318 	CActiveScheduler::Start();
       
  2319 	TEST2(active->iStatus.Int(), KErrNone);
       
  2320 	//////// Event2 ///////////////////////////
       
  2321 	CLogEvent* event2 = CLogEvent::NewL();
       
  2322 	CleanupStack::PushL(event2);
       
  2323 	event2->SetEventType(KEvTypeUid);
       
  2324 	event2->SetDirection(KEvDirection);
       
  2325 	event2->SetNumber(_L("87654321"));
       
  2326 	event2->SetSimId(KSimId);
       
  2327 
       
  2328 	active->StartL();
       
  2329 	client->AddEvent(*event2, active->iStatus);
       
  2330 	CActiveScheduler::Start();
       
  2331 	TEST2(active->iStatus.Int(), KErrNone);
       
  2332 	////////////////////////////////////////////
       
  2333 	
       
  2334 	TInt failCount = 0;
       
  2335 	TBool finished = EFalse;
       
  2336 
       
  2337 	while(!finished)
       
  2338 		{
       
  2339 		if(aServerSideOomTest)
       
  2340 			{
       
  2341 			__LOGSERV_UHEAP_FAILNEXT(++failCount);
       
  2342 			}
       
  2343 		else
       
  2344 			{
       
  2345 			__UHEAP_FAILNEXT(++failCount);
       
  2346 			}
       
  2347 
       
  2348 		client->ClearLog(KLogRecentMissedCalls, KSimId, active->iStatus);
       
  2349 
       
  2350 		if(aServerSideOomTest)
       
  2351 			{
       
  2352 			__LOGSERV_UHEAP_RESET;
       
  2353 			}
       
  2354 		else
       
  2355 			{
       
  2356 			__UHEAP_RESET;
       
  2357 			}
       
  2358 
       
  2359 		active->StartL();	
       
  2360 		CActiveScheduler::Start();
       
  2361 
       
  2362 		if (active->iStatus == KErrNone)
       
  2363 			finished = ETrue;
       
  2364 		else
       
  2365 			TEST2(active->iStatus.Int(), KErrNoMemory);
       
  2366 		}
       
  2367 
       
  2368 	//Check: event1 is without SimId and must be presented in the view. Event2 is with SimId and should not be in the view.
       
  2369 	CLogViewRecent* view = CLogViewRecent::NewL(*client);
       
  2370 	CleanupStack::PushL(view);
       
  2371 	TBool rc = view->SetRecentListL(KLogRecentMissedCalls, active->iStatus);
       
  2372 	TEST(rc);
       
  2373 	active->StartL();
       
  2374 	CActiveScheduler::Start();
       
  2375 	TEST2(active->iStatus.Int(), KErrNone);
       
  2376 	
       
  2377 	TInt count = view->CountL();
       
  2378 	TEST2(count, 1);
       
  2379 	rc = view->FirstL(active->iStatus);
       
  2380 	TEST(rc);
       
  2381 	active->StartL();
       
  2382 	CActiveScheduler::Start();
       
  2383 	TEST2(active->iStatus.Int(), KErrNone);
       
  2384 	const CLogEvent& e = view->Event();
       
  2385 	TEST2(e.SimId(), KLogNullSimId);
       
  2386 	
       
  2387 	CleanupStack::PopAndDestroy(view);
       
  2388 
       
  2389 	//Delete all events
       
  2390 	active->StartL();
       
  2391 	client->ClearLog(KLogRecentMissedCalls, active->iStatus);
       
  2392 	CActiveScheduler::Start();
       
  2393 	TEST2(active->iStatus.Int(), KErrNone);
       
  2394 	
       
  2395 	//Check: no events in the recent view list 
       
  2396 	view = CLogViewRecent::NewL(*client);
       
  2397 	CleanupStack::PushL(view);
       
  2398 	rc = view->SetRecentListL(KLogRecentMissedCalls, active->iStatus);
       
  2399 	TEST(!rc);
       
  2400 	
       
  2401 	CleanupStack::PopAndDestroy(5, client); //view, event2, event1, active, client
       
  2402     test.Printf(_L("===CLogClient::ClearLog()/Recent + SimId %S OOM test succeeded at iteration %d\n"), aServerSideOomTest ? &KServerSide : &KClientSide, failCount);
       
  2403 	}
       
  2404 
       
  2405 #endif//SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
       
  2406 
       
  2407 LOCAL_C void doClientFailureL()
       
  2408 	{
       
  2409 	test.Next(_L("Server startup"));
       
  2410 	TestStartup1L();
       
  2411 	User::After(100000);
       
  2412 
       
  2413 	test.Next(_L("Construction + create logeng database"));
       
  2414 	TestConstruction1L(ETrue); // Creates database
       
  2415     test.Next(_L("Construction + open logeng database"));
       
  2416 	TestConstruction1L(EFalse); // Opens existing database
       
  2417 	TestUtils::DeleteDatabaseL();
       
  2418 	theLog.Write(_L8("Test 1.1 OK\n"));
       
  2419 
       
  2420 	test.Next(_L("Add Event Type"));
       
  2421 	TestAddEventType1L();
       
  2422 	theLog.Write(_L8("Test 1.2 OK\n"));
       
  2423 
       
  2424 	test.Next(_L("Get Event Type"));
       
  2425 	TestGetEventType1L();
       
  2426 	theLog.Write(_L8("Test 1.3 OK\n"));
       
  2427 
       
  2428 	test.Next(_L("Change Event Type"));
       
  2429 	TestChangeEventType1L();
       
  2430 	theLog.Write(_L8("Test 1.4 OK\n"));
       
  2431 
       
  2432 	test.Next(_L("Delete Event Type"));
       
  2433 	TestDeleteEventType1L();
       
  2434 	theLog.Write(_L8("Test 1.5 OK\n"));
       
  2435 
       
  2436 	test.Next(_L("Add Event"));
       
  2437 	TestAddEvent1L();
       
  2438 	theLog.Write(_L8("Test 1.6 OK\n"));
       
  2439 
       
  2440 	test.Next(_L("Get Event"));
       
  2441 	TestGetEvent1L();
       
  2442 	theLog.Write(_L8("Test 1.7 OK\n"));
       
  2443 
       
  2444 	test.Next(_L("Change Event"));
       
  2445 	TestChangeEvent1L();
       
  2446 	theLog.Write(_L8("Test 1.8 OK\n"));
       
  2447 
       
  2448 	test.Next(_L("Delete Event"));
       
  2449 	TestDeleteEvent1L();
       
  2450 	theLog.Write(_L8("Test 1.9 OK\n"));
       
  2451 
       
  2452 	test.Next(_L("Get Config"));
       
  2453 	TestGetConfig1L();
       
  2454 	theLog.Write(_L8("Test 1.10 OK\n"));
       
  2455 
       
  2456 	test.Next(_L("Change Config"));
       
  2457 	TestChangeConfig1L();
       
  2458 	theLog.Write(_L8("Test 1.11 OK\n"));
       
  2459 
       
  2460 	test.Next(_L("Get String"));
       
  2461 	TestGetString1L();
       
  2462 	theLog.Write(_L8("Test 1.12 OK\n"));
       
  2463 	
       
  2464 	test.Next(_L("Clear Event Log"));
       
  2465 	TestClearEventLog1L(ETrue);
       
  2466 	theLog.Write(_L8("Test 1.13 OK\n"));
       
  2467 	
       
  2468 	test.Next(_L("DEF093601"));
       
  2469 	TestDEF093601L(EFalse);
       
  2470 	theLog.Write(_L8("Test 1.14 OK\n"));
       
  2471 
       
  2472 #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
       
  2473 	test.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4038 Clear Event Log + SimId"));
       
  2474 	ClearLogSimIdOomTestL(EFalse);
       
  2475 	theLog.Write(_L8("Test 1.15 OK\n"));
       
  2476 	
       
  2477 	test.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4039 Clear Event Log/Recent + SimId"));
       
  2478 	ClearLogRecentSimIdOomTestL(EFalse);
       
  2479 	theLog.Write(_L8("Test 1.16 OK\n"));
       
  2480 #endif	
       
  2481 	}
       
  2482 
       
  2483 LOCAL_C void doLogServFailureL()
       
  2484 	{
       
  2485 	test.Next(_L("Construction + create logeng database"));
       
  2486 	TestConstruction3L(ETrue); // Creates database
       
  2487     test.Next(_L("Construction + open logeng database"));
       
  2488 	TestConstruction3L(EFalse); // Opens existing database
       
  2489 	TestUtils::DeleteDatabaseL();
       
  2490 	theLog.Write(_L8("Test 2.1 OK\n"));
       
  2491 
       
  2492 	test.Next(_L("Add Event Type"));
       
  2493 	TestAddEventType3L();
       
  2494 	theLog.Write(_L8("Test 2.2 OK\n"));
       
  2495 
       
  2496 	test.Next(_L("Get Event Type"));
       
  2497 	TestGetEventType3L();
       
  2498 	theLog.Write(_L8("Test 2.3 OK\n"));
       
  2499 
       
  2500 	test.Next(_L("Change Event Type"));
       
  2501 	TestChangeEventType3L();
       
  2502 	theLog.Write(_L8("Test 2.4 OK\n"));
       
  2503 
       
  2504 	test.Next(_L("Delete Event Type"));
       
  2505 	TestDeleteEventType3L();
       
  2506 	theLog.Write(_L8("Test 2.5 OK\n"));
       
  2507 
       
  2508 	test.Next(_L("Add Event"));
       
  2509 	TestAddEvent3L();
       
  2510 	theLog.Write(_L8("Test 2.6 OK\n"));
       
  2511 
       
  2512 	test.Next(_L("Get Event"));
       
  2513 	TestGetEvent3L(); 
       
  2514 	theLog.Write(_L8("Test 2.7 OK\n"));
       
  2515 
       
  2516 	test.Next(_L("Change Event"));
       
  2517 	TestChangeEvent3L();
       
  2518 	theLog.Write(_L8("Test 2.8 OK\n"));
       
  2519 
       
  2520 	test.Next(_L("Delete Event"));
       
  2521 	TestDeleteEvent3L();
       
  2522 	theLog.Write(_L8("Test 2.9 OK\n"));
       
  2523 
       
  2524 	test.Next(_L("Get Config"));
       
  2525 	TestGetConfig3L();
       
  2526 	theLog.Write(_L8("Test 2.10 OK\n"));
       
  2527 
       
  2528 	test.Next(_L("Change Config"));
       
  2529 	TestChangeConfig3L();
       
  2530 	theLog.Write(_L8("Test 2.11 OK\n"));
       
  2531 
       
  2532 	test.Next(_L("Clear Event Log"));
       
  2533 	TestClearEventLog3L(ETrue);
       
  2534 	theLog.Write(_L8("Test 2.12 OK\n"));
       
  2535 	
       
  2536 	test.Next(_L("DEF093601"));
       
  2537 	TestDEF093601L(ETrue);
       
  2538 	theLog.Write(_L8("Test 2.13 OK\n"));
       
  2539 	
       
  2540 #ifdef SYMBIAN_ENABLE_EVENTLOGGER_DUALSIM	
       
  2541 	test.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4038 Clear Event Log + SimId"));
       
  2542 	ClearLogSimIdOomTestL(ETrue);
       
  2543 	theLog.Write(_L8("Test 2.14 OK\n"));
       
  2544 
       
  2545 	test.Next(_L(" @SYMTestCaseID:PDS-LOGENG-UT-4039 Clear Event Log/Recent + SimId"));
       
  2546 	ClearLogRecentSimIdOomTestL(ETrue);
       
  2547 	theLog.Write(_L8("Test 2.15 OK\n"));
       
  2548 #endif	
       
  2549 	}
       
  2550 
       
  2551 void doTestsL()
       
  2552 	{
       
  2553 	TestUtils::Initialize(_L("T_LOGHEAP"));
       
  2554 
       
  2555 	test.Start(_L("Log Client"));
       
  2556 	doClientFailureL();
       
  2557 
       
  2558 	test.Next(_L("Log Server"));
       
  2559 	doLogServFailureL();
       
  2560 	}