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 |