os/persistentdata/traceservices/commsdebugutility/TE_commsdebugutility/src/step_006_xx.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// This contains Flogger Unit Test Case 006.xx
sl@0
    15
sl@0
    16
// EPOC includes
sl@0
    17
#include <e32base.h>
sl@0
    18
sl@0
    19
// Test system includes
sl@0
    20
#include <comms-infras/commsdebugutility.h>
sl@0
    21
#include <f32file.h>
sl@0
    22
sl@0
    23
sl@0
    24
//User includes
sl@0
    25
#include "teststepcomsdbg.h"
sl@0
    26
#include "step_006_xx.h"
sl@0
    27
sl@0
    28
sl@0
    29
/**
sl@0
    30
* Function  Name	: CFloggerTest006_01
sl@0
    31
* Input parameters	: None
sl@0
    32
* Output parameters : None
sl@0
    33
* Description		: This is the constructor
sl@0
    34
*/
sl@0
    35
sl@0
    36
sl@0
    37
CFloggerTest006_01::CFloggerTest006_01()
sl@0
    38
	{
sl@0
    39
	SetTestStepName(_L("step_006_01"));
sl@0
    40
sl@0
    41
	}
sl@0
    42
sl@0
    43
sl@0
    44
/**
sl@0
    45
* Function  Name	:~ CFloggerTest006_01
sl@0
    46
* Input parameters	: None
sl@0
    47
* Output parameters : None
sl@0
    48
* Description		: This is the Destructor
sl@0
    49
*/
sl@0
    50
sl@0
    51
sl@0
    52
CFloggerTest006_01::~CFloggerTest006_01()
sl@0
    53
	{
sl@0
    54
	
sl@0
    55
	}
sl@0
    56
sl@0
    57
sl@0
    58
/**
sl@0
    59
* Function  Name	: doTestStepL
sl@0
    60
* Input parameters	: None
sl@0
    61
* Output parameters : TVerdict 
sl@0
    62
* Description		: This function returns weather the test case 006_01 has 
sl@0
    63
* 					  passed or failed
sl@0
    64
sl@0
    65
*/
sl@0
    66
sl@0
    67
sl@0
    68
TVerdict CFloggerTest006_01::doTestStepL( )
sl@0
    69
	{
sl@0
    70
	RFileLogger logger;
sl@0
    71
	INFO_PRINTF1(_L("Step 006.01 called "));
sl@0
    72
	
sl@0
    73
	if ( executeStepL(EFalse) == KErrNone )
sl@0
    74
		SetTestStepResult(EPass);
sl@0
    75
sl@0
    76
	else
sl@0
    77
		SetTestStepResult(EFail);
sl@0
    78
sl@0
    79
	User::After(KTimeForDisplay);
sl@0
    80
	return TestStepResult();
sl@0
    81
	}
sl@0
    82
sl@0
    83
sl@0
    84
/**
sl@0
    85
* Function  Name		: executeStepL
sl@0
    86
* Input parameters		: None
sl@0
    87
* Output parameters		: TInt 
sl@0
    88
* Description 			: This function writes the test data in to the log file 
sl@0
    89
*						  This function check the test message is present in the 
sl@0
    90
*						  log file or not.
sl@0
    91
sl@0
    92
*/
sl@0
    93
sl@0
    94
sl@0
    95
TInt CFloggerTest006_01::executeStepL(TBool heapTest)
sl@0
    96
	{
sl@0
    97
	TInt ret = KErrNone;
sl@0
    98
sl@0
    99
	ret = DoTestConnect();
sl@0
   100
	CleanupClosePushL(iFlogger);
sl@0
   101
	if (ret == KErrNone)
sl@0
   102
		{
sl@0
   103
		ret = DoTestWrite();
sl@0
   104
		if ( ret == KErrNone)
sl@0
   105
			{
sl@0
   106
			TRAPD(r, ret = DoTestCheckWriteL());
sl@0
   107
			if ((heapTest) && ((ret == KErrNotFound) || (r != KErrNone)))
sl@0
   108
				{
sl@0
   109
				ret = KErrNoMemory;
sl@0
   110
				}
sl@0
   111
			else if (r != KErrNone)
sl@0
   112
				{
sl@0
   113
				ret = r;
sl@0
   114
				}
sl@0
   115
			}
sl@0
   116
		}
sl@0
   117
sl@0
   118
	CleanupStack::PopAndDestroy();	//logger
sl@0
   119
	return ret;
sl@0
   120
	}
sl@0
   121
sl@0
   122
/**
sl@0
   123
* Function  Name		: executeStepL
sl@0
   124
* Input parameters		: None
sl@0
   125
* Output parameters		: TInt 
sl@0
   126
* Description 			: This function writes the test data in to the log file 
sl@0
   127
*						  This function check the test message is present in the 
sl@0
   128
*						  log file or not.
sl@0
   129
sl@0
   130
*/
sl@0
   131
sl@0
   132
sl@0
   133
TInt CFloggerTest006_01::executeStepL()
sl@0
   134
	{
sl@0
   135
	return KErrGeneral;
sl@0
   136
	}
sl@0
   137
sl@0
   138
/**
sl@0
   139
* Function  Name		: DoTestWrite
sl@0
   140
* Input parameters		: None
sl@0
   141
* Output parameters		: TInt 
sl@0
   142
* Description 			: This function writes the data to the file logger
sl@0
   143
 
sl@0
   144
*/
sl@0
   145
sl@0
   146
sl@0
   147
TInt CFloggerTest006_01::DoTestWrite()
sl@0
   148
	{
sl@0
   149
	_LIT16(KTestMessageOne,"TC 006_01: The value of test integer variable :%d");// The value of second test integer variable : %d");
sl@0
   150
	return DoTestWriteFormat(KTestMessageOne, 100);  //Write unicode formatted test descriptor
sl@0
   151
	}
sl@0
   152
sl@0
   153
sl@0
   154
/**
sl@0
   155
* Function  Name		: DoTestWriteFormat
sl@0
   156
* Input parameters		: TRefByValue<const TDesC16>
sl@0
   157
* Output parameters		: TInt 
sl@0
   158
* Description 			: This function writes formatted data to the file logger
sl@0
   159
 
sl@0
   160
*/
sl@0
   161
sl@0
   162
sl@0
   163
TInt CFloggerTest006_01::DoTestWriteFormat(TRefByValue<const TDesC16> aFmt,...)
sl@0
   164
	{
sl@0
   165
	VA_LIST list;
sl@0
   166
	VA_START(list,aFmt);
sl@0
   167
	iFlogger.WriteFormat(aFmt,list);
sl@0
   168
sl@0
   169
	ForceLogFlush(iFlogger);
sl@0
   170
	return KErrNone;
sl@0
   171
	}
sl@0
   172
sl@0
   173
sl@0
   174
/**
sl@0
   175
* Function  Name		: DoTestCheckWriteL
sl@0
   176
* Input parameters		: None
sl@0
   177
* Output parameters		: TInt 
sl@0
   178
* Description 			: This function checks the weather test data was written
sl@0
   179
*						  in to the log file by DoTestWriteL() or not.
sl@0
   180
					  
sl@0
   181
*/
sl@0
   182
sl@0
   183
sl@0
   184
TInt CFloggerTest006_01::DoTestCheckWriteL()
sl@0
   185
	{
sl@0
   186
	User::After(KTimeToLog);
sl@0
   187
sl@0
   188
	RFile theFile;
sl@0
   189
	HBufC8 * hBuffer;
sl@0
   190
	TInt listfilesize;
sl@0
   191
	TInt returnCode;
sl@0
   192
	RFs fileSystem; //For file operation create a file system	
sl@0
   193
	TBuf8<256> testData; //To hold the test descriptor
sl@0
   194
sl@0
   195
	_LIT8(KTestMessageOne,"TC 006_01: The value of test integer variable :%d");
sl@0
   196
	testData.Format(KTestMessageOne,100);
sl@0
   197
sl@0
   198
	_LIT8(KOOMError, "#Logs may be lost out of memory!!"); //Error message
sl@0
   199
sl@0
   200
	_LIT(KLogFile,"c:\\logs\\log.txt"); // the log file path
sl@0
   201
sl@0
   202
	User::LeaveIfError(fileSystem.Connect());
sl@0
   203
	
sl@0
   204
	//Open the file in the read mode
sl@0
   205
	User::LeaveIfError(theFile.Open(fileSystem,KLogFile,EFileRead)); 
sl@0
   206
sl@0
   207
	CleanupClosePushL(theFile);
sl@0
   208
sl@0
   209
	
sl@0
   210
	User::LeaveIfError(returnCode = theFile.Size(listfilesize)); //Size of the file
sl@0
   211
	hBuffer = HBufC8::New(listfilesize); //Allocate the buffer
sl@0
   212
	CleanupStack::PushL(hBuffer);
sl@0
   213
	TPtr8 ptrString = hBuffer->Des();  ; //To hold the buffer
sl@0
   214
sl@0
   215
	// Read from position 0: start of file
sl@0
   216
	returnCode = theFile.Read(ptrString);
sl@0
   217
	
sl@0
   218
	returnCode = ptrString.Find(testData); //find the test descriptor in the buffer read
sl@0
   219
									//from the file
sl@0
   220
sl@0
   221
	if (returnCode == KErrNotFound)  //Find the error message
sl@0
   222
		{
sl@0
   223
		returnCode = ptrString.Find(KOOMError);
sl@0
   224
		if (returnCode > 0)
sl@0
   225
			User::Leave(KErrNoMemory);
sl@0
   226
		}
sl@0
   227
sl@0
   228
sl@0
   229
	CleanupStack::PopAndDestroy(hBuffer);
sl@0
   230
	CleanupStack::PopAndDestroy(); // For theFile object
sl@0
   231
	if (returnCode > 0)
sl@0
   232
		return KErrNone;
sl@0
   233
	else 
sl@0
   234
		return KErrNotFound;
sl@0
   235
	}
sl@0
   236
sl@0
   237
sl@0
   238
sl@0
   239
/**
sl@0
   240
* Function  Name		: DoTestConnect
sl@0
   241
* Input parameters		: None
sl@0
   242
* Output parameters		: TInt 
sl@0
   243
* Description 			: This function establishes a connection to file logger
sl@0
   244
*						  and sets the system and component name in file logger.
sl@0
   245
					  
sl@0
   246
*/
sl@0
   247
sl@0
   248
sl@0
   249
TInt CFloggerTest006_01::DoTestConnect()
sl@0
   250
	{
sl@0
   251
	TInt ret = EFail;
sl@0
   252
	TPtrC8 ptrSubSystem;
sl@0
   253
	TPtrC8 ptrComponent;
sl@0
   254
	ptrSubSystem.Set(_L8("SubSystem"));
sl@0
   255
	ptrComponent.Set(_L8("Component"));
sl@0
   256
sl@0
   257
	ret = iFlogger.Connect(); //Call connect() of Flogger
sl@0
   258
	if (ret == KErrNone)
sl@0
   259
		ret = iFlogger.SetLogTags(ptrSubSystem, ptrComponent); //SetLogTags() of Flogger called
sl@0
   260
sl@0
   261
	if (ret == KErrNone)
sl@0
   262
		ret = iFlogger.ClearLog(); //clear the contents from the log
sl@0
   263
	return ret;
sl@0
   264
	}
sl@0
   265
sl@0
   266
sl@0
   267
sl@0
   268
sl@0
   269
sl@0
   270
/**
sl@0
   271
* Function  Name	: CFloggerTest006_02
sl@0
   272
* Input parameters	: None
sl@0
   273
* Output parameters : None
sl@0
   274
* Description		: This is the constructor
sl@0
   275
*/
sl@0
   276
sl@0
   277
sl@0
   278
CFloggerTest006_02::CFloggerTest006_02()
sl@0
   279
	{
sl@0
   280
	// store the name of this test case
sl@0
   281
	SetTestStepName(_L("step_006_02"));
sl@0
   282
	}
sl@0
   283
sl@0
   284
sl@0
   285
/**
sl@0
   286
* Function  Name	:~ CFloggerTest006_02
sl@0
   287
* Input parameters	: None
sl@0
   288
* Output parameters : None
sl@0
   289
* Description		: This is the Destructor
sl@0
   290
*/
sl@0
   291
sl@0
   292
sl@0
   293
CFloggerTest006_02::~CFloggerTest006_02()
sl@0
   294
	{
sl@0
   295
	}
sl@0
   296
sl@0
   297
sl@0
   298
/**
sl@0
   299
* Function  Name	: doTestStepL
sl@0
   300
* Input parameters	: None
sl@0
   301
* Output parameters : TVerdict 
sl@0
   302
* Description		: This function returns weather the test case 006_02 has 
sl@0
   303
* 					  passed or failed
sl@0
   304
sl@0
   305
*/
sl@0
   306
sl@0
   307
sl@0
   308
TVerdict CFloggerTest006_02::doTestStepL( )
sl@0
   309
	{
sl@0
   310
	INFO_PRINTF1(_L("Step 006.02 called "));
sl@0
   311
		
sl@0
   312
	if ( executeStepL() == KErrNone )
sl@0
   313
		SetTestStepResult(EPass);
sl@0
   314
sl@0
   315
	else
sl@0
   316
		SetTestStepResult(EFail);
sl@0
   317
sl@0
   318
	
sl@0
   319
	User::After(KTimeForDisplay);
sl@0
   320
	return TestStepResult();
sl@0
   321
	}
sl@0
   322
sl@0
   323
sl@0
   324
/**
sl@0
   325
* Function  Name		: executeStepL
sl@0
   326
* Input parameters		: None
sl@0
   327
* Output parameters		: TInt 
sl@0
   328
* Description 			: This function writes the test data in to the log file 
sl@0
   329
* 						  This function check the test message is present in the 
sl@0
   330
*						  log file 
sl@0
   331
sl@0
   332
*/
sl@0
   333
sl@0
   334
sl@0
   335
TInt CFloggerTest006_02::executeStepL()
sl@0
   336
	{
sl@0
   337
	TInt ret = KErrGeneral;
sl@0
   338
	
sl@0
   339
	ret = DoTestConnect();
sl@0
   340
	CleanupClosePushL(iFlogger);
sl@0
   341
	if (ret == KErrNone)
sl@0
   342
		ret = DoTestWrite();
sl@0
   343
		if (ret == KErrNone)
sl@0
   344
			ret = DoTestCheckWriteL();
sl@0
   345
	
sl@0
   346
	CleanupStack::PopAndDestroy();	//logger
sl@0
   347
sl@0
   348
	User::After(1000000);
sl@0
   349
	return ret;
sl@0
   350
	}
sl@0
   351
sl@0
   352
/**
sl@0
   353
* Function  Name		: executeStepL
sl@0
   354
* Input parameters		: None
sl@0
   355
* Output parameters		: TInt 
sl@0
   356
* Description 			: This function writes the test data in to the log file 
sl@0
   357
* 						  This function check the test message is present in the 
sl@0
   358
*						  log file 
sl@0
   359
sl@0
   360
*/
sl@0
   361
sl@0
   362
sl@0
   363
TInt CFloggerTest006_02::executeStepL(TBool)
sl@0
   364
	{
sl@0
   365
	return KErrGeneral;
sl@0
   366
	}
sl@0
   367
sl@0
   368
/**
sl@0
   369
* Function  Name		: DoTestConnect
sl@0
   370
* Input parameters		: None
sl@0
   371
* Output parameters		: TInt 
sl@0
   372
* Description 			: This function establishes a connection to file logger
sl@0
   373
* 						  and sets the system and component name in file logger.
sl@0
   374
					  
sl@0
   375
*/
sl@0
   376
sl@0
   377
sl@0
   378
TInt CFloggerTest006_02::DoTestConnect()
sl@0
   379
	{
sl@0
   380
	TInt ret = KErrGeneral;
sl@0
   381
	TPtrC8 ptrSubSystem;
sl@0
   382
	TPtrC8 ptrComponent;
sl@0
   383
	ptrSubSystem.Set(_L8("SubSystem"));
sl@0
   384
	ptrComponent.Set(_L8("Component"));
sl@0
   385
sl@0
   386
	ret = iFlogger.Connect(); //Call connect() of Flogger
sl@0
   387
	if (ret == KErrNone)
sl@0
   388
		ret = iFlogger.SetLogTags(ptrSubSystem, ptrComponent); //SetLogTags() of Flogger called
sl@0
   389
sl@0
   390
	if (ret == KErrNone)
sl@0
   391
		ret = iFlogger.ClearLog(); //clear the contents from the log
sl@0
   392
	
sl@0
   393
	return ret;
sl@0
   394
	}
sl@0
   395
sl@0
   396
sl@0
   397
/**
sl@0
   398
* Function  Name		: DoTestWrite
sl@0
   399
* Input parameters		: None
sl@0
   400
* Output parameters		: TInt 
sl@0
   401
* Description 			: This function writes the data to the file logger
sl@0
   402
 
sl@0
   403
*/
sl@0
   404
sl@0
   405
sl@0
   406
TInt CFloggerTest006_02::DoTestWrite()
sl@0
   407
	{
sl@0
   408
	//KTestLongMessage contains a very long test message 
sl@0
   409
	_LIT(KTestLongMessage,"TC 6_02: This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message %d");
sl@0
   410
	DoTestWriteFormat(KTestLongMessage, 100); //this causes a PANIC
sl@0
   411
	ForceLogFlush(iFlogger);	
sl@0
   412
	
sl@0
   413
	return KErrNone; 
sl@0
   414
	}
sl@0
   415
sl@0
   416
sl@0
   417
/**
sl@0
   418
* Function  Name		: DoTestWriteFormat
sl@0
   419
* Input parameters		: TRefByValue<const TDesC16>
sl@0
   420
* Output parameters		: TInt 
sl@0
   421
* Description 			: This function writes formatted data to the file logger
sl@0
   422
 
sl@0
   423
*/
sl@0
   424
sl@0
   425
sl@0
   426
TInt CFloggerTest006_02::DoTestWriteFormat(TRefByValue<const TDesC16> aFmt,...)
sl@0
   427
	{
sl@0
   428
	VA_LIST list;
sl@0
   429
	VA_START(list,aFmt);
sl@0
   430
	TRAPD(res, iFlogger.WriteFormat(aFmt,list)); 
sl@0
   431
	return res;
sl@0
   432
	}
sl@0
   433
sl@0
   434
sl@0
   435
/**
sl@0
   436
* Function  Name		: DoTestCheckWriteL
sl@0
   437
* Input parameters		: None
sl@0
   438
* Output parameters		: TInt 
sl@0
   439
* Description 			: This function checks the weather test data was written
sl@0
   440
*						  in to the log file by DoTestWriteL() or not.
sl@0
   441
					  
sl@0
   442
*/
sl@0
   443
sl@0
   444
sl@0
   445
TInt CFloggerTest006_02::DoTestCheckWriteL()
sl@0
   446
	{
sl@0
   447
	User::After(KTimeToLog);
sl@0
   448
	RFile theFile;
sl@0
   449
	HBufC8 * hBuffer;
sl@0
   450
	TInt listfilesize,returnCode;
sl@0
   451
	RFs fileSystem; //For file operation create a file system
sl@0
   452
	TBuf8<256> testData; //To hold the test descriptor
sl@0
   453
	_LIT(KLogFile,"c:\\logs\\log.txt"); // log file name and path
sl@0
   454
sl@0
   455
	//The following contains the string of length 200(max) 
sl@0
   456
	//which is  written to the log file
sl@0
   457
	//_LIT(KTestLongMessage, "This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message");
sl@0
   458
	_LIT(KTestLongMessage, "TC 6_02: This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long message This is the long");
sl@0
   459
	
sl@0
   460
	//_LIT8(KOOMError, "#Logs may be lost out of memory!!");
sl@0
   461
	
sl@0
   462
	User::LeaveIfError(fileSystem.Connect());
sl@0
   463
	
sl@0
   464
	//Open the file in the read mode
sl@0
   465
	User::LeaveIfError(theFile.Open(fileSystem,KLogFile,EFileRead)); 
sl@0
   466
sl@0
   467
	CleanupClosePushL(theFile);
sl@0
   468
sl@0
   469
	User::LeaveIfError(theFile.Size(listfilesize)); //Size of the file
sl@0
   470
	
sl@0
   471
	hBuffer = HBufC8::New(listfilesize); //Allocate the buffer
sl@0
   472
	CleanupStack::PushL(hBuffer);
sl@0
   473
sl@0
   474
	TPtr8 ptrString = hBuffer->Des();  ; //To hold the buffer
sl@0
   475
sl@0
   476
	// Read from position 0: start of file
sl@0
   477
	User::LeaveIfError(returnCode = theFile.Read(ptrString));
sl@0
   478
	
sl@0
   479
	testData.Copy(KTestLongMessage); //Copy the test descriptor
sl@0
   480
	returnCode = ptrString.Find(testData); //find the test descriptor in the buffer read
sl@0
   481
											//from the file
sl@0
   482
sl@0
   483
	
sl@0
   484
	CleanupStack::PopAndDestroy(hBuffer);
sl@0
   485
	CleanupStack::PopAndDestroy();	//theFile
sl@0
   486
	if (returnCode > 0)
sl@0
   487
		return KErrNone;
sl@0
   488
	else 
sl@0
   489
		return KErrGeneral;
sl@0
   490
	
sl@0
   491
sl@0
   492
}
sl@0
   493
sl@0
   494
sl@0
   495
sl@0
   496
sl@0
   497
/**
sl@0
   498
//Function  Name	: CFloggerTest006_03
sl@0
   499
//Input parameters	: None
sl@0
   500
//Output parameters : None
sl@0
   501
//Description		: This is the constructor
sl@0
   502
*/
sl@0
   503
sl@0
   504
sl@0
   505
CFloggerTest006_03::CFloggerTest006_03()
sl@0
   506
	{
sl@0
   507
	// store the name of this test case
sl@0
   508
	SetTestStepName(_L("step_006_03"));
sl@0
   509
	}
sl@0
   510
sl@0
   511
sl@0
   512
/**
sl@0
   513
* Function  Name	:~ CFloggerTest006_03
sl@0
   514
* Input parameters	: None
sl@0
   515
* Output parameters : None
sl@0
   516
* Description		: This is the Destructor
sl@0
   517
*/
sl@0
   518
sl@0
   519
sl@0
   520
CFloggerTest006_03::~CFloggerTest006_03()
sl@0
   521
	{
sl@0
   522
	
sl@0
   523
	}
sl@0
   524
sl@0
   525
sl@0
   526
sl@0
   527
/**
sl@0
   528
* Function  Name : doTestStepL
sl@0
   529
* Input parameters : None
sl@0
   530
* Output parameters : TVerdict 
sl@0
   531
* Description : This function is responsible for doing the heap test analysis 
sl@0
   532
sl@0
   533
*/
sl@0
   534
sl@0
   535
sl@0
   536
TVerdict CFloggerTest006_03::doTestStepL( )
sl@0
   537
	{
sl@0
   538
	INFO_PRINTF1(_L("Step 006.03 called "));
sl@0
   539
sl@0
   540
	CFloggerTest006_01* step006_01 = new CFloggerTest006_01;
sl@0
   541
	CleanupStack::PushL(step006_01);
sl@0
   542
	doTestStepWithHeapFailureL( *step006_01, 1, 20, KErrNone, ETrue);
sl@0
   543
sl@0
   544
	CleanupStack::PopAndDestroy(step006_01);
sl@0
   545
	User::After(KTimeForDisplay);
sl@0
   546
	return TestStepResult();
sl@0
   547
	}
sl@0
   548