persistentstorage/sqlite3api/TEST/t_sqliteperf.cpp
branchRCL_3
changeset 23 26645d81f48d
parent 0 08ec8eefde2f
child 24 cc28652e0254
equal deleted inserted replaced
21:28839de615b4 23:26645d81f48d
    16 #include <e32test.h>
    16 #include <e32test.h>
    17 #include <bautils.h>
    17 #include <bautils.h>
    18 #include <e32math.h>
    18 #include <e32math.h>
    19 #include <hal.h>
    19 #include <hal.h>
    20 #include <sqldb.h>
    20 #include <sqldb.h>
       
    21 #include "sqliteTestUtl.h"
    21 #include "t_sqliteperf.h"
    22 #include "t_sqliteperf.h"
    22 
    23 
    23 ///////////////////////////////////////////////////////////////////////////////////////
    24 ///////////////////////////////////////////////////////////////////////////////////////
    24 
    25 
    25 static RTest TheTest(_L("t_sqliteperf test"));
    26 const char* const KTestName = "t_sqliteperf test";
       
    27 
    26 _LIT(KTestDir, "c:\\test\\");
    28 _LIT(KTestDir, "c:\\test\\");
    27 _LIT(KTestDbName,   "c:\\test\\t_sqliteperf.db");
    29 _LIT(KTestDbName,   "c:\\test\\t_sqliteperf.db");
    28 _LIT8(KTestDbName8, "c:\\test\\t_sqliteperf.db\x0");
    30 _LIT8(KTestDbName8, "c:\\test\\t_sqliteperf.db\x0");
    29 
    31 
    30 _LIT(KSqlSrvName, "sqlsrv.exe");
    32 _LIT(KSqlSrvName, "sqlsrv.exe");
    63 #define UNUSED_VAR(a) (a) = (a)
    65 #define UNUSED_VAR(a) (a) = (a)
    64 #define UNUSED_PTR(a) a.Set(a)
    66 #define UNUSED_PTR(a) a.Set(a)
    65 
    67 
    66 ///////////////////////////////////////////////////////////////////////////////////////
    68 ///////////////////////////////////////////////////////////////////////////////////////
    67 
    69 
    68 extern "C" void TestAbort(TInt aLine)
       
    69 	{
       
    70 	TheTest(0, aLine);
       
    71 	}
       
    72 
       
    73 extern "C" const char* TestDbName(void)
    70 extern "C" const char* TestDbName(void)
    74 	{
    71 	{
    75 	return (const char*)KTestDbName8().Ptr();
    72 	return (const char*)KTestDbName8().Ptr();
    76 	}
       
    77 
       
    78 extern "C" void PrintS(const char* aFmt, const char* aMsg)
       
    79 	{
       
    80 	TheSqlBuf.Format(TPtrC8((const TUint8*)aFmt), aMsg);
       
    81 	ThePrintBuf.Copy(TheSqlBuf);
       
    82 	TheTest.Printf(ThePrintBuf);
       
    83 	}
       
    84 
       
    85 extern "C" void PrintI(const char* aFmt, int a1)
       
    86 	{
       
    87 	TheSqlBuf.Format(TPtrC8((const TUint8*)aFmt), a1);
       
    88 	ThePrintBuf.Copy(TheSqlBuf);
       
    89 	TheTest.Printf(ThePrintBuf);
       
    90 	}
       
    91 
       
    92 extern "C" void PrintIII(const char* aFmt, int a1, int a2, int a3)
       
    93 	{
       
    94 	TheSqlBuf.Format(TPtrC8((const TUint8*)aFmt), a1, a2, a3);
       
    95 	ThePrintBuf.Copy(TheSqlBuf);
       
    96 	TheTest.Printf(ThePrintBuf);
       
    97 	}
    73 	}
    98 
    74 
    99 static void DeleteTestFiles()
    75 static void DeleteTestFiles()
   100 	{
    76 	{
   101 	TheDb.Close();
    77 	TheDb.Close();
   107 static void Check(TInt aValue, TInt aLine)
    83 static void Check(TInt aValue, TInt aLine)
   108 	{
    84 	{
   109 	if(!aValue)
    85 	if(!aValue)
   110 		{
    86 		{
   111 		DeleteTestFiles();
    87 		DeleteTestFiles();
   112 		TheTest(EFalse, aLine);
    88 		TestTestLine(EFalse, aLine);
   113 		}
    89 		}
   114 	}
    90 	}
   115 static void Check(TInt aValue, TInt aExpected, TInt aLine)
    91 static void Check(TInt aValue, TInt aExpected, TInt aLine)
   116 	{
    92 	{
   117 	if(aValue != aExpected)
    93 	if(aValue != aExpected)
   118 		{
    94 		{
   119 		DeleteTestFiles();
    95 		DeleteTestFiles();
   120 		RDebug::Print(_L("*** Expected error: %d, got: %d\r\n"), aExpected, aValue);
    96 		RDebug::Print(_L("*** Expected error: %d, got: %d\r\n"), aExpected, aValue);
   121 		TheTest(EFalse, aLine);
    97 		TestTestLine(EFalse, aLine);
   122 		}
    98 		}
   123 	}
    99 	}
   124 #define TEST(arg) ::Check((arg), __LINE__)
   100 #define TEST(arg) ::Check((arg), __LINE__)
   125 #define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
   101 #define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
   126 
   102 
   173 	}
   149 	}
   174 
   150 
   175 static void GetFastCounterFrequency()
   151 static void GetFastCounterFrequency()
   176 	{
   152 	{
   177 	TEST2(HAL::Get(HAL::EFastCounterFrequency, TheCounterFreq), KErrNone);
   153 	TEST2(HAL::Get(HAL::EFastCounterFrequency, TheCounterFreq), KErrNone);
   178 	TheTest.Printf(_L("Counter frequency=%d\r\n"), TheCounterFreq);
   154 	TBuf8<32> printString;
       
   155 	printString.Format(_L8("Counter frequency=%d\r\n"), TheCounterFreq);
       
   156 	TestPrintf((const char*)printString.PtrZ());
   179 	}
   157 	}
   180 
   158 
   181 extern "C" unsigned int FastCounterValue(void)
   159 extern "C" unsigned int FastCounterValue(void)
   182 	{
   160 	{
   183 	return User::FastCounter();
   161 	return User::FastCounter();
   191 	ThePerfTestResult[aMode][aType] = aResult;
   169 	ThePerfTestResult[aMode][aType] = aResult;
   192 	}
   170 	}
   193 
   171 
   194 static void PrintPerfTestResults()
   172 static void PrintPerfTestResults()
   195 	{
   173 	{
       
   174 	TBuf8<256> printString;
   196 	TInt r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiInsert]);
   175 	TInt r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiInsert]);
   197 	TInt r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiInsert]);
   176 	TInt r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiInsert]);
   198 	TInt r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiInsert]);
   177 	TInt r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiInsert]);
   199 	TInt r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   178 	TInt r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   200 	TInt r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   179 	TInt r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   201 	TheTest.Printf(_L("###                 SQL            SQLITE-SQL     SQLITE-DEFAULT\r\n"));
   180 	TestPrintf("###                 SQL            SQLITE-SQL     SQLITE-DEFAULT\r\n");
   202 	TheTest.Printf(_L("###Mutli Insert:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   181 	printString.Format(_L8("###Multi Insert:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   182 	TestPrintf((const char*)printString.PtrZ());
   203 
   183 
   204 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiUpdate]);
   184 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiUpdate]);
   205 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiUpdate]);
   185 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiUpdate]);
   206 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiUpdate]);
   186 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiUpdate]);
   207 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   187 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   208 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   188 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   209 	TheTest.Printf(_L("###Mutli Update:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   189 	printString.Format(_L8("###Multi Update:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   190 	TestPrintf((const char*)printString.PtrZ());
   210 
   191 
   211 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiDelete]);
   192 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiDelete]);
   212 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiDelete]);
   193 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiDelete]);
   213 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiDelete]);
   194 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiDelete]);
   214 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   195 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   215 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   196 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   216 	TheTest.Printf(_L("###Mutli Delete:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   197 	printString.Format(_L8("###Multi Delete:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   198 	TestPrintf((const char*)printString.PtrZ());
   217 
   199 
   218 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiSelect]);
   200 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestMultiSelect]);
   219 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiSelect]);
   201 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestMultiSelect]);
   220 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiSelect]);
   202 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestMultiSelect]);
   221 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   203 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   222 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   204 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   223 	TheTest.Printf(_L("###Mutli Select:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   205 	printString.Format(_L8("###Multi Select:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   206 	TestPrintf((const char*)printString.PtrZ());
   224 
   207 
   225 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleInsert]);
   208 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleInsert]);
   226 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleInsert]);
   209 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleInsert]);
   227 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleInsert]);
   210 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleInsert]);
   228 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   211 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   229 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   212 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   230 	TheTest.Printf(_L("##Single Insert:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   213 	printString.Format(_L8("##Single Insert:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   214 	TestPrintf((const char*)printString.PtrZ());
   231 
   215 
   232 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleUpdate]);
   216 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleUpdate]);
   233 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleUpdate]);
   217 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleUpdate]);
   234 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleUpdate]);
   218 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleUpdate]);
   235 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   219 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   236 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   220 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   237 	TheTest.Printf(_L("##Single Update:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   221 	printString.Format(_L8("##Single Update:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   222 	TestPrintf((const char*)printString.PtrZ());
   238 
   223 
   239 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleDelete]);
   224 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleDelete]);
   240 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleDelete]);
   225 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleDelete]);
   241 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleDelete]);
   226 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleDelete]);
   242 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   227 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   243 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   228 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   244 	TheTest.Printf(_L("##Single Delete:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   229 	printString.Format(_L8("##Single Delete:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   230 	TestPrintf((const char*)printString.PtrZ());
   245 
   231 
   246 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleSelect]);
   232 	r1 = FcDiff2Us(ThePerfTestResult[EPerfTestSqlMode]          [EPerfTestSingleSelect]);
   247 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleSelect]);
   233 	r2 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteSqlMode]    [EPerfTestSingleSelect]);
   248 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleSelect]);
   234 	r3 = FcDiff2Us(ThePerfTestResult[EPerfTestSqliteDefaultMode][EPerfTestSingleSelect]);
   249 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   235 	r4 = (TInt)((Abs(r2 - r1) * 100.0) / r1);
   250 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   236 	r5 = (TInt)((Abs(r3 - r1) * 100.0) / r1);
   251 	TheTest.Printf(_L("##Single Select:  %8dus     %8dus     %8dus   %8d%%   %8d%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
   237 	printString.Format(_L8("##Single Select:  %8dus     %8dus     %8dus   %8d%%%%   %8d%%%%\r\n"), r1, r2, r3, r2 > r1 ? -r4 : +r4, r3 > r1 ? -r5 : +r5);
       
   238 	TestPrintf((const char*)printString.PtrZ());
   252 	}
   239 	}
   253 
   240 
   254 ///////////////////////////////////////////////////////////////////////////////////////
   241 ///////////////////////////////////////////////////////////////////////////////////////
   255 
   242 
   256 static void CreateTestDir()
   243 static void CreateTestDir()
   298 @SYMTestExpectedResults Test must not fail
   285 @SYMTestExpectedResults Test must not fail
   299 @SYMREQ					REQ8782
   286 @SYMREQ					REQ8782
   300 */
   287 */
   301 static void SqlServerMultiInsertTest(const char aInsertSql[], TInt aInsertRecCnt)
   288 static void SqlServerMultiInsertTest(const char aInsertSql[], TInt aInsertRecCnt)
   302 	{
   289 	{
   303 	TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4010 "));
   290 	TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4010 ");
   304 	(void)KillProcess(KSqlSrvName);
   291 	(void)KillProcess(KSqlSrvName);
   305 
   292 
   306 	TInt err = TheDb.Open(KTestDbName);
   293 	TInt err = TheDb.Open(KTestDbName);
   307 	TEST2(err, KErrNone);
   294 	TEST2(err, KErrNone);
   308 
   295 
   355 @SYMTestExpectedResults Test must not fail
   342 @SYMTestExpectedResults Test must not fail
   356 @SYMREQ					REQ8782
   343 @SYMREQ					REQ8782
   357 */
   344 */
   358 static void SqlServerMultiUpdateTest(const char aUpdateSql[], TInt aUpdateRecIds[], TInt aUpdateRecCnt)
   345 static void SqlServerMultiUpdateTest(const char aUpdateSql[], TInt aUpdateRecIds[], TInt aUpdateRecCnt)
   359 	{
   346 	{
   360     TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4011 "));
   347     TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4011 ");
   361 	(void)KillProcess(KSqlSrvName);
   348 	(void)KillProcess(KSqlSrvName);
   362 
   349 
   363 	TInt err = TheDb.Open(KTestDbName);
   350 	TInt err = TheDb.Open(KTestDbName);
   364 	TEST2(err, KErrNone);
   351 	TEST2(err, KErrNone);
   365 
   352 
   383 @SYMTestExpectedResults Test must not fail
   370 @SYMTestExpectedResults Test must not fail
   384 @SYMREQ					REQ8782
   371 @SYMREQ					REQ8782
   385 */
   372 */
   386 static void SqlServerMultiDeleteTest(const char aDeleteSql[], TInt aDeleteRecIds[], TInt aDeleteRecCnt)
   373 static void SqlServerMultiDeleteTest(const char aDeleteSql[], TInt aDeleteRecIds[], TInt aDeleteRecCnt)
   387 	{
   374 	{
   388 	TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4012 "));
   375 	TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4012 ");
   389 	(void)KillProcess(KSqlSrvName);
   376 	(void)KillProcess(KSqlSrvName);
   390 
   377 
   391 	TInt err = TheDb.Open(KTestDbName);
   378 	TInt err = TheDb.Open(KTestDbName);
   392 	TEST2(err, KErrNone);
   379 	TEST2(err, KErrNone);
   393 
   380 
   411 @SYMTestExpectedResults Test must not fail
   398 @SYMTestExpectedResults Test must not fail
   412 @SYMREQ					REQ8782
   399 @SYMREQ					REQ8782
   413 */
   400 */
   414 static void SqlServerMultiSelectTest(const char aSelectSql[], TInt aSelectRecIds[], TInt aSelectRecCnt)
   401 static void SqlServerMultiSelectTest(const char aSelectSql[], TInt aSelectRecIds[], TInt aSelectRecCnt)
   415 	{
   402 	{
   416 	TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4013 "));
   403 	TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4013 ");
   417 	(void)KillProcess(KSqlSrvName);
   404 	(void)KillProcess(KSqlSrvName);
   418 
   405 
   419 	TInt err = TheDb.Open(KTestDbName);
   406 	TInt err = TheDb.Open(KTestDbName);
   420 	TEST2(err, KErrNone);
   407 	TEST2(err, KErrNone);
   421 
   408 
   460 @SYMTestExpectedResults Test must not fail
   447 @SYMTestExpectedResults Test must not fail
   461 @SYMREQ					REQ8782
   448 @SYMREQ					REQ8782
   462 */
   449 */
   463 static void SqlServerSingleInsertTest(const char aSingleInsertSql[], TInt aInsertRecId)
   450 static void SqlServerSingleInsertTest(const char aSingleInsertSql[], TInt aInsertRecId)
   464 	{
   451 	{
   465 	TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4014 "));
   452 	TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4014 ");
   466 	(void)KillProcess(KSqlSrvName);
   453 	(void)KillProcess(KSqlSrvName);
   467 
   454 
   468 	TInt err = TheDb.Open(KTestDbName);
   455 	TInt err = TheDb.Open(KTestDbName);
   469 	TEST2(err, KErrNone);
   456 	TEST2(err, KErrNone);
   470 
   457 
   487 @SYMTestExpectedResults Test must not fail
   474 @SYMTestExpectedResults Test must not fail
   488 @SYMREQ					REQ8782
   475 @SYMREQ					REQ8782
   489 */
   476 */
   490 static void SqlServerSingleUpdateTest(const char aSingleUpdateSql[], TInt aUpdateRecId)
   477 static void SqlServerSingleUpdateTest(const char aSingleUpdateSql[], TInt aUpdateRecId)
   491 	{
   478 	{
   492 	TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4015 "));
   479 	TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4015 ");
   493 	(void)KillProcess(KSqlSrvName);
   480 	(void)KillProcess(KSqlSrvName);
   494 
   481 
   495 	TInt err = TheDb.Open(KTestDbName);
   482 	TInt err = TheDb.Open(KTestDbName);
   496 	TEST2(err, KErrNone);
   483 	TEST2(err, KErrNone);
   497 
   484 
   515 @SYMTestExpectedResults Test must not fail
   502 @SYMTestExpectedResults Test must not fail
   516 @SYMREQ					REQ8782
   503 @SYMREQ					REQ8782
   517 */
   504 */
   518 static void SqlServerSingleDeleteTest(const char aSingleDeleteSql[], TInt aDeleteRecId)
   505 static void SqlServerSingleDeleteTest(const char aSingleDeleteSql[], TInt aDeleteRecId)
   519 	{
   506 	{
   520 	TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4016 "));
   507 	TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4016 ");
   521 	(void)KillProcess(KSqlSrvName);
   508 	(void)KillProcess(KSqlSrvName);
   522 
   509 
   523 	TInt err = TheDb.Open(KTestDbName);
   510 	TInt err = TheDb.Open(KTestDbName);
   524 	TEST2(err, KErrNone);
   511 	TEST2(err, KErrNone);
   525 
   512 
   543 @SYMTestExpectedResults Test must not fail
   530 @SYMTestExpectedResults Test must not fail
   544 @SYMREQ					REQ8782
   531 @SYMREQ					REQ8782
   545 */
   532 */
   546 static void SqlServerSingleSelectTest(const char aSingleSelectSql[], TInt aSelectRecId)
   533 static void SqlServerSingleSelectTest(const char aSingleSelectSql[], TInt aSelectRecId)
   547 	{
   534 	{
   548 	TheTest.Next( _L(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4017 "));
   535 	TestNext(" @SYMTestCaseID:SYSLIB-SQLITE3-UT-4017 ");
   549 	(void)KillProcess(KSqlSrvName);
   536 	(void)KillProcess(KSqlSrvName);
   550 
   537 
   551 	TInt err = TheDb.Open(KTestDbName);
   538 	TInt err = TheDb.Open(KTestDbName);
   552 	TEST2(err, KErrNone);
   539 	TEST2(err, KErrNone);
   553 
   540 
   587 ///////////////////////////////////////////////////////////////////////////////////////
   574 ///////////////////////////////////////////////////////////////////////////////////////
   588 ///////////////////////////////////////////////////////////////////////////////////////
   575 ///////////////////////////////////////////////////////////////////////////////////////
   589 
   576 
   590 static void DoSqlServerTests()
   577 static void DoSqlServerTests()
   591 	{
   578 	{
   592 	TheTest.Next(_L("SQL: Create the test database"));
   579 	TestNext("SQL: Create the test database");
   593 	CreateTestDatabase();
   580 	CreateTestDatabase();
   594 
   581 
   595 	TBuf<100> msgbuf;
   582 	TBuf8<100> msgbuf;
   596 
   583 
   597 	msgbuf.Format(_L("SQL: insert %d records in a single transaction"), KInsertRecCnt);
   584 	msgbuf.Format(_L8("SQL: insert %d records in a single transaction"), KInsertRecCnt);
   598 	TheTest.Next(msgbuf);
   585 	TestNext((const char*)msgbuf.PtrZ());
   599 	SqlServerMultiInsertTest(KMultiInsertSql, KInsertRecCnt);
   586 	SqlServerMultiInsertTest(KMultiInsertSql, KInsertRecCnt);
   600 
   587 
   601 	msgbuf.Format(_L("SQL: update %d records in a single transaction"), KUpdateRecCnt);
   588 	msgbuf.Format(_L8("SQL: update %d records in a single transaction"), KUpdateRecCnt);
   602 	TheTest.Next(msgbuf);
   589 	TestNext((const char*)msgbuf.PtrZ());
   603 	SqlServerMultiUpdateTest(KMultiUpdateSql, TheUpdateRecIds, KUpdateRecCnt);
   590 	SqlServerMultiUpdateTest(KMultiUpdateSql, TheUpdateRecIds, KUpdateRecCnt);
   604 
   591 
   605 	msgbuf.Format(_L("SQL: delete %d records in a single transaction"), KDeleteRecCnt);
   592 	msgbuf.Format(_L8("SQL: delete %d records in a single transaction"), KDeleteRecCnt);
   606 	TheTest.Next(msgbuf);
   593 	TestNext((const char*)msgbuf.PtrZ());
   607 	SqlServerMultiDeleteTest(KMultiDeleteSql, TheDeleteRecIds, KDeleteRecCnt);
   594 	SqlServerMultiDeleteTest(KMultiDeleteSql, TheDeleteRecIds, KDeleteRecCnt);
   608 
   595 
   609 	msgbuf.Format(_L("SQL: select %d records"), KSelectRecCnt);
   596 	msgbuf.Format(_L8("SQL: select %d records"), KSelectRecCnt);
   610 	TheTest.Next(msgbuf);
   597 	msgbuf.Copy(msgbuf);
       
   598 	TestNext((const char*)msgbuf.PtrZ());
   611 	SqlServerMultiSelectTest(KMultiSelectSql, TheSelectRecIds, KSelectRecCnt);
   599 	SqlServerMultiSelectTest(KMultiSelectSql, TheSelectRecIds, KSelectRecCnt);
   612 
   600 
   613 	TheTest.Next(_L("SQL: insert a single record"));
   601 	TestNext("SQL: insert a single record");
   614 	SqlServerSingleInsertTest(KSingleInsertSql, TheInsertRecId);
   602 	SqlServerSingleInsertTest(KSingleInsertSql, TheInsertRecId);
   615 
   603 
   616 	TheTest.Next(_L("SQL: update a single record"));
   604 	TestNext("SQL: update a single record");
   617 	SqlServerSingleUpdateTest(KSingleUpdateSql, TheUpdateRecId);
   605 	SqlServerSingleUpdateTest(KSingleUpdateSql, TheUpdateRecId);
   618 
   606 
   619 	TheTest.Next(_L("SQL: delete a single record"));
   607 	TestNext("SQL: delete a single record");
   620 	SqlServerSingleDeleteTest(KSingleDeleteSql, TheDeleteRecId);
   608 	SqlServerSingleDeleteTest(KSingleDeleteSql, TheDeleteRecId);
   621 
   609 
   622 	TheTest.Next(_L("SQL: select a single record"));
   610 	TestNext("SQL: select a single record");
   623 	SqlServerSingleSelectTest(KSingleSelectSql, TheSelectRecId);
   611 	SqlServerSingleSelectTest(KSingleSelectSql, TheSelectRecId);
   624 
   612 
   625 	(void)RSqlDatabase::Delete(KTestDbName);
   613 	(void)RSqlDatabase::Delete(KTestDbName);
   626 	}
   614 	}
   627 
   615 
   629 	{
   617 	{
   630 	TEST(aPerfTestMode > EPerfTestSqlMode && aPerfTestMode < EPerfTestModeCnt);
   618 	TEST(aPerfTestMode > EPerfTestSqlMode && aPerfTestMode < EPerfTestModeCnt);
   631 
   619 
   632 	SqliteInitialize(aPerfTestMode);
   620 	SqliteInitialize(aPerfTestMode);
   633 
   621 
   634 	TheTest.Next( _L("SQLite: Create the test database"));
   622 	TestNext("SQLite: Create the test database");
   635 	CreateTestDatabase();
   623 	CreateTestDatabase();
   636 
   624 
   637 	TBuf<200> msgbuf;
   625 	TBuf8<200> msgbuf;
   638 	_LIT(KSqliteConfigSql, "\"SQL\"");
   626 	_LIT8(KSqliteConfigSql, "\"SQL\"");
   639 	_LIT(KSqliteConfigDefault, "\"Default\"");
   627 	_LIT8(KSqliteConfigDefault, "\"Default\"");
   640 
   628 
   641 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4018: SQLite, configuration: %S: insert %d records in a single transaction"),
   629 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4018: SQLite, configuration: %S: insert %d records in a single transaction"),
   642 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KInsertRecCnt);
   630 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KInsertRecCnt);
   643 	TheTest.Next(msgbuf);
   631 	TestNext((const char*)msgbuf.PtrZ());
   644 	SqliteMultiInsertTest(aPerfTestMode, KMultiInsertSql, KInsertRecCnt);
   632 	SqliteMultiInsertTest(aPerfTestMode, KMultiInsertSql, KInsertRecCnt);
   645 
   633 
   646 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4019: SQLite, configuration: %S: update %d records in a single transaction"),
   634 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4019: SQLite, configuration: %S: update %d records in a single transaction"),
   647 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KUpdateRecCnt);
   635 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KUpdateRecCnt);
   648 	TheTest.Next(msgbuf);
   636 	TestNext((const char*)msgbuf.PtrZ());
   649 	SqliteMultiUpdateTest(aPerfTestMode, KMultiUpdateSql, TheUpdateRecIds, KUpdateRecCnt);
   637 	SqliteMultiUpdateTest(aPerfTestMode, KMultiUpdateSql, TheUpdateRecIds, KUpdateRecCnt);
   650 
   638 
   651 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4020: SQLite, configuration: %S: delete %d records in a single transaction"),
   639 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4020: SQLite, configuration: %S: delete %d records in a single transaction"),
   652 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KDeleteRecCnt);
   640 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KDeleteRecCnt);
   653 	TheTest.Next(msgbuf);
   641 	TestNext((const char*)msgbuf.PtrZ());
   654 	SqliteMultiDeleteTest(aPerfTestMode, KMultiDeleteSql, TheDeleteRecIds, KDeleteRecCnt);
   642 	SqliteMultiDeleteTest(aPerfTestMode, KMultiDeleteSql, TheDeleteRecIds, KDeleteRecCnt);
   655 
   643 
   656 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4021: SQLite, configuration: %S: select %d records"),
   644 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4021: SQLite, configuration: %S: select %d records"),
   657 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KSelectRecCnt);
   645 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault, KSelectRecCnt);
   658 	TheTest.Next(msgbuf);
   646 	TestNext((const char*)msgbuf.PtrZ());
   659 	SqliteMultiSelectTest(aPerfTestMode, KMultiSelectSql, TheSelectRecIds, KSelectRecCnt);
   647 	SqliteMultiSelectTest(aPerfTestMode, KMultiSelectSql, TheSelectRecIds, KSelectRecCnt);
   660 
   648 
   661 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4022: SQLite, configuration: %S: insert a single record"),
   649 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4022: SQLite, configuration: %S: insert a single record"),
   662 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   650 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   663 	TheTest.Next(msgbuf);
   651 	TestNext((const char*)msgbuf.PtrZ());
   664 	SqliteSingleInsertTest(aPerfTestMode, KSingleInsertSql, TheInsertRecId);
   652 	SqliteSingleInsertTest(aPerfTestMode, KSingleInsertSql, TheInsertRecId);
   665 
   653 
   666 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4023: SQLite, configuration: %S: update a single record"),
   654 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4023: SQLite, configuration: %S: update a single record"),
   667 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   655 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   668 	TheTest.Next(msgbuf);
   656 	TestNext((const char*)msgbuf.PtrZ());
   669 	SqliteSingleUpdateTest(aPerfTestMode, KSingleUpdateSql, TheUpdateRecId);
   657 	SqliteSingleUpdateTest(aPerfTestMode, KSingleUpdateSql, TheUpdateRecId);
   670 
   658 
   671 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4024: SQLite, configuration: %S: delete a single record"),
   659 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4024: SQLite, configuration: %S: delete a single record"),
   672 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   660 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   673 	TheTest.Next(msgbuf);
   661 	TestNext((const char*)msgbuf.PtrZ());
   674 	SqliteSingleDeleteTest(aPerfTestMode, KSingleDeleteSql, TheDeleteRecId);
   662 	SqliteSingleDeleteTest(aPerfTestMode, KSingleDeleteSql, TheDeleteRecId);
   675 
   663 
   676 	msgbuf.Format(_L("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4025: SQLite, configuration: %S: select a single record"),
   664 	msgbuf.Format(_L8("@SYMTestCaseID:SYSLIB-SQLITE3-UT-4025: SQLite, configuration: %S: select a single record"),
   677 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   665 							aPerfTestMode == EPerfTestSqliteSqlMode ? &KSqliteConfigSql : &KSqliteConfigDefault);
   678 	TheTest.Next(msgbuf);
   666 	TestNext((const char*)msgbuf.PtrZ());
   679 	SqliteSingleSelectTest(aPerfTestMode, KSingleSelectSql, TheSelectRecId);
   667 	SqliteSingleSelectTest(aPerfTestMode, KSingleSelectSql, TheSelectRecId);
   680 
   668 
   681 	(void)RSqlDatabase::Delete(KTestDbName);
   669 	(void)RSqlDatabase::Delete(KTestDbName);
   682 
   670 
   683 	SqliteFinalize(aPerfTestMode);
   671 	SqliteFinalize(aPerfTestMode);
   817 		}
   805 		}
   818 	}
   806 	}
   819 
   807 
   820 static void DoTests()
   808 static void DoTests()
   821 	{
   809 	{
   822 	TheTest.Start(_L("Get fast counter frequency"));
   810 	TestStart("Get fast counter frequency");
   823 	GetFastCounterFrequency();
   811 	GetFastCounterFrequency();
   824 
   812 
   825 	TheTest.Next( _L("Generate test record ids"));
   813 	TestNext("Generate test record ids");
   826 	GenerateTestRecIds();
   814 	GenerateTestRecIds();
   827 
   815 
   828 	TheTest.Next( _L("Verify generated test record ids"));
   816 	TestNext("Verify generated test record ids");
   829 	VerifyGeneratedRecIds();
   817 	VerifyGeneratedRecIds();
   830 
   818 
   831 	DoSqlServerTests();
   819 	DoSqlServerTests();
   832 	(void)KillProcess(KSqlSrvName);
   820 	(void)KillProcess(KSqlSrvName);
   833 
   821 
   838 	PrintPerfTestResults();
   826 	PrintPerfTestResults();
   839 	}
   827 	}
   840 
   828 
   841 TInt E32Main()
   829 TInt E32Main()
   842 	{
   830 	{
   843 	TheTest.Title();
   831 	TestOpen(KTestName);
       
   832 	TestTitle();
   844 
   833 
   845 	CTrapCleanup* tc = CTrapCleanup::New();
   834 	CTrapCleanup* tc = CTrapCleanup::New();
   846 
   835 
   847 	__UHEAP_MARK;
   836 	__UHEAP_MARK;
   848 
   837 
   851 	DoTests();
   840 	DoTests();
   852 	DeleteTestFiles();
   841 	DeleteTestFiles();
   853 
   842 
   854 	__UHEAP_MARKEND;
   843 	__UHEAP_MARKEND;
   855 
   844 
   856 	TheTest.End();
   845 	TestEnd();
   857 	TheTest.Close();
   846 	TestClose();
   858 
   847 
   859 	delete tc;
   848 	delete tc;
   860 
   849 
   861 	User::Heap().Check();
   850 	User::Heap().Check();
   862 	return KErrNone;
   851 	return KErrNone;