persistentstorage/sql/TEST/t_sqlfserr.cpp
branchRCL_3
changeset 12 6b6fd149daa2
parent 11 211563e4b919
equal deleted inserted replaced
11:211563e4b919 12:6b6fd149daa2
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
   163 	TEST2(err, KErrNone);
   163 	TEST2(err, KErrNone);
   164 	err = TheDb.Exec(_L("CREATE TABLE A(Id INTEGER,Name TEXT)"));
   164 	err = TheDb.Exec(_L("CREATE TABLE A(Id INTEGER,Name TEXT)"));
   165 	TEST(err >= 0);
   165 	TEST(err >= 0);
   166 	TheDb.Close();
   166 	TheDb.Close();
   167 	err = KErrNotFound;
   167 	err = KErrNotFound;
   168 	for(TInt cnt=1;err<KErrNone;++cnt)
   168 	for(TInt cnt=0;err<KErrNone;++cnt)
   169 		{
   169 		{
   170 		TheTest.Printf(_L("%d \r"), cnt);		
   170 		TheTest.Printf(_L("%d \r"), cnt);		
   171 		for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   171 		for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   172 			{
   172 			{
   173 			//Preprocessing
   173 			//Preprocessing
   223 	TEST2(err, KErrNone);
   223 	TEST2(err, KErrNone);
   224 	err = TheDb.Exec(_L("CREATE TABLE A(Id INTEGER,Name TEXT)"));
   224 	err = TheDb.Exec(_L("CREATE TABLE A(Id INTEGER,Name TEXT)"));
   225 	TEST(err >= 0);
   225 	TEST(err >= 0);
   226 	TheDb.Close();
   226 	TheDb.Close();
   227 	err = KErrNotFound;
   227 	err = KErrNotFound;
   228 	for(TInt cnt=1;err<KErrNone;++cnt)
   228 	for(TInt cnt=0;err<KErrNone;++cnt)
   229 		{
   229 		{
   230 		TheTest.Printf(_L("%d \r"), cnt);		
   230 		TheTest.Printf(_L("%d \r"), cnt);		
   231 		for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   231 		for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   232 			{
   232 			{
   233 			//Preprocessing
   233 			//Preprocessing
   332     DoCreateTestDatabases(dbName, KDbNameCnt);
   332     DoCreateTestDatabases(dbName, KDbNameCnt);
   333     for(TInt k=0;k<KDbNameCnt;++k)
   333     for(TInt k=0;k<KDbNameCnt;++k)
   334         {	
   334         {	
   335         TheTest.Printf(_L("Database: \"%S\"\r\n"), &dbName[k]);       
   335         TheTest.Printf(_L("Database: \"%S\"\r\n"), &dbName[k]);       
   336         TInt err = KErrNotFound;
   336         TInt err = KErrNotFound;
   337         for(TInt cnt=1;err<KErrNone;++cnt)
   337         for(TInt cnt=0;err<KErrNone;++cnt)
   338             {		
   338             {		
   339             TheTest.Printf(_L("%d \r"), cnt);		
   339             TheTest.Printf(_L("%d \r"), cnt);		
   340             for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   340             for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   341                 {
   341                 {
   342                 (void)TheFs.SetErrorCondition(fsError, cnt);
   342                 (void)TheFs.SetErrorCondition(fsError, cnt);
   388 	const TInt KDbNameCnt = sizeof(dbName) / sizeof(dbName[0]);
   388 	const TInt KDbNameCnt = sizeof(dbName) / sizeof(dbName[0]);
   389 	for(TInt k=0;k<KDbNameCnt;++k)
   389 	for(TInt k=0;k<KDbNameCnt;++k)
   390 	    {
   390 	    {
   391         TheTest.Printf(_L("Database: \"%S\"\r\n"), &dbName[k]);       
   391         TheTest.Printf(_L("Database: \"%S\"\r\n"), &dbName[k]);       
   392         TInt err = -1;
   392         TInt err = -1;
   393         for(TInt cnt=1;err<KErrNone;++cnt)
   393         for(TInt cnt=0;err<KErrNone;++cnt)
   394             {		
   394             {		
   395             TheTest.Printf(_L("%d \r"), cnt);		
   395             TheTest.Printf(_L("%d \r"), cnt);		
   396             for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   396             for (TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   397                 {
   397                 {
   398                 //Ideally, the database should be deleted by the SQL server, if RSqlDatabase::Create() fails.
   398                 //Ideally, the database should be deleted by the SQL server, if RSqlDatabase::Create() fails.
   440     DoCreateTestDatabases(dbName, KDbNameCnt);
   440     DoCreateTestDatabases(dbName, KDbNameCnt);
   441     for(TInt k=1;k<KDbNameCnt;++k)
   441     for(TInt k=1;k<KDbNameCnt;++k)
   442         {
   442         {
   443         TheTest.Printf(_L("Database: \"%S\"\r\n"), &dbName[k]);       
   443         TheTest.Printf(_L("Database: \"%S\"\r\n"), &dbName[k]);       
   444         TInt err = KErrGeneral;
   444         TInt err = KErrGeneral;
   445         for(TInt cnt=1;err<KErrNone;++cnt)
   445         for(TInt cnt=0;err<KErrNone;++cnt)
   446             {
   446             {
   447             TheTest.Printf(_L("%d \r"), cnt);       
   447             TheTest.Printf(_L("%d \r"), cnt);       
   448             for(TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   448             for(TInt fsError=KErrNotFound;fsError>=KErrDied;--fsError)
   449                 {
   449                 {
   450                 err = TheDb.Open(KTestDbName);
   450                 err = TheDb.Open(KTestDbName);
   514 	TEST(err >= 0);
   514 	TEST(err >= 0);
   515 	err = TheDb.Exec(_L("INSERT INTO A(Id,Name) VALUES(1,'Name')"));
   515 	err = TheDb.Exec(_L("INSERT INTO A(Id,Name) VALUES(1,'Name')"));
   516 	TEST2(err, 1);
   516 	TEST2(err, 1);
   517 	TheDb.Close();
   517 	TheDb.Close();
   518 	err = -1;
   518 	err = -1;
   519 	for(TInt cnt=1;err<KErrNone;++cnt)
   519 	for(TInt cnt=0;err<KErrNone;++cnt)
   520 		{		
   520 		{		
   521 		TheTest.Printf(_L("%d \r"), cnt);		
   521 		TheTest.Printf(_L("%d \r"), cnt);		
   522 		err = TheDb.Open(KTestDbName);
   522 		err = TheDb.Open(KTestDbName);
   523 		TEST2(err, KErrNone);
   523 		TEST2(err, KErrNone);
   524 		RSqlStatement stmt;
   524 		RSqlStatement stmt;
   579 	TEST(err >= 0);
   579 	TEST(err >= 0);
   580 	err = TheDb.Exec(_L("INSERT INTO A(Id,Name) VALUES(1,'Name')"));
   580 	err = TheDb.Exec(_L("INSERT INTO A(Id,Name) VALUES(1,'Name')"));
   581 	TEST2(err, 1);
   581 	TEST2(err, 1);
   582 	TheDb.Close();
   582 	TheDb.Close();
   583 	err = -1;
   583 	err = -1;
   584 	for(TInt cnt=1;err<KErrNone;++cnt)
   584 	for(TInt cnt=0;err<KErrNone;++cnt)
   585 		{		
   585 		{		
   586 		TheTest.Printf(_L("%d \r"), cnt);		
   586 		TheTest.Printf(_L("%d \r"), cnt);		
   587 		err = TheDb.Open(KTestDbName);
   587 		err = TheDb.Open(KTestDbName);
   588 		TEST2(err, KErrNone);
   588 		TEST2(err, KErrNone);
   589 		RSqlStatement stmt;
   589 		RSqlStatement stmt;
   797 	{
   797 	{
   798 	TheTest.Printf(_L("Update 1 record in a file I/o simulation loop\r\n"));		
   798 	TheTest.Printf(_L("Update 1 record in a file I/o simulation loop\r\n"));		
   799 	TInt rc = -1;
   799 	TInt rc = -1;
   800 	TBuf8<KMaxFileName + 1> dbFileName8;
   800 	TBuf8<KMaxFileName + 1> dbFileName8;
   801 	dbFileName8.Copy(TheRmvMediaDbFileName);
   801 	dbFileName8.Copy(TheRmvMediaDbFileName);
   802 	for(TInt cnt=1;rc!=SQLITE_OK;++cnt)
   802 	for(TInt cnt=0;rc!=SQLITE_OK;++cnt)
   803 		{		
   803 		{		
   804 		TheTest.Printf(_L("%d \r"), cnt);		
   804 		TheTest.Printf(_L("%d \r"), cnt);		
   805 		sqlite3* dbHandle = NULL;
   805 		sqlite3* dbHandle = NULL;
   806 		rc = sqlite3_open((const char*)dbFileName8.PtrZ(), &dbHandle);
   806 		rc = sqlite3_open((const char*)dbFileName8.PtrZ(), &dbHandle);
   807 		SQLITE_TEST(dbHandle, rc, SQLITE_OK);
   807 		SQLITE_TEST(dbHandle, rc, SQLITE_OK);
   898 	TEST(size1.iSize > 0);
   898 	TEST(size1.iSize > 0);
   899 	TEST2(size1.iFree, 0);
   899 	TEST2(size1.iFree, 0);
   900 	TheDb.Close();
   900 	TheDb.Close();
   901 	//"File I/O" error simulation loop
   901 	//"File I/O" error simulation loop
   902 	err = KErrCorrupt;
   902 	err = KErrCorrupt;
   903 	for(TInt cnt=1;err<KErrNone;++cnt)
   903 	for(TInt cnt=0;err<KErrNone;++cnt)
   904 		{
   904 		{
   905 		TheTest.Printf(_L("%d \r"), cnt);		
   905 		TheTest.Printf(_L("%d \r"), cnt);		
   906 		TEST2(TheDb.Open(KTestDbName), KErrNone);
   906 		TEST2(TheDb.Open(KTestDbName), KErrNone);
   907 		(void)TheFs.SetErrorCondition(KErrCorrupt, cnt);
   907 		(void)TheFs.SetErrorCondition(KErrCorrupt, cnt);
   908 		RSqlDatabase::TSize size2 = {-1, -1};
   908 		RSqlDatabase::TSize size2 = {-1, -1};
   981 	TheDb.Close();
   981 	TheDb.Close();
   982 	TEST(size.iSize > 0);
   982 	TEST(size.iSize > 0);
   983 	TEST(size.iFree > 0);
   983 	TEST(size.iFree > 0);
   984 	//"File I/O" error simulation loop
   984 	//"File I/O" error simulation loop
   985 	err = KErrCorrupt;
   985 	err = KErrCorrupt;
   986 	for(TInt cnt=1;err<KErrNone;++cnt)
   986 	for(TInt cnt=0;err<KErrNone;++cnt)
   987 		{
   987 		{
   988 		TheTest.Printf(_L("%d \r"), cnt);		
   988 		TheTest.Printf(_L("%d \r"), cnt);		
   989 		TEST2(TheDb.Open(KTestDbName), KErrNone);
   989 		TEST2(TheDb.Open(KTestDbName), KErrNone);
   990 		(void)TheFs.SetErrorCondition(KErrCorrupt, cnt);
   990 		(void)TheFs.SetErrorCondition(KErrCorrupt, cnt);
   991 		err = TheDb.Compact(RSqlDatabase::EMaxCompaction);
   991 		err = TheDb.Compact(RSqlDatabase::EMaxCompaction);
  1071 	err = TheDb.Exec(sql);
  1071 	err = TheDb.Exec(sql);
  1072 	TEST2(err, 1);
  1072 	TEST2(err, 1);
  1073 	TheDb.Close();
  1073 	TheDb.Close();
  1074 	
  1074 	
  1075 	err = KErrCorrupt;
  1075 	err = KErrCorrupt;
  1076 	for(TInt cnt=1;err<KErrNone;++cnt)
  1076 	for(TInt cnt=0;err<KErrNone;++cnt)
  1077 		{
  1077 		{
  1078 		TheTest.Printf(_L("%d \r"), cnt);		
  1078 		TheTest.Printf(_L("%d \r"), cnt);		
  1079 		TEST2(TheDb.Open(KTestDbName), KErrNone);
  1079 		TEST2(TheDb.Open(KTestDbName), KErrNone);
  1080 		if(aAttachDb)
  1080 		if(aAttachDb)
  1081 			{
  1081 			{
  1170 	HBufC8* buf = HBufC8::New(KBlobSize);
  1170 	HBufC8* buf = HBufC8::New(KBlobSize);
  1171 	TEST(buf != NULL);
  1171 	TEST(buf != NULL);
  1172 	TPtr8 bufptr = buf->Des();
  1172 	TPtr8 bufptr = buf->Des();
  1173 	
  1173 	
  1174 	err = KErrCorrupt;
  1174 	err = KErrCorrupt;
  1175 	for(TInt cnt=1;err<KErrNone;++cnt)
  1175 	for(TInt cnt=0;err<KErrNone;++cnt)
  1176 		{
  1176 		{
  1177 		TheTest.Printf(_L("%d \r"), cnt);		
  1177 		TheTest.Printf(_L("%d \r"), cnt);		
  1178 		TEST2(TheDb.Open(KTestDbName), KErrNone);
  1178 		TEST2(TheDb.Open(KTestDbName), KErrNone);
  1179 		if(aAttachDb)
  1179 		if(aAttachDb)
  1180 			{
  1180 			{