First public contribution.
2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
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".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
22 const TInt KMaxParamLength=100;
24 //----------------------Local declaration of thread funcs-------------------
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 );
35 CTestDbBlr::~CTestDbBlr()
39 CTestDbBlr::CTestDbBlr(const TDesC& aStepName)
41 // MANDATORY Call to base class method to set up the human readable name for logging.
42 SetTestStepName(aStepName);
45 TVerdict CTestDbBlr::doTestStepPreambleL()
49 iRandomizerSeed = 1234567890;
50 SetTestStepResult(EPass);
51 return TestStepResult();
56 TVerdict CTestDbBlr::doTestStepPostambleL()
59 return TestStepResult();
63 TVerdict CTestDbBlr::doTestStepL()
67 if(TestStepName() == Kgetgrgid_pos)
69 INFO_PRINTF1(_L("getgrgid_pos():"));
71 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
74 if(TestStepName() == Kgetgrgid_neg)
76 INFO_PRINTF1(_L("getgrgid_neg():"));
78 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
81 if(TestStepName() == Kgetgrnam_pos)
83 INFO_PRINTF1(_L("getgrnam_pos():"));
85 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
88 if(TestStepName() == Kgetgrnam_neg)
90 INFO_PRINTF1(_L("getgrnam_neg():"));
92 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
95 if(TestStepName() == Kgetgrgid_r_pos)
97 INFO_PRINTF1(_L("getgrgid_r_pos():"));
98 err = getgrgid_r_pos();
99 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
102 if(TestStepName() == Kgetgrgid_r_neg)
104 INFO_PRINTF1(_L("getgrgid_r_neg():"));
105 err = getgrgid_r_neg();
106 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
109 if(TestStepName() == Kgetgrnam_r_pos)
111 INFO_PRINTF1(_L("getgrnam_r_pos():"));
112 err = getgrnam_r_pos();
113 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
116 if(TestStepName() == Kgetgrnam_r_neg)
118 INFO_PRINTF1(_L("getgrnam_r_neg():"));
119 err = getgrnam_r_neg();
120 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
123 if(TestStepName() == Kgetgrent_combined)
125 INFO_PRINTF1(_L("getgrent_combined():"));
126 err = getgrent_combined();
127 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
130 if(TestStepName() == Ksetgrent_combined1)
132 INFO_PRINTF1(_L("setgrent_combined1():"));
133 err = setgrent_combined1();
134 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
137 if(TestStepName() == Kgetpwuid_pos)
139 INFO_PRINTF1(_L("getpwuid_pos():"));
140 err = getpwuid_pos();
141 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
144 if(TestStepName() == Kgetpwnam_pos)
146 INFO_PRINTF1(_L("getpwnam_pos():"));
147 err = getpwnam_pos();
148 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
151 if(TestStepName() == Kgetpwuid_neg)
153 INFO_PRINTF1(_L("getpwuid_neg():"));
154 err = getpwuid_neg();
155 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
158 if(TestStepName() == Kgetpwnam_neg)
160 INFO_PRINTF1(_L("getpwnam_neg():"));
161 err = getpwnam_neg();
162 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
165 if(TestStepName() == Kgetpwuid_r_pos)
167 INFO_PRINTF1(_L("getpwuid_r_pos():"));
168 err = getpwuid_r_pos();
169 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
172 if(TestStepName() == Kgetpwnam_r_pos)
174 INFO_PRINTF1(_L("getpwnam_r_pos():"));
175 err = getpwnam_r_pos();
176 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
179 if(TestStepName() == Kgetpwuid_r_neg)
181 INFO_PRINTF1(_L("getpwuid_r_neg():"));
182 err = getpwuid_r_neg();
183 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
186 if(TestStepName() == Kgetpwnam_r_neg)
188 INFO_PRINTF1(_L("getpwnam_r_neg():"));
189 err = getpwnam_r_neg();
190 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
193 if(TestStepName() == Kendgrent_test1)
195 INFO_PRINTF1(_L("endgrent_test1():"));
196 err = endgrent_test1();
197 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
200 if(TestStepName() == Kgetpwent_test1)
202 INFO_PRINTF1(_L("getpwent_test1():"));
203 err = getpwent_test1();
204 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
207 if(TestStepName() == Ksetpwent_test1)
209 INFO_PRINTF1(_L("setpwent_test1():"));
210 err = setpwent_test1();
211 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
214 if(TestStepName() == Kendpwent_test1)
216 INFO_PRINTF1(_L("endpwent_test1():"));
217 err = endpwent_test1();
218 SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass);
220 return TestStepResult();
224 // -----------------------------------------------------------------------------
225 // Utility functions for testing.
226 // -----------------------------------------------------------------------------
228 TBool CTestDbBlr::SameString(char *aString1, char *aString2)
232 for ( i=0; ( (aString1[i]!=0) && (aString2[i]!=0) && (aString2[i] == aString1[i]) ); i++) {} // Go through the strings
234 if ( aString2[i] != aString1[i] ) // If the scanning ended because of a difference between the strings
246 void CTestDbBlr::StringToDes(char *aString, TDes &aDescriptor)
250 for ( TInt i=0; aString[i]!=0; i++ )
252 aDescriptor.Append(aString[i]);
257 void CTestDbBlr::RandomizeString(char *aString, TInt aLength)
262 for (i=0; i<aLength; i++)
264 Math::Int(integer, Math::FRand(iRandomizerSeed)*255);
265 aString[i] = integer;
270 void CTestDbBlr::ReadStringParam(char* expected)
272 _LIT( KaKey, "Param%d" );
275 pNameBuf.Format(KaKey,++iParamCnt);
276 TBool res = GetStringFromConfig(ConfigSection(), pNameBuf, string);
279 _LIT(Kerr , "Unable to retrieve string parameter");
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);
292 void CTestDbBlr::ReadIntParam(TInt &aInt)
294 _LIT( Kparam, "Param%d" );
297 pNameBuf.Format(Kparam,++iParamCnt);
298 TBool res = GetIntFromConfig(ConfigSection(), pNameBuf, aInt);
301 _LIT(Kerr , "Unable to retrieve integer parameter") ;
308 // -----------------------------------------------------------------------------
310 // -----------------------------------------------------------------------------
313 TInt CTestDbBlr::getgrgid_pos()
316 // Create temporary variables in stack
318 TInt ret=KErrGeneral;
320 char gr_name[KMaxParamLength];
322 char gr_mem[KMaxParamLength];
326 ReadStringParam(gr_name);
327 ReadIntParam(gr_gid);
328 ReadStringParam(gr_mem);
333 if((SameString(gr->gr_name,gr_name)) && (gr->gr_gid==gr_gid) && (SameString(gr->gr_mem[0],gr_mem)))
335 INFO_PRINTF1(_L("Test passed."));
340 ERR_PRINTF1(_L("Test Failed."));
351 TInt CTestDbBlr::getgrgid_neg()
354 // Create temporary variables in stack
356 TInt ret=KErrGeneral;
367 INFO_PRINTF1(_L("Test passed."));
372 ERR_PRINTF1(_L("Test Failed."));
381 TInt CTestDbBlr::getgrnam_pos()
384 // Create temporary variables in stack
385 TInt ret=KErrGeneral;
387 char gr_name[KMaxParamLength];
389 char gr_mem[KMaxParamLength];
392 ReadStringParam(gr_name);
393 ReadIntParam(gr_gid);
394 ReadStringParam(gr_mem);
396 gr=getgrnam(gr_name);
399 if((gr->gr_gid==gr_gid) && (SameString(gr->gr_mem[0],gr_mem)))
401 INFO_PRINTF1(_L("Test passed."));
406 ERR_PRINTF1(_L("Test Failed."));
416 TInt CTestDbBlr::getgrnam_neg()
419 // Create temporary variables in stack
420 TInt ret=KErrGeneral;
421 char gr_name[KMaxParamLength];
425 ReadStringParam(gr_name);
427 gr=getgrnam(gr_name);
432 INFO_PRINTF1(_L("Test passed."));
437 ERR_PRINTF1(_L("Test Failed."));
446 TInt CTestDbBlr::getgrgid_r_pos()
449 // Create temporary variables in stack
450 TInt ret=KErrGeneral;
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;
458 char gr_name[KMaxParamLength];
460 char gr_mem[KMaxParamLength];
464 ReadStringParam(gr_name);
465 ReadIntParam(gr_gid);
466 ReadStringParam(gr_mem);
469 int retval=getgrgid_r(gid,gr,buffer,bufsize,&tempresult);
472 if((SameString(gr->gr_name,gr_name)) && (gr->gr_gid==gr_gid) && (SameString(gr->gr_mem[0],gr_mem)))
474 INFO_PRINTF1(_L("Test passed."));
479 ERR_PRINTF1(_L("Test Failed."));
489 TInt CTestDbBlr::getgrgid_r_neg()
492 // Create temporary variables in stack
493 TInt ret=KErrGeneral;
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;
505 int retval=getgrgid_r(gid,gr,buffer,bufsize,&tempresult);
510 INFO_PRINTF1(_L("Test passed."));
515 ERR_PRINTF1(_L("Test Failed."));
527 TInt CTestDbBlr::getgrnam_r_pos()
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;
538 char gr_name[KMaxParamLength];
540 char gr_mem[KMaxParamLength];
543 ReadStringParam(gr_name);
544 ReadIntParam(gr_gid);
545 ReadStringParam(gr_mem);
548 int retval=getgrnam_r(gr_name,gr,buffer,bufsize,&tempresult);
551 if(gr->gr_gid==gr_gid && (SameString(gr->gr_mem[0],gr_mem)))
553 INFO_PRINTF1(_L("Test passed."));
558 ERR_PRINTF1(_L("Test Failed."));
570 TInt CTestDbBlr::getgrnam_r_neg()
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;
583 ReadStringParam(gr_name);
586 int retval=getgrnam_r(gr_name,gr,buffer,bufsize,&tempresult);
591 INFO_PRINTF1(_L("Test passed."));
596 ERR_PRINTF1(_L("Test Failed."));
608 TInt CTestDbBlr::getgrent_combined()
613 // Create temporary variables in stack
614 TInt ret=KErrGeneral;
635 INFO_PRINTF1(_L("Test passed."));
640 ERR_PRINTF1(_L("Test Failed."));
647 TInt CTestDbBlr::setgrent_combined1()
651 // Create temporary variables in stack
652 TInt ret=KErrGeneral;
673 INFO_PRINTF1(_L("Test passed."));
678 ERR_PRINTF1(_L("Test Failed."));
686 TInt CTestDbBlr::endgrent_test1()
688 // Create temporary variables in stack
690 struct group* gr=NULL;
691 TInt ret=KErrGeneral;
715 if(gr) ret = KErrNone;
724 INFO_PRINTF1(_L("Test passed."));
728 ERR_PRINTF1(_L("Test failed."));
733 TInt CTestDbBlr::getpwuid_pos()
736 // Create temporary variables in stack
737 TInt ret=KErrGeneral;
740 char pw_nam[KMaxParamLength];
741 char pw_dir[KMaxParamLength];
745 ReadStringParam(pw_nam);
746 ReadStringParam(pw_dir);
751 if(SameString(pwd->pw_name,pw_nam))
753 INFO_PRINTF1(_L("Test passed."));
758 ERR_PRINTF1(_L("Test Failed."));
767 TInt CTestDbBlr::getpwuid_neg()
770 // Create temporary variables in stack
771 TInt ret=KErrGeneral;
783 INFO_PRINTF1(_L("Test passed."));
788 ERR_PRINTF1(_L("Test Failed."));
797 TInt CTestDbBlr::getpwnam_pos()
800 // Create temporary variables in stack
801 TInt ret=KErrGeneral;
804 char pw_nam[KMaxParamLength];
805 char pw_dir[KMaxParamLength];
808 ReadStringParam(pw_nam);
810 ReadStringParam(pw_dir);
812 pwd=getpwnam(pw_nam);
817 INFO_PRINTF1(_L("Test passed."));
822 ERR_PRINTF1(_L("Test Failed."));
831 TInt CTestDbBlr::getpwnam_neg()
834 // Create temporary variables in stack
835 TInt ret=KErrGeneral;
837 char pw_nam[KMaxParamLength];
840 ReadStringParam(pw_nam);
842 pwd=getpwnam(pw_nam);
847 INFO_PRINTF1(_L("Test passed."));
852 ERR_PRINTF1(_L("Test Failed."));
859 TInt CTestDbBlr::getpwuid_r_pos()
862 // Create temporary variables in stack
863 TInt ret=KErrGeneral;
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);
874 ReadStringParam(pw_nam);
875 ReadStringParam(pw_dir);
879 int retval=getpwuid_r(uid, pwd, buffer, bufsize, &tempresult);
883 if((SameString(pwd->pw_name,pw_nam)))
885 INFO_PRINTF1(_L("Test passed."));
890 ERR_PRINTF1(_L("Test Failed."));
900 TInt CTestDbBlr::getpwuid_r_neg()
903 // Create temporary variables in stack
904 TInt ret=KErrGeneral;
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);
915 int retval=getpwuid_r(uid, pwd, buffer, bufsize, &tempresult);
920 INFO_PRINTF1(_L("Test passed."));
925 ERR_PRINTF1(_L("Test Failed."));
934 TInt CTestDbBlr::getpwnam_r_pos()
937 // Create temporary variables in stack
938 TInt ret=KErrGeneral;
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);
948 ReadStringParam(pw_nam);
950 ReadStringParam(pw_dir);
953 int retval=getpwnam_r(pw_nam, pwd, buffer, bufsize, &tempresult);
958 INFO_PRINTF1(_L("Test passed."));
963 ERR_PRINTF1(_L("Test Failed."));
973 TInt CTestDbBlr::getpwnam_r_neg()
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);
985 ReadStringParam(pw_nam);
988 int retval=getpwnam_r(pw_nam, pwd, buffer, bufsize, &tempresult);
993 INFO_PRINTF1(_L("Test passed."));
998 ERR_PRINTF1(_L("Test Failed."));
1008 TInt CTestDbBlr::getpwent_test1()
1010 // Create temporary variables in stack
1011 TInt ret=KErrGeneral;
1013 struct passwd* pwd=NULL;
1020 ERR_PRINTF1(_L("Test failed."));
1027 ERR_PRINTF1(_L("Test failed."));
1034 ERR_PRINTF1(_L("Test failed."));
1039 INFO_PRINTF1(_L("Test passed."));
1048 TInt CTestDbBlr::setpwent_test1()
1050 // Create temporary variables in stack
1051 struct passwd* pwd=NULL;
1052 TInt ret=KErrGeneral;
1076 if(pwd)ret= KErrNone;
1084 INFO_PRINTF1(_L("Test passed."));
1088 ERR_PRINTF1(_L("Test failed."));
1093 TInt CTestDbBlr::endpwent_test1()
1095 // Create temporary variables in stack
1097 struct passwd* pwd=NULL;
1098 TInt ret=KErrGeneral;
1133 INFO_PRINTF1(_L("Test passed."));
1137 ERR_PRINTF1(_L("Test failed."));