632 |
632 |
633 SetTestStepResult(EPass); |
633 SetTestStepResult(EPass); |
634 return TestStepResult(); |
634 return TestStepResult(); |
635 } |
635 } |
636 |
636 |
|
637 |
|
638 // Test step 31.5 |
|
639 // Using fixed async request slot pool and system free request pool connections |
|
640 // |
|
641 const TDesC& CSocketTest31_5::GetTestName() |
|
642 { |
|
643 _LIT(ret,"Test31.5"); |
|
644 return ret; |
|
645 } |
|
646 |
|
647 |
|
648 CSocketTest31_5::CSockReq* CSocketTest31_5::CSockReq::NewLC() |
|
649 { |
|
650 CSockReq* sockReq = new(ELeave) CSockReq; |
|
651 CleanupStack::PushL(sockReq); |
|
652 return sockReq; |
|
653 } |
|
654 |
|
655 CSocketTest31_5::CSockReq::~CSockReq() |
|
656 { |
|
657 TInt ret = iReq.Int(); |
|
658 iSock.Close(); |
|
659 if(ret == KRequestPending) |
|
660 { |
|
661 User::WaitForRequest(iReq); |
|
662 } |
|
663 } |
|
664 |
|
665 TInt CSocketTest31_5::MakePendingRequestL() |
|
666 { |
|
667 CSockReq* req = CSockReq::NewLC(); |
|
668 iSocks.AppendL(req); |
|
669 CleanupStack::Pop(req); |
|
670 |
|
671 TInt idx = iSocks.Count() - 1; |
|
672 TInt ret = req->iSock.Open(iSess, KDummyAddrFamily, KSockDatagram, KDummyOne); |
|
673 Logger().WriteFormat(_L("sock[%d].Open() returned %S"), idx, &EpocErrorToText(ret)); |
|
674 TESTL(KErrNone == ret); |
|
675 req->iSock.Read(req->iData, req->iReq); |
|
676 User::After(250 * 1000); // short delay to allow for almost-instant failure |
|
677 Logger().WriteFormat(_L("sock[%d].Read() status %S"), idx, &EpocErrorToText(req->iReq.Int())); |
|
678 return req->iReq.Int(); |
|
679 } |
|
680 |
|
681 enum TVerdict CSocketTest31_5::InternalDoTestStepL( void ) |
|
682 { |
|
683 TVerdict verdict = EPass; |
|
684 |
|
685 Logger().WriteFormat(_L("Test Purpose: Test bounded and unbounded (default) async request slot pool.")); |
|
686 |
|
687 Logger().WriteFormat(_L("Trying %d pending requests against default (unbounded pool) connection"), KESockDefaultMessageSlots + 1); |
|
688 TInt ret = iSess.Connect(); |
|
689 CleanupClosePushL(iSess); |
|
690 Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); |
|
691 TESTL(KErrNone == ret); |
|
692 for(TInt sockNum = 0; sockNum <= KESockDefaultMessageSlots; ++sockNum) |
|
693 { |
|
694 ret = MakePendingRequestL(); |
|
695 TESTL(ret == KRequestPending); |
|
696 } |
|
697 iSocks.ResetAndDestroy(); |
|
698 CleanupStack::PopAndDestroy(&iSess); |
|
699 |
|
700 Logger().WriteFormat(_L("Trying %d pending requests against old default (KESockDefaultMessageSlots pool) connection"), KESockDefaultMessageSlots + 1); |
|
701 ret = iSess.Connect(KESockDefaultMessageSlots); |
|
702 CleanupClosePushL(iSess); |
|
703 Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); |
|
704 TESTL(KErrNone == ret); |
|
705 for(TInt sockNum = 0; sockNum < KESockDefaultMessageSlots; ++sockNum) |
|
706 { |
|
707 ret = MakePendingRequestL(); |
|
708 TESTL(ret == KRequestPending); |
|
709 } |
|
710 ret = MakePendingRequestL(); |
|
711 TESTL(ret == KErrServerBusy); |
|
712 iSocks.ResetAndDestroy(); |
|
713 CleanupStack::PopAndDestroy(&iSess); |
|
714 |
|
715 SetTestStepResult(EPass); |
|
716 return TestStepResult(); |
|
717 } |
|
718 |