--- a/persistentstorage/sql/TEST/t_sqlperformance.cpp Mon Sep 27 11:59:56 2010 +0100
+++ b/persistentstorage/sql/TEST/t_sqlperformance.cpp Tue Oct 19 16:26:13 2010 +0100
@@ -29,6 +29,8 @@
RTest TheTest(_L("t_sqlperformance test"));
RFs TheFs;
TBuf<200> TheTestTitle;
+TBuf<250> TheLogLine;
+TBuf8<250> TheLogLine8;
TCmdLineParams TheCmdLineParams;
TBuf8<200> TheSqlConfigString;
@@ -41,7 +43,7 @@
TFileName TheNonSecureTmpDbName;
TFileName TheSglRecDbFileName;
-_LIT(KSqlServerPrivateDir, "\\private\\10281e17\\");
+//_LIT(KSqlServerPrivateDir, "\\private\\10281e17\\");
_LIT(KCreateDbScript, "z:\\test\\contacts_schema_to_vendors.sql");
_LIT(KFillDbScript, "z:\\test\\add_simple_contacts.sql");
@@ -83,10 +85,17 @@
const TInt KTestTecordCount = 1000;
+RFile TheLogFile;
+
///////////////////////////////////////////////////////////////////////////////////////
void TestEnvDestroy()
{
+ if(TheCmdLineParams.iLogFileName.Length() > 0)
+ {
+ (void)TheLogFile.Flush();
+ TheLogFile.Close();
+ }
(void)RSqlDatabase::Delete(TheNonSecureTmpDbName);
(void)RSqlDatabase::Delete(TheNonSecureDbName2);
(void)RSqlDatabase::Delete(TheNonSecureDbName);
@@ -127,6 +136,13 @@
err = TheFs.MkDir(TheNonSecureDbName);
TEST(err == KErrNone || err == KErrAlreadyExists);
+
+ if(TheCmdLineParams.iLogFileName.Length() > 0)
+ {
+ err = TheLogFile.Replace(TheFs, TheCmdLineParams.iLogFileName, EFileRead | EFileWrite);
+ TEST2(err, KErrNone);
+ LogConfig(TheLogFile, TheCmdLineParams);
+ }
}
//Reads a SQL file and returns the file content as HBUFC string.
@@ -177,7 +193,7 @@
template TPtrC8 GetNextTrans<TPtrC8, TDesC8>(TPtrC8&, const TDesC8&);
template TPtrC16 GetNextTrans<TPtrC16, TDesC16>(TPtrC16&, const TDesC16&);
-//Prints aTicks parameter (converted to ms)
+//Prints the test case title and execution time in microseconds
void PrintStats(TUint32 aStartTicks, TUint32 aEndTicks)
{
static TInt freq = 0;
@@ -192,9 +208,16 @@
}
const TInt KMicroSecIn1Sec = 1000000;
TInt32 us = (diffTicks * KMicroSecIn1Sec) / freq;
- TheTest.Printf(_L("####Execution time: %d ms\r\n"), us / 1000);
+ TheTest.Printf(_L("%S: %d us\r\n"), &TheTestTitle, us);
+ if(TheCmdLineParams.iLogFileName.Length() > 0)
+ {
+ TheLogLine.Format(_L("%S¬%d¬us\r\n"), &TheTestTitle, us);
+ TheLogLine8.Copy(TheLogLine);
+ (void)TheLogFile.Write(TheLogLine8);
+ }
}
-
+
+/*
void PrintFileSize(const TDesC& aFileName)
{
TParse parse;
@@ -208,6 +231,7 @@
TheTest.Printf(_L("####FileSize: %d\r\n"), size);
file.Close();
}
+*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////// SQL SERVER performance tests
@@ -314,7 +338,6 @@
//"INSERT" test function
template <class HBUFC, class PTRC, class DESC, TDbType TYPE> void InsertTest(const TDesC& aDbFileName, const DESC& aCommitStr)
{
- TheTest.Printf(_L("\"Insert\" test\r\n"));
RSqlDatabase db = TDbHelper<TYPE>::Open(aDbFileName);
ExecuteSqlScript<HBUFC, PTRC, DESC>(db, KFillDbScript, aCommitStr);
db.Close();
@@ -328,7 +351,6 @@
//"UPDATE" test function (parametrized update)
template <class DESC, TDbType TYPE> void UpdateTest(const TDesC& aDbFileName, const DESC& aUpdateSql)
{
- TheTest.Printf(_L("\"Update (parametrized)\" test\r\n"));
RSqlDatabase db = TDbHelper<TYPE>::Open(aDbFileName);
RSqlStatement stmt;
TInt err = stmt.Prepare(db, aUpdateSql);
@@ -380,7 +402,6 @@
//"UPDATE" test function (without parameters) - SQL server
template <class BUF, class DESC, TDbType TYPE> void UpdateWPTest(const TDesC& aDbFileName, const DESC& aUpdateSql)
{
- TheTest.Printf(_L("\"Update (without parameters)\" test\r\n"));
RSqlDatabase db = TDbHelper<TYPE>::Open(aDbFileName);
TBuf<200> fmtstr;
fmtstr.Copy(aUpdateSql);
@@ -398,7 +419,7 @@
TUint32 end = User::FastCounter();
PrintStats(start, end);
db.Close();
- PrintFileSize(aDbFileName);
+ //PrintFileSize(aDbFileName);
}
//Explicit UpdateWPTest() template instantiations.
template void UpdateWPTest<TBuf8<200>, TDesC8, ENonSecureDb>(const TDesC&, const TDesC8&);
@@ -409,7 +430,6 @@
//"SELECT" test function
template <class DESC, TDbType TYPE> void SelectTest(const TDesC& aDbFileName, const DESC& aSelectSql)
{
- TheTest.Printf(_L("\"Select\" test\r\n"));
RSqlDatabase db = TDbHelper<TYPE>::Open(aDbFileName);
RSqlStatement stmt;
TInt err = stmt.Prepare(db, aSelectSql);
@@ -443,7 +463,6 @@
//"DELETE" test function
template <class DESC, TDbType TYPE> void DeleteTest(const TDesC& aDbFileName, const DESC& aDeleteSql)
{
- TheTest.Printf(_L("\"Delete\" test\r\n"));
RSqlDatabase db = TDbHelper<TYPE>::Open(aDbFileName);
TUint32 start = User::FastCounter();
TInt err = db.Exec(aDeleteSql);
@@ -470,16 +489,20 @@
TEST2(err, KErrNone);
TDbHelper<TYPE>::Create(aDbFileName);
+ TInt titleLen = TheTestTitle.Length();
+ TheTestTitle.Append(_L(", insert"));
InsertTest<HBUFC, PTRC, DESC, TYPE>(aDbFileName, aCommitStr);
- PrintFileSize(aDbFileName);
+ //PrintFileSize(aDbFileName);
(void)fm->Copy(aDbFileName, TheNonSecureTmpDbName);
+ TheTestTitle.Replace(titleLen, 8, _L(", update"));
UpdateTest<DESC, TYPE>(aDbFileName, aUpdateSql);
- PrintFileSize(aDbFileName);
+ //PrintFileSize(aDbFileName);
SelectTest<DESC, TYPE>(aDbFileName, aSelectSql);
+ TheTestTitle.Replace(titleLen, 8, _L(", delete"));
DeleteTest<DESC, TYPE>(aDbFileName, aDeleteSql);
- PrintFileSize(aDbFileName);
+ //PrintFileSize(aDbFileName);
(void)fm->Copy(TheNonSecureTmpDbName, aDbFileName);
(void)fm->Delete(TheNonSecureTmpDbName);
@@ -614,7 +637,6 @@
//Explicit InsertTest2() template specialization for UTF8 encoded SQL strings
template <> void InsertTest2<HBufC8, TPtrC8, TDesC8>(sqlite3* aDbHandle, const TDesC& aScriptFileName, const TDesC8& aCommitStr)
{
- TheTest.Printf(_L("\"Insert\" test\r\n"));
HBufC8* fillDbScript = ReadSqlScript<HBufC8>(aScriptFileName);
TUint32 start = User::FastCounter();
TPtrC8 ptr(fillDbScript->Des());
@@ -635,7 +657,6 @@
//Explicit InsertTest2() template specialization for UTF16 encoded SQL strings
template <> void InsertTest2<HBufC16, TPtrC16, TDesC16>(sqlite3* aDbHandle, const TDesC& aScriptFileName, const TDesC16& aCommitStr)
{
- TheTest.Printf(_L("\"Insert\" test\r\n"));
HBufC16* fillDbScript = ReadSqlScript<HBufC16>(aScriptFileName);
TUint32 start = User::FastCounter();
TPtrC16 ptr(fillDbScript->Des());
@@ -679,7 +700,6 @@
//Explicit UpdateTest2() template specialization for UTF8 encoded SQL strings
template <> void UpdateTest2<HBufC8, TDesC8>(sqlite3* aDbHandle, const TDesC8& aUpdateSql)
{
- TheTest.Printf(_L("\"Update\" test\r\n"));
HBufC8* sql = HBufC8::New(aUpdateSql.Length() + 1);
TEST(sql != NULL);
sql->Des().Copy(aUpdateSql);
@@ -738,7 +758,6 @@
//Explicit UpdateTest2() template specialization for UTF16 encoded SQL strings
template <> void UpdateTest2<HBufC16, TDesC16>(sqlite3* aDbHandle, const TDesC16& aUpdateSql)
{
- TheTest.Printf(_L("\"Update\" test\r\n"));
HBufC16* sql = HBufC16::New(aUpdateSql.Length() + 1);
TEST(sql != NULL);
sql->Des().Copy(aUpdateSql);
@@ -800,7 +819,6 @@
//Explicit UpdateWPTest2() template specialization for UTF8 encoded SQL strings
template <> void UpdateWPTest2<TDesC8>(const TDesC& aDbName, const TDesC8& aUpdateSql)
{
- TheTest.Printf(_L("\"Update (without parameters)\" test\r\n"));
TBuf<200> fmtstr;
fmtstr.Copy(aUpdateSql);
@@ -830,8 +848,6 @@
//Explicit UpdateWPTest2() template specialization for UTF16 encoded SQL strings
template <> void UpdateWPTest2<TDesC16>(const TDesC& aDbName, const TDesC16& aUpdateSql)
{
- TheTest.Printf(_L("\"Update (without parameters)\" test\r\n"));
-
sqlite3SymbianLibInit();
sqlite3* dbHandle = TDbHelper2<TCmdLineParams::EDbUtf16>::Open(aDbName);
@@ -872,7 +888,6 @@
//Explicit SelectTest2() template specialization for UTF8 encoded SQL strings
template <> void SelectTest2<HBufC8, TDesC8>(sqlite3* aDbHandle, const TDesC8& aSelectSql)
{
- TheTest.Printf(_L("\"Select\" test\r\n"));
HBufC8* sql = HBufC8::New(aSelectSql.Length() + 1);
TEST(sql != NULL);
sql->Des().Copy(aSelectSql);
@@ -908,7 +923,6 @@
//Explicit SelectTest2() template specialization for UTF16 encoded SQL strings
template <> void SelectTest2<HBufC16, TDesC16>(sqlite3* aDbHandle, const TDesC16& aSelectSql)
{
- TheTest.Printf(_L("\"Select\" test\r\n"));
HBufC16* sql = HBufC16::New(aSelectSql.Length() + 1);
TEST(sql != NULL);
sql->Des().Copy(aSelectSql);
@@ -946,7 +960,6 @@
//Explicit DeleteTest2() template specialization for UTF8 encoded SQL strings
template <> void DeleteTest2<HBufC8, TDesC8>(sqlite3* aDbHandle, const TDesC8& aDeleteSql)
{
- TheTest.Printf(_L("\"Delete\" test\r\n"));
HBufC8* sql = HBufC8::New(aDeleteSql.Length() + 1);
TEST(sql != NULL);
sql->Des().Copy(aDeleteSql);
@@ -962,7 +975,6 @@
//Explicit DeleteTest2() template specialization for UTF16 encoded SQL strings
template <> void DeleteTest2<HBufC16, TDesC16>(sqlite3* aDbHandle, const TDesC16& aDeleteSql)
{
- TheTest.Printf(_L("\"Delete\" test\r\n"));
HBufC16* sql = HBufC16::New(aDeleteSql.Length() + 1);
TEST(sql != NULL);
sql->Des().Copy(aDeleteSql);
@@ -1004,24 +1016,29 @@
TDbHelper2<TYPE>::Create(aDbFileName);
sqlite3* dbHandle = TDbHelper2<TYPE>::Open(aDbFileName);
+ TInt titleLen = TheTestTitle.Length();
+ TheTestTitle.Append(_L(", insert"));
InsertTest2<HBUFC, PTRC, DESC>(dbHandle, KFillDbScript(), aCommitStr);
(void)sqlite3_close(dbHandle); dbHandle = NULL;
- PrintFileSize(aDbFileName);
+ //PrintFileSize(aDbFileName);
dbHandle = TDbHelper2<TYPE>::Open(aDbFileName);
+ TheTestTitle.Replace(titleLen, 8, _L(", update"));
UpdateTest2<HBUFC, DESC>(dbHandle, aUpdateSql);
(void)sqlite3_close(dbHandle); dbHandle = NULL;
dbHandle = TDbHelper2<TYPE>::Open(aDbFileName);
+ TheTestTitle.Replace(titleLen, 8, _L(", select"));
SelectTest2<HBUFC, DESC>(dbHandle, aSelectSql);
(void)sqlite3_close(dbHandle); dbHandle = NULL;
(void)fm->Copy(aDbFileName, TheNonSecureTmpDbName);
dbHandle = TDbHelper2<TYPE>::Open(aDbFileName);
+ TheTestTitle.Replace(titleLen, 8, _L(", delete"));
DeleteTest2<HBUFC, DESC>(dbHandle, aDeleteSql);
(void)sqlite3_close(dbHandle); dbHandle = NULL;
- PrintFileSize(aDbFileName);
+ //PrintFileSize(aDbFileName);
sqlite3SymbianLibFinalize();
CloseSTDLIB();
@@ -1240,67 +1257,61 @@
{
TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-1648 SQL performance tests"));
- TheTest.Printf(_L("Single \"update\" test\r\n"));
+ TheTestTitle.Copy(_L("Single update"));
SingleUpdateTest();
- TheTest.Printf(_L("Single \"insert\" test\r\n"));
+ TheTestTitle.Copy(_L("Single insert"));
SingleInsertTest();
- TheTest.Printf(_L("Single \"delete\" test\r\n"));
+ TheTestTitle.Copy(_L("Single delete"));
SingleDeleteTest();
- TheTestTitle.Format(_L("SERVER, UTF8 SQL strings, non-secure, encoding: \"%S\", page size: %d\r\n"),
- TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize);
- TheTest.Printf(TheTestTitle);
+ TheTestTitle.Format(_L("SERVER, sql:UTF8, dbencoding:%S, non-secure"),
+ TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8);
PerformanceTest<HBufC8, TPtrC8, TDesC8, ENonSecureDb>(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8());
- TheTestTitle.Format(_L("SERVER, UTF8 SQL strings, non-secure, update test (without parameters), encoding: \"%S\", page size: %d\r\n"),
- TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize);
- TheTest.Printf(TheTestTitle);
+ TheTestTitle.Format(_L("SERVER, sql:UTF8, dbencoding:%S, non-secure, update without parameters"),
+ TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8);
UpdateWPTest<TBuf8<200>, TDesC8, ENonSecureDb>(TheNonSecureDbName, KUpdateSql2_8());
- TheTestTitle.Format(_L("SERVER, UTF8 SQL strings, secure, encoding: \"%S\", page size: %d\r\n"),
- TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize);
- TheTest.Printf(TheTestTitle);
+ TheTestTitle.Format(_L("SERVER, sql:UTF8, dbencoding:%S, secure"),
+ TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8);
PerformanceTest<HBufC8, TPtrC8, TDesC8, ESecureDb>(TheSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8());
- TheTest.Printf(_L("SQLITE, UTF8 encoded database, UTF8 SQL strings\r\n"));
+ TheTestTitle.Copy(_L("SQLITE, sql:UTF8, dbencoding:UTF8"));
PerformanceTest2<TCmdLineParams::EDbUtf8, HBufC8, TPtrC8, TDesC8>(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8());
- TheTest.Printf(_L("SQLITE, UTF8 encoded database, UTF8 SQL strings, update test (without parameters)\r\n"));
+ TheTestTitle.Copy(_L("SQLITE, sql:UTF8, dbencoding:UTF8, update without parameters"));
UpdateWPTest2<TDesC8>(TheNonSecureDbName, KUpdateSql2_8());
- TheTest.Printf(_L("SQLITE, UTF16 encoded database, UTF8 SQL strings\r\n"));
+ TheTestTitle.Copy(_L("SQLITE, sql:UTF8, dbencoding:UTF16"));
PerformanceTest2<TCmdLineParams::EDbUtf16, HBufC8, TPtrC8, TDesC8>(TheNonSecureDbName, KCommitStr8(), KUpdateSql8(), KSelectSql8(), KDeleteSql8());
- TheTestTitle.Format(_L("SERVER, UTF16 SQL strings, non-secure, encoding: \"%S\", page size: %d\r\n"),
- TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize);
- TheTest.Printf(TheTestTitle);
+ TheTestTitle.Format(_L("SERVER, sql:UTF16, dbencoding:%S, non-secure"),
+ TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8);
PerformanceTest<HBufC16, TPtrC16, TDesC16, ENonSecureDb>(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16());
- TheTestTitle.Format(_L("SERVER, UTF16 SQL strings, non-secure, update test (without parameters), encoding: \"%S\", page size: %d\r\n"),
- TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize);
- TheTest.Printf(TheTestTitle);
+ TheTestTitle.Format(_L("SERVER, sql:UTF16, dbencoding:%S, non-secure, update without parameters"),
+ TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8);
UpdateWPTest<TBuf16<200>, TDesC16, ENonSecureDb>(TheNonSecureDbName, KUpdateSql2_16());
- TheTestTitle.Format(_L("SERVER, UTF16 SQL strings, secure, encoding: \"%S\", page size: %d\r\n"),
- TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8, TheCmdLineParams.iPageSize);
- TheTest.Printf(TheTestTitle);
+ TheTestTitle.Format(_L("SERVER, sql:UTF16, dbencoding:%S, secure"),
+ TheCmdLineParams.iDbEncoding == TCmdLineParams::EDbUtf16 ? &KUtf16 : &KUtf8);
PerformanceTest<HBufC16, TPtrC16, TDesC16, ESecureDb>(TheSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16());
- TheTest.Printf(_L("SQLITE, UTF8 encoded database, UTF16 SQL strings\r\n"));
+ TheTestTitle.Copy(_L("SQLITE, sql:UTF16, dbencoding:UTF8"));
PerformanceTest2<TCmdLineParams::EDbUtf8, HBufC16, TPtrC16, TDesC16>(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16());
- TheTest.Printf(_L("SQLITE, UTF16 encoded database, UTF16 SQL strings\r\n"));
+ TheTestTitle.Copy(_L("SQLITE, sql:UTF16, dbencoding:UTF16"));
PerformanceTest2<TCmdLineParams::EDbUtf16, HBufC16, TPtrC16, TDesC16>(TheNonSecureDbName, KCommitStr16(), KUpdateSql16(), KSelectSql16(), KDeleteSql16());
- TheTest.Printf(_L("SQLITE, UTF16 encoded database, UTF16 SQL strings, update test (without parameters)\r\n"));
+ TheTestTitle.Copy(_L("SQLITE, sql:UTF16, dbencoding:UTF16, update without parameters"));
UpdateWPTest2<TDesC16>(TheNonSecureDbName, KUpdateSql2_16());
- TheTest.Printf(_L("Accessing column value by index or by name\r\n"));
+ TheTestTitle.Copy(_L("Accessing column value by index or by name"));
ColumnValueAccessTest();
- TheTest.Printf(_L("Retrieving data from UTF8 Database using SELECT LIKE statements\r\n"));
+ TheTestTitle.Copy(_L("Retrieving data from UTF8 Database using SELECT LIKE statements"));
SelectLikeQueryPerfTest();
}