persistentstorage/sql/TEST/t_sqloom5.cpp
branchRCL_3
changeset 10 31a8f755b7fe
parent 9 667e88a979d7
child 11 211563e4b919
equal deleted inserted replaced
9:667e88a979d7 10:31a8f755b7fe
   185         }
   185         }
   186 
   186 
   187     delete TheServer;
   187     delete TheServer;
   188     TheServer = NULL;
   188     TheServer = NULL;
   189     
   189     
   190     if(err != KErrNoMemory)
   190     TEST2(err, KErrNone);   
   191         {
       
   192         TEST2(err, KErrNone);   
       
   193         }
       
   194     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::CreateL() OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   191     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::CreateL() OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   195     }
   192     }
   196 
   193 
   197 /**
   194 /**
   198 @SYMTestCaseID          PDS-SQL-UT-4168
   195 @SYMTestCaseID          PDS-SQL-UT-4168
   233         }
   230         }
   234     
   231     
   235     delete TheServer;
   232     delete TheServer;
   236     TheServer = NULL;
   233     TheServer = NULL;
   237     
   234     
   238     if(err != KErrNoMemory)
   235     TEST2(err, KErrNone);   
   239         {
       
   240         TEST2(err, KErrNone);   
       
   241         }
       
   242     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() [non-secure db] OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   236     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() [non-secure db] OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   243     }
   237     }
   244 
   238 
   245 /**
   239 /**
   246 @SYMTestCaseID          PDS-SQL-UT-4169
   240 @SYMTestCaseID          PDS-SQL-UT-4169
   285         }
   279         }
   286 
   280 
   287     delete TheServer;
   281     delete TheServer;
   288     TheServer = NULL;
   282     TheServer = NULL;
   289     
   283     
   290     if(err != KErrNoMemory)
   284     TEST2(err, KErrNone);   
   291         {
       
   292         TEST2(err, KErrNone);   
       
   293         }
       
   294     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::CreateSecureL() OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   285     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::CreateSecureL() OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   295     }
   286     }
   296 
   287 
   297 /**
   288 /**
   298 @SYMTestCaseID          PDS-SQL-UT-4170
   289 @SYMTestCaseID          PDS-SQL-UT-4170
   333         }
   324         }
   334     
   325     
   335     delete TheServer;
   326     delete TheServer;
   336     TheServer = NULL;
   327     TheServer = NULL;
   337     
   328     
   338     if(err != KErrNoMemory)
   329     TEST2(err, KErrNone);   
   339         {
       
   340         TEST2(err, KErrNone);   
       
   341         }
       
   342     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() [secure db] OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   330     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() [secure db] OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   343     }
   331     }
   344 
   332 
   345 /////////////////////////////////////////////////////////////
   333 /////////////////////////////////////////////////////////////
   346 
   334 
   513         }
   501         }
   514     
   502     
   515     delete TheServer;
   503     delete TheServer;
   516     TheServer = NULL;
   504     TheServer = NULL;
   517     
   505     
   518     if(err != KErrNoMemory)
   506     (void)TheFs.Delete(KDbFile4);
       
   507     (void)TheFs.Delete(KDbFile3);
       
   508     
       
   509     TEST2(err, KErrNone);   
       
   510     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::AttachDbL() OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
       
   511     }
       
   512 
       
   513 /**
       
   514 @SYMTestCaseID          PDS-SQL-UT-4172
       
   515 @SYMTestCaseDesc        CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::AttachDbL() OOM test.
       
   516 @SYMTestPriority        High
       
   517 @SYMTestActions         The test runs CSqlSrvDatabase::OpenL() and CSqlSrvDatabase::AttachDbL() in an OOM test.
       
   518                         Two secure databases are created and then, in an OOM loop, the test executes this sequence of
       
   519                         commands: open first database, attach the second database, detach the attached database,
       
   520                         close the first database. 
       
   521 @SYMTestExpectedResults Test must not fail
       
   522 @SYMDEF                 DEF144577, PDEF44845
       
   523 */  
       
   524 void OpenAttachDatabaseOomTest2()
       
   525     {
       
   526     TheServer = NULL; 
       
   527     TRAPD(err, TheServer = CreateSqlServerL());
       
   528     TEST2(err, KErrNone);
       
   529     
       
   530     CreateSecureTestDb(KDbFile3);
       
   531     CreateSecureTestDb(KDbFile4);
       
   532     
       
   533     TInt failingAllocationNo = 0;
       
   534     TheTest.Printf(_L("Iteration:\r\n"));
       
   535     
       
   536     RMessage2 msg;
       
   537     TSqlSrvFileData& fdata = TheServer->FileData();
       
   538     
       
   539     err = KErrNoMemory;
       
   540     while(err == KErrNoMemory)
   519         {
   541         {
   520         TEST2(err, KErrNone);   
   542         TheTest.Printf(_L(" %d"), ++failingAllocationNo);
   521         }
   543         OomPreStep(failingAllocationNo);
   522     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::AttachDbL() OOM test succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
   544         
       
   545         TRAP(err, fdata.SetL(msg, KDbFile3().Length(), 0, (const TDesC8*)&KDbFile3));
       
   546         if(err == KErrNone)
       
   547             {
       
   548             CSqlSrvDatabase* db = NULL;
       
   549             TRAP(err, db = CSqlSrvDatabase::OpenL(fdata));
       
   550             if(err == KErrNone)
       
   551                 {
       
   552                 TRAP(err, fdata.SetL(msg, KDbFile4().Length(), 0, (const TDesC8*)&KDbFile4));
       
   553                 if(err == KErrNone)
       
   554                     {
       
   555                     TRAP(err, db->AttachDbL(fdata, _L("db2")));
       
   556                     if(err == KErrNone)
       
   557                         {
       
   558                         TRAP(err, db->DetachDbL(_L("db2")));
       
   559                         }
       
   560                     }
       
   561                 delete db;
       
   562                 }
       
   563             }
       
   564         OomPostStep();
       
   565         }
       
   566     
       
   567     (void)TheFs.Delete(KDbFile4);
       
   568     (void)TheFs.Delete(KDbFile3);
       
   569     
       
   570     delete TheServer;
       
   571     TheServer = NULL;
       
   572      
       
   573     TEST2(err, KErrNone);   
       
   574     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::AttachDbL() OOM test 2 succeeded at heap failure rate of %d ===\r\n"), failingAllocationNo);
       
   575     }
       
   576 
       
   577 /**
       
   578 @SYMTestCaseID          PDS-SQL-UT-4173
       
   579 @SYMTestCaseDesc        CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::CreateSecureL() OOM test.
       
   580 @SYMTestPriority        High
       
   581 @SYMTestActions         The test runs CSqlSrvDatabase::OpenL() and CSqlSrvDatabase::CreateSecureL() in an OOM test.
       
   582                         The test creates a secure database then executes CSqlSrvDatabase::OpenL() in an OOM loop.
       
   583                         After that the database is deleted and the test executes CSqlSrvDatabase::CreateSecureL() in an OOM loop.
       
   584                         The purpose of the test is to check that the CSqlSrver maps are properly updated when
       
   585                         the database is closed.
       
   586 @SYMTestExpectedResults Test must not fail
       
   587 @SYMDEF                 DEF144577, PDEF44845
       
   588 */  
       
   589 void OpenCreateDatabaseOomTest()
       
   590     {
       
   591     TheServer = NULL; 
       
   592     TRAPD(err, TheServer = CreateSqlServerL());
       
   593     TEST2(err, KErrNone);
       
   594     
       
   595     (void)TheFs.Delete(KDbFile2);
       
   596     CreateSecureTestDb(KDbFile2);
       
   597     
       
   598     TheTest.Printf(_L("Iteration:\r\n"));
       
   599 
       
   600     //Open the database
       
   601     TInt failingAllocationNo = 0;
       
   602     err = KErrNoMemory;
       
   603     while(err == KErrNoMemory)
       
   604         {
       
   605         TheTest.Printf(_L(" %d"), ++failingAllocationNo);
       
   606         OomPreStep(failingAllocationNo);
       
   607         
       
   608         RMessage2 msg;
       
   609         TSqlSrvFileData& fdata = TheServer->FileData();
       
   610         TRAP(err, fdata.SetL(msg, KDbFile2().Length(), 0, (const TDesC8*)&KDbFile2));
       
   611         if(err == KErrNone)
       
   612             {
       
   613             CSqlSrvDatabase* db = NULL;
       
   614             TRAP(err, db = CSqlSrvDatabase::OpenL(fdata));
       
   615             if(err == KErrNone)
       
   616                 {
       
   617                 delete db;
       
   618                 }
       
   619             else
       
   620                 {
       
   621                 TEST(!db);
       
   622                 }
       
   623             }
       
   624         OomPostStep();
       
   625         }
       
   626     TEST2(err, KErrNone);   
       
   627     err = TheFs.Delete(KDbFile2);
       
   628     TEST2(err, KErrNone);   
       
   629     //Create the database
       
   630     TInt failingAllocationNo2 = 0;
       
   631     err = KErrNoMemory;
       
   632     while(err == KErrNoMemory)
       
   633         {
       
   634         TheTest.Printf(_L(" %d"), ++failingAllocationNo2);
       
   635         OomPreStep(failingAllocationNo2);
       
   636         RMessage2 msg;
       
   637         TSqlSrvFileData& fdata = TheServer->FileData();
       
   638         TRAP(err, fdata.SetL(msg, KDbFile2().Length(), 0, (const TDesC8*)&KDbFile2));
       
   639         if(err == KErrNone)
       
   640             {
       
   641             TSecurityPolicy defaultPolicy(TSecurityPolicy::EAlwaysPass);
       
   642             CSqlSecurityPolicy* policy = NULL;
       
   643             TRAP(err, policy = CSqlSecurityPolicy::NewL(defaultPolicy));
       
   644             if(err == KErrNone)
       
   645                 {
       
   646                 CSqlSrvDatabase* db = NULL;
       
   647                 TRAP(err, db = CSqlSrvDatabase::CreateSecureL(fdata, policy));
       
   648                 if(err == KErrNone)
       
   649                     {
       
   650                     delete db;
       
   651                     }
       
   652                 else
       
   653                     {
       
   654                     TEST(!db);
       
   655                     }
       
   656                 }
       
   657             }
       
   658         OomPostStep();
       
   659         }
       
   660     
       
   661     (void)TheFs.Delete(KDbFile2);
       
   662     
       
   663     delete TheServer;
       
   664     TheServer = NULL;
       
   665      
       
   666     TEST2(err, KErrNone);   
       
   667     TheTest.Printf(_L("\r\n===CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::CreateSecureL() OOM test succeeded at heap failure rate of %d ===\r\n"), 
       
   668                    failingAllocationNo + failingAllocationNo2);
   523     }
   669     }
   524 
   670 
   525 void DoTests()
   671 void DoTests()
   526 	{
   672 	{
   527 #ifndef _DEBUG
   673 #ifndef _DEBUG
   543     TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4170 CSqlSrvDatabase::OpenL() OOM unit test - secure database"));
   689     TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4170 CSqlSrvDatabase::OpenL() OOM unit test - secure database"));
   544     OpenSecureDatabaseOomTest();
   690     OpenSecureDatabaseOomTest();
   545     
   691     
   546     TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4171 CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::AttachDbL() OOM unit test"));
   692     TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4171 CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::AttachDbL() OOM unit test"));
   547     OpenAttachDatabaseOomTest();
   693     OpenAttachDatabaseOomTest();
   548     
   694 
       
   695     TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4172 CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::AttachDbL() OOM unit test - 2"));
       
   696     OpenAttachDatabaseOomTest2();
       
   697 
       
   698     TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4173 CSqlSrvDatabase::OpenL() & CSqlSrvDatabase::CreateL() OOM unit test"));
       
   699     OpenCreateDatabaseOomTest();
       
   700 
   549     delete scheduler;
   701     delete scheduler;
   550 #endif //_DEBUG    
   702 #endif //_DEBUG    
   551 	}
   703 	}
   552 
   704 
   553 TInt E32Main()
   705 TInt E32Main()