os/persistentdata/traceservices/commsdebugutility/TE_commsdebugutility/src/step_016_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 016.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 "TestMessage.h"
sl@0
    21
#include <comms-infras/commsdebugutility.h>
sl@0
    22
#include <f32file.h>
sl@0
    23
sl@0
    24
sl@0
    25
//User includes
sl@0
    26
#include "teststepcomsdbg.h"
sl@0
    27
#include "step_016_xx.h"
sl@0
    28
sl@0
    29
sl@0
    30
/**
sl@0
    31
* Function  Name	: CFloggerTest016_01
sl@0
    32
* Input parameters	: None
sl@0
    33
* Output parameters : None
sl@0
    34
* Description		: This is the constructor
sl@0
    35
*/
sl@0
    36
sl@0
    37
sl@0
    38
CFloggerTest016_01::CFloggerTest016_01()
sl@0
    39
	{
sl@0
    40
	// store the name of this test case
sl@0
    41
	SetTestStepName(_L("step_016_01"));
sl@0
    42
	}
sl@0
    43
sl@0
    44
sl@0
    45
/**
sl@0
    46
* Function  Name	:~ CFloggerTest016_01
sl@0
    47
* Input parameters	: None
sl@0
    48
* Output parameters : None
sl@0
    49
* Description		: This is the Destructor
sl@0
    50
*/
sl@0
    51
sl@0
    52
sl@0
    53
CFloggerTest016_01::~CFloggerTest016_01()
sl@0
    54
	{
sl@0
    55
	}
sl@0
    56
sl@0
    57
/**
sl@0
    58
* Function  Name	: doTestStepL
sl@0
    59
* Input parameters	: None
sl@0
    60
* Output parameters : TVerdict 
sl@0
    61
* Description		: This function returns weather the test case 016_01 has 
sl@0
    62
* 					  passed or failed
sl@0
    63
sl@0
    64
*/
sl@0
    65
sl@0
    66
sl@0
    67
TVerdict CFloggerTest016_01::doTestStepL( )
sl@0
    68
	{
sl@0
    69
	INFO_PRINTF1(_L("Step 016.01 called "));
sl@0
    70
	
sl@0
    71
	if ( executeStepL(EFalse) == KErrNone )
sl@0
    72
		SetTestStepResult(EPass);
sl@0
    73
sl@0
    74
	else
sl@0
    75
		SetTestStepResult(EFail);
sl@0
    76
sl@0
    77
	
sl@0
    78
	User::After(KTimeForDisplay1);
sl@0
    79
	return TestStepResult();
sl@0
    80
	}
sl@0
    81
sl@0
    82
sl@0
    83
/**
sl@0
    84
* Function  Name		: executeStepL
sl@0
    85
* Input parameters		: None
sl@0
    86
* Output parameters		: TInt 
sl@0
    87
* Description 			: This function writes the test data in to the log file 
sl@0
    88
* 						  This function check the test message is present in the 
sl@0
    89
* 						  log file 
sl@0
    90
sl@0
    91
*/
sl@0
    92
sl@0
    93
sl@0
    94
TInt CFloggerTest016_01::executeStepL(TBool heapTest)
sl@0
    95
	{
sl@0
    96
	TInt ret = KErrGeneral;
sl@0
    97
	
sl@0
    98
	ret = DoTestWrite();
sl@0
    99
	if (ret == KErrNone )
sl@0
   100
		{
sl@0
   101
		User::After(KTimeToLog);
sl@0
   102
		TRAPD(r, ret = DoTestCheckWriteL() );
sl@0
   103
		if ((heapTest) && ((ret == KErrNotFound) || (r != KErrNone)))
sl@0
   104
			{
sl@0
   105
			ret = KErrNoMemory;
sl@0
   106
			}
sl@0
   107
		else if (r != KErrNone)
sl@0
   108
			{
sl@0
   109
			ret = r;
sl@0
   110
			}
sl@0
   111
		}
sl@0
   112
	return ret;
sl@0
   113
	}
sl@0
   114
/**
sl@0
   115
* Function  Name		: executeStepL
sl@0
   116
* Input parameters		: None
sl@0
   117
* Output parameters		: TInt 
sl@0
   118
* Description 			: This function writes the test data in to the log file 
sl@0
   119
* 						  This function check the test message is present in the 
sl@0
   120
* 						  log file 
sl@0
   121
sl@0
   122
*/
sl@0
   123
sl@0
   124
sl@0
   125
TInt CFloggerTest016_01::executeStepL()
sl@0
   126
	{
sl@0
   127
	return KErrGeneral;
sl@0
   128
	}
sl@0
   129
sl@0
   130
/**
sl@0
   131
* Function  Name		: DoTestWrite
sl@0
   132
* Input parameters		: None
sl@0
   133
* Output parameters		: TInt 
sl@0
   134
* Description 			: This function writes the data to the file logger
sl@0
   135
 
sl@0
   136
*/
sl@0
   137
sl@0
   138
sl@0
   139
TInt CFloggerTest016_01::DoTestWrite()
sl@0
   140
	{
sl@0
   141
	_LIT8(KTestMessageOne,"TC 16_01: The value of test integer variable :%d");
sl@0
   142
	DoTestWriteFormat(KTestMessageOne, 100);  //Write 8 bit formatted test descriptor
sl@0
   143
sl@0
   144
	// connect so we can flush file buffer for heap check since timer is killed in heap checks
sl@0
   145
	RFileLogger theFlogger;
sl@0
   146
	theFlogger.Connect();
sl@0
   147
	theFlogger.SetLogTags(KStdSubsysTag8, KStdCompTag8);
sl@0
   148
	ForceLogFlush(theFlogger);
sl@0
   149
	theFlogger.Close();
sl@0
   150
	return KErrNone; 
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 TDesC8>
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
TInt CFloggerTest016_01::DoTestWriteFormat(TRefByValue<const TDesC8> aFmt,...)
sl@0
   163
	{
sl@0
   164
	VA_LIST list;
sl@0
   165
	VA_START(list,aFmt);
sl@0
   166
	RFileLogger::WriteFormat(KStdSubsysTag8, KStdCompTag8, aFmt, list);
sl@0
   167
	return KErrNone;
sl@0
   168
	}
sl@0
   169
sl@0
   170
sl@0
   171
/**
sl@0
   172
* Function  Name		: DoTestCheckWriteL
sl@0
   173
* Input parameters		: None
sl@0
   174
* Output parameters		: TInt 
sl@0
   175
* Description 			: This function checks the weather test data was written
sl@0
   176
* 						  in to the log file by DoTestWrite() or not.
sl@0
   177
					  
sl@0
   178
*/
sl@0
   179
sl@0
   180
sl@0
   181
TInt CFloggerTest016_01::DoTestCheckWriteL()
sl@0
   182
	{
sl@0
   183
	User::After(KTimeToLog);
sl@0
   184
sl@0
   185
	RFile theFile;
sl@0
   186
	HBufC8 * hBuffer;
sl@0
   187
	TInt listfilesize;
sl@0
   188
	TInt returnCode;
sl@0
   189
	RFs fileSystem; //For file operation create a file system	
sl@0
   190
	TBuf8<256> testData; //To hold the test descriptor
sl@0
   191
sl@0
   192
	_LIT8(KTestMessageOne,"TC 16_01: The value of test integer variable :%d");
sl@0
   193
	testData.Format(KTestMessageOne, 100);
sl@0
   194
sl@0
   195
	_LIT(KLogFile,"c:\\logs\\log.txt"); // the log file path
sl@0
   196
sl@0
   197
	User::LeaveIfError(fileSystem.Connect());
sl@0
   198
	
sl@0
   199
	//Open the file in the read mode
sl@0
   200
	User::LeaveIfError(theFile.Open(fileSystem,KLogFile,EFileRead)); 
sl@0
   201
sl@0
   202
	
sl@0
   203
	User::LeaveIfError(returnCode = theFile.Size(listfilesize)); //Size of the file
sl@0
   204
	hBuffer = HBufC8::New(listfilesize); //Allocate the buffer
sl@0
   205
	CleanupStack::PushL(hBuffer);
sl@0
   206
	TPtr8 ptrString = hBuffer->Des();  ; //To hold the buffer
sl@0
   207
sl@0
   208
	// Read from position 0: start of file
sl@0
   209
	returnCode = theFile.Read(ptrString);
sl@0
   210
	
sl@0
   211
	returnCode = ptrString.Find(testData); //find the test descriptor in the buffer read
sl@0
   212
										//from the file
sl@0
   213
	theFile.Close();
sl@0
   214
	fileSystem.Close(); //Close the file server
sl@0
   215
	CleanupStack::PopAndDestroy(hBuffer);
sl@0
   216
	if (returnCode > 0)
sl@0
   217
		return KErrNone;
sl@0
   218
	else 
sl@0
   219
		return KErrNotFound;
sl@0
   220
	}
sl@0
   221
sl@0
   222
sl@0
   223
sl@0
   224
sl@0
   225
/**
sl@0
   226
* Function  Name	: CFloggerTest016_02
sl@0
   227
* Input parameters	: None
sl@0
   228
* Output parameters : None
sl@0
   229
* Description		: This is the constructor
sl@0
   230
*/ 
sl@0
   231
sl@0
   232
sl@0
   233
CFloggerTest016_02::CFloggerTest016_02()
sl@0
   234
	{
sl@0
   235
	// store the name of this test case
sl@0
   236
	SetTestStepName(_L("step_016_02"));
sl@0
   237
	}
sl@0
   238
sl@0
   239
sl@0
   240
/**
sl@0
   241
* Function  Name	:~ CFloggerTest016_02
sl@0
   242
* Input parameters	: None
sl@0
   243
* Output parameters : None
sl@0
   244
* Description		: This is the Destructor
sl@0
   245
*/ 
sl@0
   246
sl@0
   247
sl@0
   248
CFloggerTest016_02::~CFloggerTest016_02()
sl@0
   249
	{
sl@0
   250
	iFlogger.Close();
sl@0
   251
	}
sl@0
   252
sl@0
   253
sl@0
   254
/**
sl@0
   255
* Function  Name	: doTestStepL
sl@0
   256
* Input parameters	: None
sl@0
   257
* Output parameters : TVerdict 
sl@0
   258
* Description		: This function returns weather the test case 016_01 has 
sl@0
   259
* 					  passed or failed
sl@0
   260
sl@0
   261
*/
sl@0
   262
sl@0
   263
sl@0
   264
TVerdict CFloggerTest016_02::doTestStepL( )
sl@0
   265
	{
sl@0
   266
	INFO_PRINTF1(_L("Step 016.02 called "));
sl@0
   267
	if ( executeStepL() == KErrNone )
sl@0
   268
		SetTestStepResult(EPass);
sl@0
   269
sl@0
   270
	else
sl@0
   271
		SetTestStepResult(EFail);
sl@0
   272
sl@0
   273
	
sl@0
   274
	User::After(KTimeForDisplay1);
sl@0
   275
	return TestStepResult();				
sl@0
   276
	}
sl@0
   277
sl@0
   278
/**
sl@0
   279
* Function  Name		: executeStepL
sl@0
   280
* Input parameters		: None
sl@0
   281
* Output parameters		: TInt 
sl@0
   282
* Description 			: This function writes the test data in to the log file 
sl@0
   283
* 						  This function check the test message is present in the 
sl@0
   284
* 						  log file 
sl@0
   285
sl@0
   286
*/
sl@0
   287
sl@0
   288
sl@0
   289
TInt CFloggerTest016_02::executeStepL(TBool)
sl@0
   290
	{
sl@0
   291
	return KErrGeneral;
sl@0
   292
	}
sl@0
   293
/**
sl@0
   294
* Function  Name		: executeStepL
sl@0
   295
* Input parameters		: None
sl@0
   296
* Output parameters		: TInt 
sl@0
   297
* Description 			: This function writes the test data in to the log file 
sl@0
   298
* 						  This function check the test message is present in the 
sl@0
   299
* 						  log file 
sl@0
   300
sl@0
   301
*/
sl@0
   302
sl@0
   303
sl@0
   304
TInt CFloggerTest016_02::executeStepL()
sl@0
   305
	{
sl@0
   306
	User::After(1000*1000);	//Need this or connect will return KErrServerTerminated
sl@0
   307
	TInt j = 0;
sl@0
   308
	for(TInt i=0; i < 100000000; i++)
sl@0
   309
		j++;
sl@0
   310
sl@0
   311
	TInt ret = KErrGeneral;
sl@0
   312
	ret = DoTestWrite();
sl@0
   313
	if (ret == KErrNone )
sl@0
   314
		{
sl@0
   315
		TRAPD(r, ret = DoTestCheckWriteL());
sl@0
   316
		if ( r != KErrNone)
sl@0
   317
			ret = r;
sl@0
   318
		}
sl@0
   319
	return ret;
sl@0
   320
	}
sl@0
   321
sl@0
   322
sl@0
   323
TInt CFloggerTest016_02::DoTestWrite()
sl@0
   324
	{
sl@0
   325
	_LIT8(KTestLongMessage,"TEST 16.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"); //8 bit test decriptor
sl@0
   326
	DoTestWriteFormat(KTestLongMessage, 100);  //Write 8 bit formatted test descriptor
sl@0
   327
	return KErrNone; 
sl@0
   328
	}
sl@0
   329
sl@0
   330
sl@0
   331
/**
sl@0
   332
* Function  Name		: DoTestWriteFormat
sl@0
   333
* Input parameters		: TRefByValue<const TDesC16>
sl@0
   334
* Output parameters		: TInt 
sl@0
   335
* Description 			: This function writes formatted data to the file logger
sl@0
   336
*/
sl@0
   337
sl@0
   338
sl@0
   339
TInt CFloggerTest016_02::DoTestWriteFormat(TRefByValue<const TDesC8> aFmt,...)
sl@0
   340
	{
sl@0
   341
sl@0
   342
	RFileLogger theFlogger;
sl@0
   343
	TInt ret = KErrGeneral;
sl@0
   344
	ret = theFlogger.Connect(); //Just to clear the old log message
sl@0
   345
	if ( ret == KErrNone)
sl@0
   346
		ret = theFlogger.SetLogTags(KStdSubsysTag8, KStdCompTag8);
sl@0
   347
		if ( ret == KErrNone)
sl@0
   348
			ret = theFlogger.ClearLog();
sl@0
   349
			if ( ret == KErrNone)
sl@0
   350
				theFlogger.Close();
sl@0
   351
	
sl@0
   352
	User::After(100000);
sl@0
   353
	
sl@0
   354
	if (ret == KErrNone)
sl@0
   355
		{
sl@0
   356
		VA_LIST list;
sl@0
   357
		VA_START(list,aFmt);
sl@0
   358
		
sl@0
   359
		RFileLogger::WriteFormat(KStdSubsysTag8, KStdCompTag8, aFmt, list);
sl@0
   360
		User::After(100000);
sl@0
   361
		return KErrNone;
sl@0
   362
		}
sl@0
   363
sl@0
   364
	return ret;
sl@0
   365
	}
sl@0
   366
sl@0
   367
sl@0
   368
/**
sl@0
   369
* Function  Name		: DoTestCheckWriteL
sl@0
   370
* Input parameters		: None
sl@0
   371
* Output parameters		: TInt 
sl@0
   372
* Description 			: This function checks the weather test data was written
sl@0
   373
* 						  in to the log file by DoTestWrite() or not.
sl@0
   374
					  
sl@0
   375
*/
sl@0
   376
sl@0
   377
sl@0
   378
TInt CFloggerTest016_02::DoTestCheckWriteL()
sl@0
   379
	{
sl@0
   380
	User::After(KTimeToLog);
sl@0
   381
sl@0
   382
	RFile theFile;
sl@0
   383
	HBufC8 * hBuffer;
sl@0
   384
	TInt listfilesize,returnCode;
sl@0
   385
	RFs fileSystem; //For file operation create a file system
sl@0
   386
	TBuf8<256> testData; //To hold the test descriptor
sl@0
   387
	_LIT(KLogFile,"c:\\logs\\log.txt"); // log file name and path
sl@0
   388
sl@0
   389
	//The following contains the string of length 200(max) 
sl@0
   390
	//which is  written to the log file
sl@0
   391
	//_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
   392
	_LIT(KTestLongMessage, "TEST 16.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 l");
sl@0
   393
	
sl@0
   394
	//_LIT8(KOOMError, "#Logs may be lost out of memory!!");
sl@0
   395
	
sl@0
   396
	User::LeaveIfError(fileSystem.Connect());
sl@0
   397
	
sl@0
   398
	//Open the file in the read mode
sl@0
   399
	User::LeaveIfError(theFile.Open(fileSystem,KLogFile,EFileRead)); 
sl@0
   400
sl@0
   401
	CleanupClosePushL(theFile);
sl@0
   402
sl@0
   403
	User::LeaveIfError(theFile.Size(listfilesize)); //Size of the file
sl@0
   404
	
sl@0
   405
	hBuffer = HBufC8::New(listfilesize); //Allocate the buffer
sl@0
   406
	CleanupStack::PushL(hBuffer);
sl@0
   407
sl@0
   408
	TPtr8 ptrString = hBuffer->Des();  ; //To hold the buffer
sl@0
   409
sl@0
   410
	// Read from position 0: start of file
sl@0
   411
	User::LeaveIfError(returnCode = theFile.Read(ptrString));
sl@0
   412
	
sl@0
   413
	testData.Copy(KTestLongMessage); //Copy the test descriptor
sl@0
   414
	returnCode = ptrString.Find(testData); //find the test descriptor in the buffer read
sl@0
   415
											//from the file
sl@0
   416
	
sl@0
   417
	CleanupStack::PopAndDestroy(hBuffer);
sl@0
   418
	CleanupStack::PopAndDestroy();	//theFile
sl@0
   419
	if (returnCode > 0)
sl@0
   420
		return KErrNone;
sl@0
   421
	else 
sl@0
   422
		return KErrGeneral;
sl@0
   423
	}
sl@0
   424
sl@0
   425
sl@0
   426
/**
sl@0
   427
* Function  Name	: CFloggerTest016_03
sl@0
   428
* Input parameters	: None
sl@0
   429
* Output parameters : None
sl@0
   430
* Description		: This is the constructor
sl@0
   431
*/ 
sl@0
   432
sl@0
   433
sl@0
   434
CFloggerTest016_03::CFloggerTest016_03()
sl@0
   435
	{
sl@0
   436
	// store the name of this test case
sl@0
   437
	SetTestStepName(_L("step_016_03"));
sl@0
   438
	}
sl@0
   439
sl@0
   440
sl@0
   441
/**
sl@0
   442
* Function  Name	:~ CFloggerTest016_03
sl@0
   443
* Input parameters	: None
sl@0
   444
* Output parameters : None
sl@0
   445
* Description		: This is the Destructor
sl@0
   446
*/ 
sl@0
   447
sl@0
   448
sl@0
   449
CFloggerTest016_03::~CFloggerTest016_03()
sl@0
   450
	{
sl@0
   451
	}
sl@0
   452
sl@0
   453
sl@0
   454
/**
sl@0
   455
* Function  Name : doTestStepL
sl@0
   456
* Input parameters : None
sl@0
   457
* Output parameters : TVerdict 
sl@0
   458
* Description : This function is responsible for doing the heap test analysis 
sl@0
   459
sl@0
   460
*/
sl@0
   461
sl@0
   462
sl@0
   463
TVerdict CFloggerTest016_03::doTestStepL( )
sl@0
   464
	{
sl@0
   465
	INFO_PRINTF1(_L("Step 016.03 called "));
sl@0
   466
sl@0
   467
	CFloggerTest016_01* step016_01 = new CFloggerTest016_01;
sl@0
   468
	CleanupStack::PushL(step016_01);
sl@0
   469
	doTestStepWithHeapFailureL( *step016_01, 1, 20, KErrNone, ETrue);
sl@0
   470
sl@0
   471
	CleanupStack::PopAndDestroy(step016_01);
sl@0
   472
	User::After(KTimeForDisplay);
sl@0
   473
	return TestStepResult();
sl@0
   474
	}
sl@0
   475