diff -r 7d4490026038 -r 44f437012c90 persistentstorage/dbms/tdbms/t_dbperf1.cpp --- a/persistentstorage/dbms/tdbms/t_dbperf1.cpp Mon Sep 27 11:59:56 2010 +0100 +++ b/persistentstorage/dbms/tdbms/t_dbperf1.cpp Tue Oct 19 16:26:13 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -18,6 +18,7 @@ #include #include #include +#include "t_dbcmdlineutil.h" /////////////////////////////////////////////////////////////////////////////////////// @@ -52,6 +53,12 @@ ECompactAtEnd }; +TCmdLineParams TheCmdLineParams; +RFile TheLogFile; +TBuf<250> TheLogLine; +TBuf8<250> TheLogLine8; +TBuf<200> TheTestTitle; + /////////////////////////////////////////////////////////////////////////////////////// void TestEnvDestroy() @@ -59,6 +66,11 @@ TheDbs.Close(); TheFs.Delete(TheNonSecureDbName2); TheFs.Delete(TheNonSecureDbName); + if(TheCmdLineParams.iLogFileName.Length() > 0) + { + (void)TheLogFile.Flush(); + TheLogFile.Close(); + } TheFs.Close(); } @@ -70,7 +82,7 @@ if(!aValue) { TestEnvDestroy(); - TheTest.Printf(_L("*** Line %d\r\n"), aLine); + TheTest.Printf(_L("*** Line %d. Expression evaluated to false\r\n"), aLine); TheTest(EFalse, aLine); } } @@ -95,6 +107,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); + } err = TheDbs.Connect(); TEST2(err, KErrNone); @@ -157,36 +176,15 @@ } 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) - { - RFile file; - TInt err = file.Open(TheFs, aFileName, EFileRead); - TEST2(err, KErrNone); - TInt size = 0; - err = file.Size(size); - TEST2(err, KErrNone); - TheTest.Printf(_L("####FileSize: %d\r\n"), size); - file.Close(); - } - -void PrintString(const TDesC& aStr) - { - TheTest.Printf(_L("Str begin~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n")); - TPtrC ptr(aStr); - while(ptr.Length() > 0) - { - TPtrC ptr2; - TInt len = Min(ptr.Length(), 60); - ptr2.Set(ptr.Left(len)); - TheTest.Printf(_L("%S\r\n"), &ptr2); - ptr.Set(ptr.Mid(len)); - } - TheTest.Printf(_L("Str end~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n")); - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////// DBMS SERVER performance tests ////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -398,18 +396,6 @@ //Executes SQL script void ExecuteSqlScript(RDbDatabase& aDb, const TDesC& aScriptFileName, TCompactDbOption aCompactDbOpt) { - if(aCompactDbOpt == ECompactAfterCommit) - { - TheTest.Printf(_L("===Execute DB script: Compact after COMMIT\r\n")); - } - else if(aCompactDbOpt == ECompactAtEnd) - { - TheTest.Printf(_L("===Execute DB script: Compact at end\r\n")); - } - else - { - TheTest.Printf(_L("===Execute DB script: No compaction\r\n")); - } HBufC* fullDbScript = ReadSqlScript(aScriptFileName); TUint32 start = User::FastCounter(); TPtrC ptr(fullDbScript->Des()); @@ -426,10 +412,6 @@ TheTest.Printf(_L("###ERROR 'Out of memory'! The test cannot be completed!\r\n")); return; } - if(rc != 1) - { - PrintString(sql); - } TEST2(rc, 1); if((stmtCnt % 200) == 0) //~16 transactions (~3270 statements total) { @@ -455,7 +437,6 @@ TUint32 end = User::FastCounter(); PrintStats(start, end); delete fullDbScript; - TheTest.Printf(_L("###Processed records: %d\r\n"), stmtCnt); } /////////////////////////////////////////////////////////////////////////////////////// @@ -463,7 +444,6 @@ //"INSERT" test function void InsertTest(TTestType aTestType, const TDesC& aDbFileName, TCompactDbOption aCompactDbOpt) { - TheTest.Printf(_L("\"Insert\" test\r\n")); RDbDatabase db = TDbHelper::Open(aTestType, aDbFileName); ExecuteSqlScript(db, KFillDbScript, aCompactDbOpt); RDbTable tbl; @@ -480,23 +460,6 @@ //"UPDATE" test function void UpdateTest(TTestType aTestType, const TDesC& aDbFileName, const TDesC& aUpdateSql, TCompactDbOption aCompactDbOpt) { - if(aCompactDbOpt == ECompactAfterEvery10Rec) - { - TheTest.Printf(_L("===Update: Compact after every 10 records\r\n")); - } - else if(aCompactDbOpt == ECompactAfterEveryUpd) - { - TheTest.Printf(_L("===Update: Compact after every update\r\n")); - } - else if(aCompactDbOpt == ECompactAtEnd) - { - TheTest.Printf(_L("===Update: Compact at end\r\n")); - } - else - { - TheTest.Printf(_L("===Update: No compaction\r\n")); - } - TheTest.Printf(_L("\"Update\" test\r\n")); RDbDatabase db = TDbHelper::Open(aTestType, aDbFileName); TUint32 start = User::FastCounter(); @@ -505,10 +468,6 @@ TBuf<200> sql; sql.Format(aUpdateSql, &KFirstName, id, &KLastName, id, &KCompanyName, id, id); TInt rc = db.Execute(sql); - if(rc != 1) - { - PrintString(sql); - } TEST2(rc, 1); if(aCompactDbOpt == ECompactAfterEveryUpd || (aCompactDbOpt == ECompactAfterEvery10Rec && (updateOpCnt % 10) == 0)) { @@ -529,7 +488,6 @@ //"SELECT" test function void SelectTestL(TTestType aTestType, const TDesC& aDbFileName, const TDesC& aSelectSql) { - TheTest.Printf(_L("\"Select\" test\r\n")); RDbDatabase db = TDbHelper::Open(aTestType, aDbFileName); TDbQuery query(aSelectSql); RDbView view; @@ -564,15 +522,6 @@ //"DELETE" test function void DeleteTest(TTestType aTestType, const TDesC& aDbFileName, const TDesC& aDeleteSql, TCompactDbOption aCompactDbOpt) { - if(aCompactDbOpt == ECompactAtEnd) - { - TheTest.Printf(_L("===Delete: Compact at end\r\n")); - } - else - { - TheTest.Printf(_L("===Delete: No compaction\r\n")); - } - TheTest.Printf(_L("\"Delete\" test\r\n")); RDbDatabase db = TDbHelper::Open(aTestType, aDbFileName); TUint32 start = User::FastCounter(); TInt rc = db.Execute(aDeleteSql); @@ -609,128 +558,92 @@ CleanupStack::PushL(fm); //==================================== CLIENT ========================================================== - TheTest.Printf(_L("DBMS, insert, UTF16 SQL strings, non-secure db, client, no db compaction\r\n")); + TheTestTitle.Copy(_L("DBMS, insert, UTF16 SQL strings, non-secure db, client, no db compaction")); TDbHelper::CreateL(TheNonSecureDbName); InsertTest(EClientDbTest, TheNonSecureDbName, ENoCompaction); - PrintFileSize(TheNonSecureDbName); - TheTest.Printf(_L("DBMS, insert, UTF16 SQL strings, non-secure db, client, db compaction at end\r\n")); + TheTestTitle.Copy(_L("DBMS, insert, UTF16 SQL strings, non-secure db, client, db compaction at end")); TDbHelper::CreateL(TheNonSecureDbName); InsertTest(EClientDbTest, TheNonSecureDbName, ECompactAtEnd); - PrintFileSize(TheNonSecureDbName); - TheTest.Printf(_L("DBMS, insert, UTF16 SQL strings, non-secure db, client, db compaction after commit\r\n")); + TheTestTitle.Copy(_L("DBMS, insert, UTF16 SQL strings, non-secure db, client, db compaction after commit")); TDbHelper::CreateL(TheNonSecureDbName); InsertTest(EClientDbTest, TheNonSecureDbName, ECompactAfterCommit); - PrintFileSize(TheNonSecureDbName); TInt err = fm->Copy(TheNonSecureDbName, TheNonSecureDbName2); TEST2(err, KErrNone); - TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, client, no db compaction\r\n")); + TheTestTitle.Copy(_L("DBMS, update, UTF16 SQL strings, non-secure db, client, no db compaction")); UpdateTest(EClientDbTest, TheNonSecureDbName, KUpdateSql(), ENoCompaction); - PrintFileSize(TheNonSecureDbName); err = fm->Copy(TheNonSecureDbName2, TheNonSecureDbName); TEST2(err, KErrNone); - TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, client, db compaction at end\r\n")); + TheTestTitle.Copy(_L("DBMS, update, UTF16 SQL strings, non-secure db, client, db compaction at end")); UpdateTest(EClientDbTest, TheNonSecureDbName, KUpdateSql(), ECompactAtEnd); - PrintFileSize(TheNonSecureDbName); err = fm->Copy(TheNonSecureDbName2, TheNonSecureDbName); TEST2(err, KErrNone); - TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, client, db compaction after every 10 records\r\n")); + TheTestTitle.Copy(_L("DBMS, update, UTF16 SQL strings, non-secure db, client, db compaction after every 10 records")); UpdateTest(EClientDbTest, TheNonSecureDbName, KUpdateSql(), ECompactAfterEvery10Rec); - PrintFileSize(TheNonSecureDbName); -//L err = fm->Copy(TheNonSecureDbName2, TheNonSecureDbName); -//L TEST2(err, KErrNone); -//L TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, client, db compaction after every update\r\n")); -//L UpdateTest(EClientDbTest, TheNonSecureDbName, KUpdateSql(), ECompactAfterEveryUpd); -//L PrintFileSize(TheNonSecureDbName); - - TheTest.Printf(_L("DBMS, select, UTF16 SQL strings, non-secure db, client\r\n")); + TheTestTitle.Copy(_L("DBMS, select, UTF16 SQL strings, non-secure db, client")); SelectTestL(EClientDbTest, TheNonSecureDbName, KSelectSql()); - TheTest.Printf(_L("DBMS, delete, UTF16 SQL strings, non-secure db, client\r\n")); + TheTestTitle.Copy(_L("DBMS, delete, UTF16 SQL strings, non-secure db, client")); DeleteTest(EClientDbTest, TheNonSecureDbName, KDeleteSql(), ECompactAtEnd); - PrintFileSize(TheNonSecureDbName); //==================================== SERVER ========================================================== - TheTest.Printf(_L("DBMS, insert, UTF16 SQL strings, non-secure db, server, no db compaction\r\n")); + TheTestTitle.Copy(_L("DBMS, insert, UTF16 SQL strings, non-secure db, server, no db compaction")); TDbHelper::CreateL(TheNonSecureDbName); InsertTest(EServerDbTest, TheNonSecureDbName, ENoCompaction); - PrintFileSize(TheNonSecureDbName); - TheTest.Printf(_L("DBMS, insert, UTF16 SQL strings, non-secure db, server, db compaction at end\r\n")); + TheTestTitle.Copy(_L("DBMS, insert, UTF16 SQL strings, non-secure db, server, db compaction at end")); TDbHelper::CreateL(TheNonSecureDbName); InsertTest(EServerDbTest, TheNonSecureDbName, ECompactAtEnd); - PrintFileSize(TheNonSecureDbName); - TheTest.Printf(_L("DBMS, insert, UTF16 SQL strings, non-secure db, server, db compaction after commit\r\n")); + TheTestTitle.Copy(_L("DBMS, insert, UTF16 SQL strings, non-secure db, server, db compaction after commit")); TDbHelper::CreateL(TheNonSecureDbName); InsertTest(EServerDbTest, TheNonSecureDbName, ECompactAfterCommit); - PrintFileSize(TheNonSecureDbName); err = fm->Copy(TheNonSecureDbName, TheNonSecureDbName2); TEST2(err, KErrNone); - TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, server, no db compaction\r\n")); + TheTestTitle.Copy(_L("DBMS, update, UTF16 SQL strings, non-secure db, server, no db compaction")); UpdateTest(EServerDbTest, TheNonSecureDbName, KUpdateSql(), ENoCompaction); - PrintFileSize(TheNonSecureDbName); err = fm->Copy(TheNonSecureDbName2, TheNonSecureDbName); TEST2(err, KErrNone); - TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, server, db compaction at end\r\n")); + TheTestTitle.Copy(_L("DBMS, update, UTF16 SQL strings, non-secure db, server, db compaction at end")); UpdateTest(EServerDbTest, TheNonSecureDbName, KUpdateSql(), ECompactAtEnd); - PrintFileSize(TheNonSecureDbName); err = fm->Copy(TheNonSecureDbName2, TheNonSecureDbName); TEST2(err, KErrNone); - TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, server, db compaction after every 10 records\r\n")); + TheTestTitle.Copy(_L("DBMS, update, UTF16 SQL strings, non-secure db, server, db compaction after every 10 records")); UpdateTest(EServerDbTest, TheNonSecureDbName, KUpdateSql(), ECompactAfterEvery10Rec); - PrintFileSize(TheNonSecureDbName); -//L err = fm->Copy(TheNonSecureDbName2, TheNonSecureDbName); -//L TEST2(err, KErrNone); - -//L TheTest.Printf(_L("DBMS, update, UTF16 SQL strings, non-secure db, server, db compaction after every update\r\n")); -//L UpdateTest(EServerDbTest, TheNonSecureDbName, KUpdateSql(), ECompactAfterEveryUpd); -//L PrintFileSize(TheNonSecureDbName); - TheTest.Printf(_L("DBMS, select, UTF16 SQL strings, non-secure db, server\r\n")); + TheTestTitle.Copy(_L("DBMS, select, UTF16 SQL strings, non-secure db, server")); SelectTestL(EServerDbTest, TheNonSecureDbName, KSelectSql()); - TheTest.Printf(_L("DBMS, delete, UTF16 SQL strings, non-secure db, server\r\n")); + TheTestTitle.Copy(_L("DBMS, delete, UTF16 SQL strings, non-secure db, server")); DeleteTest(EServerDbTest, TheNonSecureDbName, KDeleteSql(), ECompactAtEnd); - PrintFileSize(TheNonSecureDbName); //====================================================================================================== CleanupStack::PopAndDestroy(fm); } -//Usage: "t_dbperf1 [:]" - TInt E32Main() { TheTest.Title(); CTrapCleanup* tc = CTrapCleanup::New(); - //Construct test database file names, using the passed as an optional argument drive letter - TFileName fname; - TParse parse; - User::CommandLine(fname); - + GetCmdLineParams(TheTest, _L("t_dbperf1"), TheCmdLineParams); _LIT(KNonSecureDbName, "c:\\test\\t_dbperf1_1.db"); - parse.Set(fname, &KNonSecureDbName, 0); - const TDesC& dbFilePath1 = parse.FullName(); - TheNonSecureDbName.Copy(dbFilePath1); - + PrepareDbName(KNonSecureDbName, TheCmdLineParams.iDriveName, TheNonSecureDbName); _LIT(KNonSecureDbName2, "c:\\test\\t_dbperf1_2.db"); - parse.Set(fname, &KNonSecureDbName2, 0); - const TDesC& dbFilePath2 = parse.FullName(); - TheNonSecureDbName2.Copy(dbFilePath2); + PrepareDbName(KNonSecureDbName2, TheCmdLineParams.iDriveName, TheNonSecureDbName2); + TheTest.Printf(_L("==Databases: %S, %S\r\n"), &TheNonSecureDbName, &TheNonSecureDbName2); __UHEAP_MARK; @@ -740,12 +653,13 @@ TEST2(err, KErrNone); __UHEAP_MARKEND; + + User::Heap().Check(); TheTest.End(); TheTest.Close(); delete tc; - User::Heap().Check(); return KErrNone; }