commsprocess/commsrootserverconfig/TE_rootserver/src/RootServerTestSection7.cpp
author hgs
Mon, 06 Sep 2010 13:49:23 +0100
changeset 72 ae47d0499bee
permissions -rw-r--r--
201033_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     2
// All rights reserved.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     7
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    10
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    11
// Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    12
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    13
// Description:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    14
// This contains RootServer Test cases from section 8
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    15
// 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    16
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    17
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    18
// EPOC includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    19
#include <e32base.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    20
#include <es_mbman.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    21
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    22
// Test system includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    23
//#include <networking/log.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    24
//#include <networking/teststep.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    25
//#include <networking/testsuite.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    26
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    27
#include "TestStepRootServer.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    28
#include "TestAsynchHandler.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    29
#include "RootServerTestSection7.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    30
#include "RootServerTest.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    31
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    32
// Test step 7.1 - OOM loop Test1 - Load, Enumerate, GetInfo
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    33
CRootServerTest7_1::CRootServerTest7_1(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    34
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    35
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    36
	SetTestStepName(_L("Test7.1"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    37
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    38
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    39
TVerdict CRootServerTest7_1::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    40
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    41
	INFO_PRINTF1(_L("Test Purpose: OOM loop test 1: Load, Enumerate, GetInfo"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    42
										SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    43
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    44
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    45
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    46
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    47
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    48
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    49
	TInt failure = 1000;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    50
							
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    51
		while(TestStepResult() == EPass)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    52
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    53
		iRootServerSuite->RootSess().__DbgFailNext(failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    54
		failure++;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    55
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    56
		TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    57
		TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    58
		DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    59
		startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    60
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    61
		asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    62
    	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    63
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    64
		if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    65
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    66
			INFO_PRINTF3(_L("TryLoad: %d with FailNext(%d)"), asynchHandler->iStatus.Int(), failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    67
if(asynchHandler->iStatus == KErrRSModuleAlreadyExist)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    68
	User::Leave(KErrRSModuleAlreadyExist);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    69
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    70
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    71
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    72
		TCFModuleName moduleName;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    73
		TRSIter position;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    74
		TInt ret = iRootServerSuite->RootSess().EnumerateModules(position, moduleName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    75
		if(ret != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    76
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    77
			INFO_PRINTF3(_L("EnumerateModules: %d with FailNext(%d)"), asynchHandler->iStatus.Int(), failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    78
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    79
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    80
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    81
		if(moduleName != KModule1)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    82
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    83
			INFO_PRINTF2(_L("EnumerateModules() returned KErrNone but wrong name: %S"), &moduleName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    84
			SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    85
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    86
			break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    87
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    88
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    89
		TRSModuleInfo info;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    90
		ret = iRootServerSuite->RootSess().GetModuleInfo(KModule1(), info);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    91
		if(ret != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    92
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    93
			INFO_PRINTF3(_L("GetModuleInfo: %d with FailNext(%d)"), asynchHandler->iStatus.Int(), failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    94
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    95
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    96
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    97
		if(info.iParams.iState != ERunning)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    98
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    99
			INFO_PRINTF2(_L("GetModuleInfo() returned KErrNone but wrong state: %d"), info.iParams.iState);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   100
			SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   101
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   102
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   103
		// everything worked;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   104
		INFO_PRINTF1(_L("OOM loop complete"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   105
		break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   106
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   107
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   108
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   109
	INFO_PRINTF1(_L("Resetting heap"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   110
	iRootServerSuite->RootSess().__DbgFailNext(-1);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   111
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   112
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   113
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   114
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   115
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   116
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   117
// Test step 7.2 - OOM loop Test2 - Unload, GetInfo
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   118
CRootServerTest7_2::CRootServerTest7_2(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   119
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   120
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   121
	SetTestStepName(_L("Test7.2"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   122
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   123
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   124
TVerdict CRootServerTest7_2::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   125
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   126
	INFO_PRINTF1(_L("Test Purpose: Heap loop Test2 - Unload, GetInfo"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   127
										SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   128
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   129
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   130
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   131
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   132
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   133
	INFO_PRINTF2(_L("01 Loading cpm: %S"), &KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   134
	LoadNormalModuleL(asynchHandler, KModule1);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   135
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   136
	TInt failure = 1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   137
						
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   138
	while(TestStepResult() == EPass)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   139
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   140
		iRootServerSuite->RootSess().__DbgFailNext(failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   141
		failure++;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   142
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   143
		asynchHandler->TryUnLoad(KModule1(), EUnGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   144
    	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   145
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   146
		if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   147
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   148
			INFO_PRINTF3(_L("TryUnload: %d with FailNext(%d)"), asynchHandler->iStatus.Int(), failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   149
			if(asynchHandler->iStatus != KErrRSModuleNotLoaded)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   150
				{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   151
				continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   152
				}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   153
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   154
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   155
		TRSModuleInfo info;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   156
		TInt ret = iRootServerSuite->RootSess().GetModuleInfo(KModule1(), info);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   157
		if(ret == KErrRSModuleUnknown)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   158
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   159
			// everything worked;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   160
			INFO_PRINTF1(_L("OOM loop complete"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   161
			break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   162
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   163
		else if(ret == KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   164
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   165
			INFO_PRINTF1(_L("GetModuleInfo() returned KErrNone for unloaded module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   166
			SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   167
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   168
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   169
		else 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   170
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   171
			INFO_PRINTF3(_L("GetModuleInfo: %d with FailNext(%d)"), ret, failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   172
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   173
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   174
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   175
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   176
	INFO_PRINTF1(_L("Resetting heap"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   177
	iRootServerSuite->RootSess().__DbgFailNext(-1);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   178
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   179
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   180
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   181
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   182
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   183
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   184
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   185
// Test step 7.3 - OOM loop Test 3 - Bind
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   186
CRootServerTest7_3::CRootServerTest7_3(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   187
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   188
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   189
	SetTestStepName(_L("Test7.3"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   190
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   191
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   192
TVerdict CRootServerTest7_3::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   193
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   194
	INFO_PRINTF1(_L("Test Purpose: Heap loop Test3 - Bind, EnumerateBindings"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   195
										SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   196
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   197
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   198
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   199
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   200
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   201
	INFO_PRINTF2(_L("01 Loading cpm: %S"), &KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   202
	LoadNormalModuleL(asynchHandler, KModule1);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   203
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   204
	TCFSubModuleAddress fullName1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   205
	fullName1.SetModule(KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   206
	fullName1.SetSubModule(KSubModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   207
	TInt failure = 1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   208
						
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   209
	while(TestStepResult() == EPass)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   210
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   211
		INFO_PRINTF2(_L("Failing after %d Allocs"), failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   212
		iRootServerSuite->RootSess().__DbgFailNext(failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   213
		failure++;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   214
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   215
		TInt ret = TryHierachicalBind(asynchHandler, KModule1, KSubModule1, KModule1, KSubModule2);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   216
		if(ret != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   217
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   218
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   219
		INFO_PRINTF1(_L("02 Enumerate bindings"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   220
		TRSBindingInfo bindInfo;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   221
		TRSIter position;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   222
		ret = iRootServerSuite->RootSess().EnumerateBindings(fullName1, position, bindInfo);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   223
		if(ret != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   224
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   225
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   226
		// everything worked;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   227
		INFO_PRINTF1(_L("OOM loop complete"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   228
		break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   229
		}		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   230
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   231
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   232
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   233
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   234
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   235
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   236
// Test step 7.4 - OOM loop Test 4 - Unbind
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   237
CRootServerTest7_4::CRootServerTest7_4(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   238
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   239
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   240
	SetTestStepName(_L("Test7.4"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   241
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   242
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   243
TVerdict CRootServerTest7_4::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   244
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   245
	INFO_PRINTF1(_L("Test Purpose: Heap loop Test4 - Unbind, EnumerateBindings"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   246
										SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   247
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   248
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   249
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   250
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   251
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   252
	INFO_PRINTF2(_L("01 Loading and binding cpm: %S"), &KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   253
	LoadNormalModuleL(asynchHandler, KModule1);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   254
	TInt ret = TryHierachicalBind(asynchHandler, KModule1, KSubModule1, KModule1, KSubModule2);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   255
	if(ret != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   256
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   257
		INFO_PRINTF2(_L("Binding CPM failed with %d"), ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   258
		User::Leave(ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   259
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   260
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   261
	TCFSubModuleAddress fullName1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   262
	fullName1.SetModule(KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   263
	fullName1.SetSubModule(KSubModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   264
	TInt failure = 1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   265
							
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   266
	while(TestStepResult() == EPass)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   267
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   268
		iRootServerSuite->RootSess().__DbgFailNext(failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   269
		failure++;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   270
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   271
		TRSUnBindingInfo unbindInfo;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   272
		unbindInfo.iParams.iAddress1.SetModule(KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   273
		unbindInfo.iParams.iAddress1.SetSubModule(KSubModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   274
		unbindInfo.iParams.iAddress2.SetModule(KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   275
		unbindInfo.iParams.iAddress2.SetSubModule(KSubModule2());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   276
		asynchHandler->TryUnBind( unbindInfo );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   277
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   278
		CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   279
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   280
		if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   281
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   282
			INFO_PRINTF3(_L("TryUnload: %d with FailNext(%d)"), asynchHandler->iStatus.Int(), failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   283
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   284
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   285
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   286
		INFO_PRINTF1(_L("03 Enumerate bindings"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   287
		TRSBindingInfo bindInfo;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   288
		TRSIter position;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   289
		ret = iRootServerSuite->RootSess().EnumerateBindings(fullName1, position, bindInfo);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   290
		if(ret == KErrEof)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   291
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   292
			INFO_PRINTF1(_L("OOM loop complete"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   293
			break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   294
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   295
		else if(ret == KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   296
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   297
			INFO_PRINTF1(_L("EnumerateBindings returned KErrNone for unbound submodules"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   298
			SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   299
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   300
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   301
		else 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   302
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   303
			INFO_PRINTF3(_L("EnumerateBindings: %d with FailNext(%d)"), ret, failure);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   304
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   305
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   306
		}		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   307
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   308
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   309
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   310
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   311
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   312
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   313