os/ossrv/genericopenlibs/openenvcore/libc/test/testdb_blr/src/tdb_blr.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.
     1 /*
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description:
    15 *
    16 */
    17 
    18 
    19 
    20 #include "tdb_blr.h"
    21 
    22 const TInt KMaxParamLength=100;
    23 
    24 //----------------------Local declaration of thread funcs-------------------
    25 
    26 void* asctime_thread_1(void* aParam );
    27 void* asctime_thread_2(void* aParam );
    28 void* localtime_thread_1(void* aParam );
    29 void* localtime_thread_2(void* aParam );
    30 void* gmtime_thread_1(void* aParam );
    31 void* gmtime_thread_2(void* aParam );
    32 void* ctime_thread_1(void* aParam );
    33 void* ctime_thread_2(void* aParam );
    34 
    35 CTestDbBlr::~CTestDbBlr() 
    36 	{ 
    37 	}  
    38 
    39 CTestDbBlr::CTestDbBlr(const TDesC& aStepName)
    40 	{
    41 	// MANDATORY Call to base class method to set up the human readable name for logging.
    42 	SetTestStepName(aStepName);		
    43 	}
    44 
    45 TVerdict CTestDbBlr::doTestStepPreambleL()
    46 	{
    47 	__UHEAP_MARK;	
    48 	iParamCnt=0;
    49 	iRandomizerSeed = 1234567890;
    50 	SetTestStepResult(EPass);
    51 	return TestStepResult();
    52 	}
    53 
    54 
    55 
    56 TVerdict CTestDbBlr::doTestStepPostambleL()
    57 	{
    58 	__UHEAP_MARKEND;	
    59 	return TestStepResult();
    60 	}
    61 
    62 
    63 TVerdict CTestDbBlr::doTestStepL()
    64 	{
    65 	int err;
    66 
    67 	if(TestStepName() == Kgetgrgid_pos)
    68 		{
    69    		INFO_PRINTF1(_L("getgrgid_pos():"));
    70    		err = getgrgid_pos();
    71    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
    72    		}
    73    	else
    74    		if(TestStepName() == Kgetgrgid_neg)
    75 		{
    76    		INFO_PRINTF1(_L("getgrgid_neg():"));
    77    		err = getgrgid_neg();
    78    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
    79    		}
    80    	else
    81    		if(TestStepName() == Kgetgrnam_pos)
    82 		{
    83    		INFO_PRINTF1(_L("getgrnam_pos():"));
    84    		err = getgrnam_pos();
    85    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
    86    		}
    87    	else
    88    		if(TestStepName() == Kgetgrnam_neg)
    89 		{
    90    		INFO_PRINTF1(_L("getgrnam_neg():"));
    91    		err = getgrnam_neg();
    92    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
    93    		}
    94    	else
    95    		if(TestStepName() == Kgetgrgid_r_pos)
    96 		{
    97    		INFO_PRINTF1(_L("getgrgid_r_pos():"));
    98    		err = getgrgid_r_pos();
    99    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   100    		}
   101    	else
   102    		if(TestStepName() == Kgetgrgid_r_neg)
   103 		{
   104    		INFO_PRINTF1(_L("getgrgid_r_neg():"));
   105    		err = getgrgid_r_neg();
   106    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   107    		}
   108    	else
   109    		if(TestStepName() == Kgetgrnam_r_pos)
   110 		{
   111    		INFO_PRINTF1(_L("getgrnam_r_pos():"));
   112    		err = getgrnam_r_pos();
   113    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   114    		}
   115    	else
   116    		if(TestStepName() == Kgetgrnam_r_neg)
   117 		{
   118    		INFO_PRINTF1(_L("getgrnam_r_neg():"));
   119    		err = getgrnam_r_neg();
   120    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   121    		}
   122    	else
   123    		if(TestStepName() == Kgetgrent_combined)
   124 		{
   125    		INFO_PRINTF1(_L("getgrent_combined():"));
   126    		err = getgrent_combined();
   127    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   128    		}
   129    	else
   130    		if(TestStepName() == Ksetgrent_combined1)
   131 		{
   132    		INFO_PRINTF1(_L("setgrent_combined1():"));
   133    		err = setgrent_combined1();
   134    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   135    		}
   136    	else
   137    		if(TestStepName() == Kgetpwuid_pos)
   138 		{
   139    		INFO_PRINTF1(_L("getpwuid_pos():"));
   140    		err = getpwuid_pos();
   141    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   142    		}
   143    	else
   144    		if(TestStepName() == Kgetpwnam_pos)
   145 		{
   146    		INFO_PRINTF1(_L("getpwnam_pos():"));
   147    		err = getpwnam_pos();
   148    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   149    		}
   150    	else
   151    		if(TestStepName() == Kgetpwuid_neg)
   152 		{
   153    		INFO_PRINTF1(_L("getpwuid_neg():"));
   154    		err = getpwuid_neg();
   155    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   156    		}
   157    	else
   158    		if(TestStepName() == Kgetpwnam_neg)
   159 		{
   160    		INFO_PRINTF1(_L("getpwnam_neg():"));
   161    		err = getpwnam_neg();
   162    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   163    		}
   164    	else
   165    		if(TestStepName() == Kgetpwuid_r_pos)
   166 		{
   167    		INFO_PRINTF1(_L("getpwuid_r_pos():"));
   168    		err = getpwuid_r_pos();
   169    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   170    		}
   171    	else
   172    		if(TestStepName() == Kgetpwnam_r_pos)
   173 		{
   174    		INFO_PRINTF1(_L("getpwnam_r_pos():"));
   175    		err = getpwnam_r_pos();
   176    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   177    		}
   178    	else
   179    		if(TestStepName() == Kgetpwuid_r_neg)
   180 		{
   181    		INFO_PRINTF1(_L("getpwuid_r_neg():"));
   182    		err = getpwuid_r_neg();
   183    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   184    		}
   185    	else
   186    		if(TestStepName() == Kgetpwnam_r_neg)
   187 		{
   188    		INFO_PRINTF1(_L("getpwnam_r_neg():"));
   189    		err = getpwnam_r_neg();
   190    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   191    		}
   192    	else
   193    		if(TestStepName() == Kendgrent_test1)
   194 		{
   195    		INFO_PRINTF1(_L("endgrent_test1():"));
   196    		err = endgrent_test1();
   197    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   198    		}
   199    	else
   200    		if(TestStepName() == Kgetpwent_test1)
   201 		{
   202    		INFO_PRINTF1(_L("getpwent_test1():"));
   203    		err = getpwent_test1();
   204    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   205    		}
   206    	else
   207    		if(TestStepName() == Ksetpwent_test1)
   208 		{
   209    		INFO_PRINTF1(_L("setpwent_test1():"));
   210    		err = setpwent_test1();
   211    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   212    		}
   213    	else
   214    		if(TestStepName() == Kendpwent_test1)
   215 		{
   216    		INFO_PRINTF1(_L("endpwent_test1():"));
   217    		err = endpwent_test1();
   218    		SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
   219    		}
   220    	return TestStepResult(); 
   221 
   222 	}
   223  
   224 // -----------------------------------------------------------------------------
   225 // Utility functions for testing.
   226 // -----------------------------------------------------------------------------
   227 
   228 TBool CTestDbBlr::SameString(char *aString1, char *aString2)
   229 	{
   230 	TInt i;
   231 	
   232 	for ( i=0; ( (aString1[i]!=0) && (aString2[i]!=0) && (aString2[i] == aString1[i]) ); i++)	{} // Go through the strings
   233 	
   234 	if ( aString2[i] != aString1[i] )	// If the scanning ended because of a difference between the strings
   235 		{
   236 		return EFalse;
   237 		}
   238 		
   239 	else	// else
   240 		{
   241 		return ETrue;
   242 		}
   243 	
   244 	}
   245 	
   246 void CTestDbBlr::StringToDes(char *aString, TDes &aDescriptor)
   247 	{
   248 	aDescriptor.Zero();
   249 	
   250 	for ( TInt i=0; aString[i]!=0; i++ )
   251 		{
   252 		aDescriptor.Append(aString[i]);
   253 		}
   254 		
   255 	}
   256 	
   257 void CTestDbBlr::RandomizeString(char *aString, TInt aLength)
   258   {
   259   TInt16 integer;
   260   TInt i;
   261   
   262   for (i=0; i<aLength; i++)
   263     {
   264     Math::Int(integer, Math::FRand(iRandomizerSeed)*255);
   265     aString[i] = integer;
   266     }
   267 	aString[i] = 0;
   268  	}
   269 
   270 void CTestDbBlr::ReadStringParam(char* expected)
   271 	{
   272 	_LIT( KaKey, "Param%d" );
   273      TBuf<8> pNameBuf;
   274      TPtrC string;
   275      pNameBuf.Format(KaKey,++iParamCnt);
   276 	 TBool res = GetStringFromConfig(ConfigSection(), pNameBuf, string);
   277 	 if(!res)
   278 	 	{
   279 	 	_LIT(Kerr , "Unable to retrieve string parameter");
   280 	 	INFO_PRINTF1(Kerr);
   281 	  	}
   282 	TBuf8<256> bufstring;
   283 	bufstring.Copy(string);
   284 	TInt paramLength=string.Length();
   285 	char* text=(char *)(bufstring.Ptr());
   286 	*(text+paramLength)='\0';
   287 	strcpy(expected,text);
   288 	return;
   289 	}
   290 	
   291 	
   292 void CTestDbBlr::ReadIntParam(TInt &aInt)
   293 {
   294 	_LIT( Kparam, "Param%d" );
   295      TBuf<8> pNameBuf;
   296      TPtrC string;
   297      pNameBuf.Format(Kparam,++iParamCnt);
   298 	 TBool res = GetIntFromConfig(ConfigSection(), pNameBuf, aInt);
   299 	 if(!res)
   300 	 	{
   301 	 	_LIT(Kerr , "Unable to retrieve integer parameter") ;
   302 	 	INFO_PRINTF1(Kerr);
   303 	  	}
   304 	 return;
   305 }
   306 
   307 
   308 // -----------------------------------------------------------------------------
   309 // Test methods
   310 // -----------------------------------------------------------------------------
   311 //                  
   312 
   313 TInt CTestDbBlr::getgrgid_pos()
   314     {
   315     //__UHEAP_MARK;
   316   	// Create temporary variables in stack
   317   	int gid;
   318   	TInt ret=KErrGeneral;
   319   	struct group* gr;
   320   	char gr_name[KMaxParamLength];
   321   	int gr_gid;
   322   	char gr_mem[KMaxParamLength];
   323   	// Read parameters
   324   	
   325     ReadIntParam(gid);
   326  	ReadStringParam(gr_name);
   327  	ReadIntParam(gr_gid);
   328  	ReadStringParam(gr_mem);
   329     // Do some testing
   330     gr=getgrgid(gid);
   331 
   332     // Set test result
   333     if((SameString(gr->gr_name,gr_name)) && (gr->gr_gid==gr_gid) && (SameString(gr->gr_mem[0],gr_mem)))
   334     {
   335     	INFO_PRINTF1(_L("Test passed."));
   336     	ret = KErrNone;	
   337     }
   338     else
   339     {
   340     	ERR_PRINTF1(_L("Test Failed."));
   341     	ret = KErrGeneral;
   342     }
   343     	
   344     free(gr->gr_mem);
   345     free(gr);
   346    // __UHEAP_MARKEND;
   347     return ret;
   348     }  
   349     
   350     
   351 TInt CTestDbBlr::getgrgid_neg()
   352     {
   353     __UHEAP_MARK;
   354   	// Create temporary variables in stack
   355   	int gid;
   356   	TInt ret=KErrGeneral;
   357   	struct group* gr;
   358   	// Read parameters
   359   	
   360     ReadIntParam(gid);
   361     // Do some testing
   362     gr=getgrgid(gid);
   363 
   364     // Set test result
   365 	if(gr==NULL)       	
   366     	{
   367     	INFO_PRINTF1(_L("Test passed."));
   368     	ret = KErrNone;	
   369     	}
   370     else
   371     	{
   372     	ERR_PRINTF1(_L("Test Failed."));
   373     	ret = KErrGeneral;
   374     	}
   375     __UHEAP_MARKEND;
   376     return ret;
   377     }    
   378  
   379  
   380  
   381 TInt CTestDbBlr::getgrnam_pos()
   382     {
   383     __UHEAP_MARK;
   384   	// Create temporary variables in stack
   385   	TInt ret=KErrGeneral;
   386   	struct group* gr;
   387   	char gr_name[KMaxParamLength];
   388   	int gr_gid;
   389   	char gr_mem[KMaxParamLength];
   390   	// Read parameters
   391   	
   392    	ReadStringParam(gr_name);
   393  	ReadIntParam(gr_gid);
   394  	ReadStringParam(gr_mem);
   395     // Do some testing
   396     gr=getgrnam(gr_name);
   397 
   398     // Set test result
   399     if((gr->gr_gid==gr_gid) && (SameString(gr->gr_mem[0],gr_mem)))
   400     	{
   401     	INFO_PRINTF1(_L("Test passed."));
   402     	ret = KErrNone;	
   403     	}
   404     else
   405     	{
   406     	ERR_PRINTF1(_L("Test Failed."));
   407     	ret = KErrGeneral;
   408     	}
   409     free(gr->gr_mem);
   410     free(gr);
   411     __UHEAP_MARKEND;
   412     return ret;
   413     }  
   414     
   415     
   416 TInt CTestDbBlr::getgrnam_neg()
   417     {
   418     __UHEAP_MARK;
   419   	// Create temporary variables in stack
   420   	TInt ret=KErrGeneral;
   421   	char gr_name[KMaxParamLength];
   422   	struct group* gr;
   423   	// Read parameters
   424   	
   425     ReadStringParam(gr_name);
   426     // Do some testing
   427     gr=getgrnam(gr_name);
   428 
   429     // Set test result
   430 	if(gr==NULL)       	
   431      	{
   432     	INFO_PRINTF1(_L("Test passed."));
   433     	ret = KErrNone;	
   434     	}
   435     else
   436     	{
   437     	ERR_PRINTF1(_L("Test Failed."));
   438     	ret = KErrGeneral;
   439     	}
   440     
   441     __UHEAP_MARKEND;
   442     return ret;
   443     }  
   444 
   445 
   446 TInt CTestDbBlr::getgrgid_r_pos()
   447     {
   448     __UHEAP_MARK;
   449   	// Create temporary variables in stack
   450   	TInt ret=KErrGeneral;
   451   	int gid;
   452   	struct group* gr=(struct group*)malloc(sizeof(struct group));
   453   	gr->gr_mem=(char**)malloc(sizeof(char**));
   454   	char* buffer=(char*)malloc(sizeof(struct group));
   455   	size_t bufsize=sizeof(buffer);
   456   	struct group* tempresult;
   457   	
   458   	char gr_name[KMaxParamLength];
   459   	int gr_gid;
   460   	char gr_mem[KMaxParamLength];
   461   	// Read parameters
   462   	
   463     ReadIntParam(gid);
   464  	ReadStringParam(gr_name);
   465  	ReadIntParam(gr_gid);
   466  	ReadStringParam(gr_mem);
   467  	
   468     // Do some testing
   469     int retval=getgrgid_r(gid,gr,buffer,bufsize,&tempresult);
   470 
   471     // Set test result
   472     if((SameString(gr->gr_name,gr_name)) && (gr->gr_gid==gr_gid) && (SameString(gr->gr_mem[0],gr_mem)))
   473     	{
   474     	INFO_PRINTF1(_L("Test passed."));
   475     	ret = KErrNone;	
   476     	}
   477     else
   478     	{
   479     	ERR_PRINTF1(_L("Test Failed."));
   480     	ret = KErrGeneral;
   481     	}
   482     free(buffer);
   483     free(gr->gr_mem);
   484     free(gr);
   485     __UHEAP_MARKEND;
   486     return ret;
   487     }
   488 
   489 TInt CTestDbBlr::getgrgid_r_neg()
   490     {
   491     __UHEAP_MARK;
   492   	// Create temporary variables in stack
   493   	TInt ret=KErrGeneral;
   494   	int gid;
   495   	struct group* gr=(struct group*)malloc(sizeof(struct group));
   496   	gr->gr_mem=(char**)malloc(sizeof(char**));
   497   	char* buffer=(char*)malloc(sizeof(struct group));
   498   	size_t bufsize=sizeof(buffer);
   499   	struct group* tempresult;
   500   	
   501   	// Read parameters
   502     ReadIntParam(gid);
   503  	
   504     // Do some testing
   505     int retval=getgrgid_r(gid,gr,buffer,bufsize,&tempresult);
   506 
   507     // Set test result
   508     if(tempresult==NULL)
   509     		{
   510     	INFO_PRINTF1(_L("Test passed."));
   511     	ret = KErrNone;	
   512     	}
   513     else
   514     	{
   515     	ERR_PRINTF1(_L("Test Failed."));
   516     	ret = KErrGeneral;
   517     	}
   518     
   519     free(buffer);
   520     free(gr->gr_mem);
   521     free(gr);
   522     __UHEAP_MARKEND;
   523     return ret;
   524     }
   525 
   526 
   527 TInt CTestDbBlr::getgrnam_r_pos()
   528     {
   529     __UHEAP_MARK;
   530   	// Create temporary variables in stack
   531   	TInt ret=KErrGeneral;
   532   	struct group* gr=(struct group*)malloc(sizeof(struct group));
   533   	gr->gr_mem=(char**)malloc(sizeof(char**));
   534   	char* buffer=(char*)malloc(sizeof(struct group));
   535   	size_t bufsize=sizeof(buffer);
   536   	struct group* tempresult;
   537   	
   538   	char gr_name[KMaxParamLength];
   539   	int gr_gid;
   540   	char gr_mem[KMaxParamLength];
   541   	// Read parameters
   542   	
   543     ReadStringParam(gr_name);
   544  	ReadIntParam(gr_gid);
   545  	ReadStringParam(gr_mem);
   546  	
   547     // Do some testing
   548     int retval=getgrnam_r(gr_name,gr,buffer,bufsize,&tempresult);
   549 
   550     // Set test result
   551     if(gr->gr_gid==gr_gid && (SameString(gr->gr_mem[0],gr_mem)))
   552    		{
   553     	INFO_PRINTF1(_L("Test passed."));
   554     	ret = KErrNone;	
   555     	}
   556     else
   557     	{
   558     	ERR_PRINTF1(_L("Test Failed."));
   559     	ret = KErrGeneral;
   560     	}
   561     
   562     free(buffer);
   563     free(gr->gr_mem);
   564     free(gr);
   565     __UHEAP_MARKEND;
   566     return ret;
   567     
   568     }
   569 
   570 TInt CTestDbBlr::getgrnam_r_neg()
   571     {
   572     __UHEAP_MARK;
   573   	// Create temporary variables in stack
   574   	TInt ret=KErrGeneral;
   575   	char gr_name[KMaxParamLength];
   576   	struct group* gr=(struct group*)malloc(sizeof(struct group));
   577   	gr->gr_mem=(char**)malloc(sizeof(char**));
   578   	char* buffer=(char*)malloc(sizeof(struct group));
   579   	size_t bufsize=sizeof(buffer);
   580   	struct group* tempresult;
   581   	
   582   	// Read parameters
   583     ReadStringParam(gr_name);
   584  	
   585     // Do some testing
   586     int retval=getgrnam_r(gr_name,gr,buffer,bufsize,&tempresult);
   587 
   588     // Set test result
   589     if(tempresult==NULL)
   590     	{
   591     	INFO_PRINTF1(_L("Test passed."));
   592     	ret = KErrNone;	
   593     	}
   594     else
   595     	{
   596     	ERR_PRINTF1(_L("Test Failed."));
   597     	ret = KErrGeneral;
   598     	}
   599     free(buffer);
   600     free(gr->gr_mem);
   601     free(gr);
   602     __UHEAP_MARKEND;
   603     return ret;
   604     }
   605 
   606 
   607 
   608 TInt CTestDbBlr::getgrent_combined()
   609     {
   610     pthread_self();
   611     __UHEAP_MARK;
   612     
   613   	// Create temporary variables in stack
   614 	TInt ret=KErrGeneral;
   615 	int flag=0;
   616   	struct group* gr;
   617   	// Read parameters
   618     
   619     // Do some testing
   620     gr=getgrent();
   621     if(gr->gr_gid==0)
   622     	flag++;
   623     free(gr->gr_mem);
   624     free(gr);
   625     gr=getgrent();
   626     if(gr==NULL)
   627     	flag++;
   628     gr=getgrent();
   629     if(gr==NULL)
   630     	flag++;
   631     
   632     // Set test result
   633     if(flag==3)
   634     	{
   635     	INFO_PRINTF1(_L("Test passed."));
   636     	ret = KErrNone;	
   637     	}
   638     else
   639     	{
   640     	ERR_PRINTF1(_L("Test Failed."));
   641     	ret = KErrGeneral;
   642     	}
   643     __UHEAP_MARKEND;
   644     return ret;
   645     }
   646 
   647 TInt CTestDbBlr::setgrent_combined1()
   648     {
   649     pthread_self();
   650     __UHEAP_MARK;
   651   	// Create temporary variables in stack
   652   	TInt ret=KErrGeneral;
   653 	int flag=0;
   654   	struct group* gr;
   655   	// Read parameters
   656     
   657     // Do some testing
   658     gr=getgrent();
   659     if(gr->gr_gid==0)
   660     	flag++;
   661     free(gr->gr_mem);
   662     free(gr);
   663     setgrent();
   664     gr=getgrent();
   665     if(gr->gr_gid==0)
   666     	flag++;
   667     free(gr->gr_mem);
   668     free(gr);
   669     
   670     // Set test result
   671     if(flag==2)
   672     {
   673     	INFO_PRINTF1(_L("Test passed."));
   674     	ret = KErrNone;	
   675     	}
   676     else
   677     	{
   678     	ERR_PRINTF1(_L("Test Failed."));
   679     	ret = KErrGeneral;
   680     	}
   681     __UHEAP_MARKEND;
   682     
   683     return ret;
   684     }
   685 
   686 TInt CTestDbBlr::endgrent_test1()
   687     {
   688   	// Create temporary variables in stack
   689 
   690   	struct group* gr=NULL;
   691   	TInt ret=KErrGeneral;
   692   	// Read parameters
   693     
   694     // Do some testing
   695     gr=getgrent();
   696     if(gr)
   697 		{
   698 		gr=NULL;
   699 		gr=getgrent();
   700 		if(gr)
   701 			{
   702 			gr=NULL;
   703 			gr=getgrent();
   704 			if(gr)
   705 				{
   706 				endgrent();
   707 				setgrent();
   708 				gr=NULL;
   709 				gr=getgrent();
   710 				if(gr)
   711 					{
   712 					setgrent();
   713 					endgrent();
   714 					gr=getgrent();
   715 					if(gr)  ret = KErrNone;
   716 					}
   717 				}
   718 			}
   719 		}
   720 		
   721     // Set test result
   722     if(ret==KErrNone)
   723 	    {
   724 	    INFO_PRINTF1(_L("Test passed."));	
   725 	    }
   726     else
   727 	    {
   728 	    ERR_PRINTF1(_L("Test failed."));	
   729 	    }
   730     return ret;
   731     }
   732 
   733 TInt CTestDbBlr::getpwuid_pos()
   734     {
   735     __UHEAP_MARK;
   736   	// Create temporary variables in stack
   737   	TInt ret=KErrGeneral;
   738   	int uid;
   739   	struct passwd* pwd;
   740   	char pw_nam[KMaxParamLength];
   741   	char pw_dir[KMaxParamLength];
   742   	// Read parameters
   743   	
   744     ReadIntParam(uid);
   745     ReadStringParam(pw_nam);
   746     ReadStringParam(pw_dir);
   747  	// Do some testing
   748     pwd=getpwuid(uid);
   749 
   750     // Set test result
   751     if(SameString(pwd->pw_name,pw_nam))
   752     	{
   753     	INFO_PRINTF1(_L("Test passed."));
   754     	ret = KErrNone;	
   755     	}
   756     else
   757     	{
   758     	ERR_PRINTF1(_L("Test Failed."));
   759     	ret = KErrGeneral;
   760     	}
   761     free(pwd->pw_dir);
   762     free(pwd);
   763     __UHEAP_MARKEND;
   764     return ret;
   765     }
   766 
   767 TInt CTestDbBlr::getpwuid_neg()
   768     {
   769     __UHEAP_MARK;
   770   	// Create temporary variables in stack
   771   	TInt ret=KErrGeneral;
   772   	struct passwd* pwd;
   773   	int uid;
   774   	// Read parameters
   775   	
   776     ReadIntParam(uid);
   777     // Do some testing
   778     pwd=getpwuid(uid);
   779 
   780     // Set test result
   781 	if(pwd==NULL)       	
   782        {
   783     	INFO_PRINTF1(_L("Test passed."));
   784     	ret = KErrNone;	
   785     	}
   786     else
   787     	{
   788     	ERR_PRINTF1(_L("Test Failed."));
   789     	ret = KErrGeneral;
   790     	}
   791     __UHEAP_MARKEND;
   792     return ret;
   793     }
   794 
   795 
   796 
   797 TInt CTestDbBlr::getpwnam_pos()
   798     {
   799     __UHEAP_MARK;
   800   	// Create temporary variables in stack
   801   	TInt ret=KErrGeneral;
   802   	int uid;
   803   	struct passwd* pwd;
   804   	char pw_nam[KMaxParamLength];
   805   	char pw_dir[KMaxParamLength];
   806   	// Read parameters
   807   	
   808     ReadStringParam(pw_nam);
   809     ReadIntParam(uid);
   810     ReadStringParam(pw_dir);
   811  	// Do some testing
   812     pwd=getpwnam(pw_nam);
   813 
   814     // Set test result
   815     if(pwd->pw_uid==uid)
   816     	{
   817     	INFO_PRINTF1(_L("Test passed."));
   818     	ret = KErrNone;	
   819     	}
   820     else
   821     	{
   822     	ERR_PRINTF1(_L("Test Failed."));
   823     	ret = KErrGeneral;
   824     	}
   825     free(pwd->pw_dir);
   826     free(pwd);
   827     __UHEAP_MARKEND;
   828     return ret;
   829     } 
   830     
   831 TInt CTestDbBlr::getpwnam_neg()
   832     {
   833     __UHEAP_MARK;
   834   	// Create temporary variables in stack
   835   	TInt ret=KErrGeneral;
   836   	struct passwd* pwd;
   837   	char pw_nam[KMaxParamLength];
   838   	// Read parameters
   839   	
   840     ReadStringParam(pw_nam);
   841     // Do some testing
   842     pwd=getpwnam(pw_nam);
   843 
   844     // Set test result
   845 	if(pwd==NULL)       	
   846        {
   847     	INFO_PRINTF1(_L("Test passed."));
   848     	ret = KErrNone;	
   849     	}
   850     else
   851     	{
   852     	ERR_PRINTF1(_L("Test Failed."));
   853     	ret = KErrGeneral;
   854     	}
   855     __UHEAP_MARKEND;
   856     return ret;
   857     }
   858 
   859 TInt CTestDbBlr::getpwuid_r_pos()
   860     {
   861     __UHEAP_MARK;
   862   	// Create temporary variables in stack
   863   	TInt ret=KErrGeneral;
   864   	int uid;
   865   	char pw_nam[KMaxParamLength];
   866   	char pw_dir[KMaxParamLength];
   867   	struct passwd* pwd=(struct passwd*)malloc(sizeof(struct passwd));
   868   	char* buffer=(char*)malloc(sizeof(struct passwd));
   869 	struct passwd* tempresult;
   870 	size_t bufsize=sizeof(buffer);
   871   	// Read parameters
   872   	
   873     ReadIntParam(uid);
   874     ReadStringParam(pw_nam);
   875     ReadStringParam(pw_dir);
   876 
   877  	// Do some testing
   878 	setpwent();
   879 	int retval=getpwuid_r(uid, pwd, buffer, bufsize, &tempresult);
   880 	endpwent();
   881 
   882     // Set test result
   883     if((SameString(pwd->pw_name,pw_nam)))
   884     	{
   885     	INFO_PRINTF1(_L("Test passed."));
   886     	ret = KErrNone;	
   887     	}
   888     else
   889     	{
   890     	ERR_PRINTF1(_L("Test Failed."));
   891     	ret = KErrGeneral;
   892     	}
   893     free(buffer);
   894     free(pwd->pw_dir);
   895     free(pwd);
   896     __UHEAP_MARKEND;
   897     return ret;
   898     }
   899 
   900 TInt CTestDbBlr::getpwuid_r_neg()
   901     {
   902     __UHEAP_MARK;
   903   	// Create temporary variables in stack
   904   	TInt ret=KErrGeneral;
   905   	int uid;
   906   	struct passwd* pwd=(struct passwd*)malloc(sizeof(struct passwd));
   907   	char* buffer=(char*)malloc(sizeof(struct passwd));
   908 	struct passwd* tempresult;
   909 	size_t bufsize=sizeof(buffer);
   910   	// Read parameters
   911   	
   912     ReadIntParam(uid);
   913 
   914  	// Do some testing
   915 	int retval=getpwuid_r(uid, pwd, buffer, bufsize, &tempresult);
   916 
   917     // Set test result
   918     if(tempresult==NULL)
   919     	{
   920     	INFO_PRINTF1(_L("Test passed."));
   921     	ret = KErrNone;	
   922     	}
   923     else
   924     	{
   925     	ERR_PRINTF1(_L("Test Failed."));
   926     	ret = KErrGeneral;
   927     	}
   928     free(buffer);
   929     free(pwd);
   930     __UHEAP_MARKEND;
   931     return ret;
   932     }
   933 
   934 TInt CTestDbBlr::getpwnam_r_pos()
   935     {
   936     __UHEAP_MARK;
   937   	// Create temporary variables in stack
   938   	TInt ret=KErrGeneral;
   939   	int uid;
   940   	char pw_nam[KMaxParamLength];
   941   	char pw_dir[KMaxParamLength];
   942   	struct passwd* pwd=(struct passwd*)malloc(sizeof(struct passwd));
   943   	char* buffer=(char*)malloc(sizeof(struct passwd));
   944 	struct passwd* tempresult;
   945 	size_t bufsize=sizeof(buffer);
   946   	// Read parameters
   947   	
   948     ReadStringParam(pw_nam);
   949     ReadIntParam(uid);
   950     ReadStringParam(pw_dir);
   951 
   952  	// Do some testing
   953 	int retval=getpwnam_r(pw_nam, pwd, buffer, bufsize, &tempresult);
   954 
   955     // Set test result
   956     if(pwd->pw_uid==uid)
   957     {
   958     	INFO_PRINTF1(_L("Test passed."));
   959     	ret = KErrNone;	
   960     	}
   961     else
   962     	{
   963     	ERR_PRINTF1(_L("Test Failed."));
   964     	ret = KErrGeneral;
   965     	}
   966     free(buffer);
   967     free(pwd->pw_dir);
   968     free(pwd);
   969     __UHEAP_MARKEND;
   970     return ret;
   971     }
   972 
   973 TInt CTestDbBlr::getpwnam_r_neg()
   974     {
   975     __UHEAP_MARK;
   976   	// Create temporary variables in stack
   977   	TInt ret=KErrGeneral;
   978   	char pw_nam[KMaxParamLength];
   979   	struct passwd* pwd=(struct passwd*)malloc(sizeof(struct passwd));
   980   	char* buffer=(char*)malloc(sizeof(struct passwd));
   981 	struct passwd* tempresult;
   982 	size_t bufsize=sizeof(buffer);
   983   	// Read parameters
   984   	
   985     ReadStringParam(pw_nam);
   986 
   987  	// Do some testing
   988 	int retval=getpwnam_r(pw_nam, pwd, buffer, bufsize, &tempresult);
   989 
   990     // Set test result
   991     if(tempresult==NULL)
   992     	{
   993     	INFO_PRINTF1(_L("Test passed."));
   994     	ret = KErrNone;	
   995     	}
   996     else
   997     	{
   998     	ERR_PRINTF1(_L("Test Failed."));
   999     	ret = KErrGeneral;
  1000     	}
  1001     free(buffer);
  1002     free(pwd);
  1003     __UHEAP_MARKEND;
  1004     return ret;
  1005     }
  1006 
  1007     
  1008 TInt CTestDbBlr::getpwent_test1()
  1009     {
  1010   	// Create temporary variables in stack
  1011   	TInt ret=KErrGeneral;
  1012 
  1013   	struct passwd* pwd=NULL;
  1014   	// Read parameters
  1015     
  1016     // Do some testing
  1017     pwd=getpwent();
  1018     if(!pwd)
  1019     	{
  1020     	ERR_PRINTF1(_L("Test failed."));
  1021     	}
  1022     else
  1023     	{
  1024     	pwd=getpwent();
  1025 	    if(!pwd)
  1026 	    	{
  1027 	    	ERR_PRINTF1(_L("Test failed."));
  1028 	    	}
  1029 	    else
  1030 	    	{
  1031 		    pwd=getpwent();
  1032 		    if(!pwd)
  1033 		    	{
  1034 		    	ERR_PRINTF1(_L("Test failed."));
  1035 		    	}
  1036 		    else
  1037 		    	{
  1038 		    	// Set test result
  1039   				INFO_PRINTF1(_L("Test passed."));
  1040   				ret = KErrNone;
  1041 		    	}
  1042 	    	}
  1043     	}
  1044     return ret;
  1045     }
  1046 
  1047 
  1048 TInt CTestDbBlr::setpwent_test1()
  1049     {
  1050   	// Create temporary variables in stack
  1051 	struct passwd* pwd=NULL;
  1052   	TInt ret=KErrGeneral;
  1053   	// Read parameters
  1054     
  1055     // Do some testing
  1056     pwd=getpwent();
  1057     if(pwd)
  1058 	    {
  1059 	    pwd = NULL;
  1060 	    pwd=getpwent();
  1061 	    if(pwd)
  1062 		    {
  1063 		    pwd = NULL;
  1064 		    pwd=getpwent();
  1065 		    if(pwd)
  1066 			    {
  1067 			    setpwent();
  1068 			    setpwent();
  1069 			    pwd = NULL;
  1070 			    pwd=getpwent();
  1071 			    if(pwd)
  1072 				    {
  1073 				    setpwent();
  1074 				    pwd = NULL;
  1075 				    pwd=getpwent();
  1076 				    if(pwd)ret= KErrNone;
  1077 					}
  1078 			    }
  1079 		    }
  1080 	    }
  1081 	// Set test result
  1082     if(ret==KErrNone)	
  1083 	    {
  1084 	    INFO_PRINTF1(_L("Test passed."));	
  1085 	    }
  1086     else
  1087 	    {
  1088 	    ERR_PRINTF1(_L("Test failed."));		
  1089 	    }
  1090     return ret;
  1091     }
  1092     
  1093 TInt CTestDbBlr::endpwent_test1()
  1094     {
  1095   	// Create temporary variables in stack
  1096 
  1097   	struct passwd* pwd=NULL;
  1098   	TInt ret=KErrGeneral;
  1099   	// Read parameters
  1100     
  1101     // Do some testing
  1102     pwd=getpwent();
  1103     if(pwd)
  1104 	    {
  1105 	    pwd = NULL;
  1106 	    pwd=getpwent();
  1107 	    if(pwd)
  1108 		    {
  1109 		    pwd = NULL;
  1110 		    pwd=getpwent();
  1111 		    if(pwd)
  1112 		    	{
  1113 			    endpwent();
  1114 			    setpwent();
  1115 			    pwd=NULL;
  1116 			    pwd=getpwent();
  1117 			    if(pwd)
  1118 				    {
  1119 				    setpwent();
  1120 				    endpwent();
  1121 				    pwd=getpwent();
  1122 				    if(pwd)
  1123 					    {
  1124 						ret = KErrNone;					    	
  1125 					    }
  1126 				    }
  1127 			    }
  1128 		    }
  1129 	    }
  1130 	// Set test result
  1131 	if(ret == KErrNone)
  1132 		{
  1133 		INFO_PRINTF1(_L("Test passed."));
  1134 		}
  1135 	else
  1136 		{
  1137 		ERR_PRINTF1(_L("Test failed."));
  1138 		}
  1139     return ret;
  1140 	}
  1141