commsprocess/commsrootserverconfig/TE_rootserver/src/RootServerTestSection3.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 ESock Test cases from section 3
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
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    30
#include "RootServerTest.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    31
#include "RootServerTestSection3.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    32
#include <es_mbman.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    33
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    34
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    35
// Note: Test step 3.1 was a RRootServ::Connect() test; this is now obsolete
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    36
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    37
// Test step 3.2 - SetMBufPoolSize After LoadServer
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    38
CRootServerTest3_2::CRootServerTest3_2(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    39
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    40
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    41
	SetTestStepName(_L("Test3.2"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    42
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    43
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    44
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    45
TVerdict CRootServerTest3_2::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    46
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    47
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    48
	INFO_PRINTF1(_L("Test Purpose: SetMBufPoolSize After LoadServer"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    49
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    50
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    51
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    52
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    53
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    54
	INFO_PRINTF2(_L("01 Loading test module: %S"), &KModule1());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    55
	LoadNormalModuleL(asynchHandler, KModule1);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    56
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    57
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    58
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    59
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    60
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    61
	// now try to set the buffer pool size
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    62
	INFO_PRINTF1(_L("03 Setting MBufPoolSize"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    63
	TInt ret = iRootServerSuite->RootSess().SetMBufPoolSize(0,KMBufDefaultHeapSize);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    64
	INFO_PRINTF2(_L("SetMBufPoolSize returned %d"), ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    65
	if (KErrInUse != ret) 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    66
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    67
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    68
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    69
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    70
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    71
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    72
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    73
// Test step 3.5 - Retrieve Module Information
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    74
CRootServerTest3_DblLoad::CRootServerTest3_DblLoad(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    75
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    76
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    77
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    78
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    79
TVerdict CRootServerTest3_DblLoad::LoadSameModuleTwiceL(TThreadPriority aPriority)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    80
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    81
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    82
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    83
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    84
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    85
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    86
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    87
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    88
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    89
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    90
	startParams.iParams.iPriority = aPriority;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    91
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    92
	INFO_PRINTF2(_L("02 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    93
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    94
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    95
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    96
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    97
    if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    98
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    99
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   100
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   101
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   102
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   103
	// try to load same module again
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   104
	INFO_PRINTF1(_L("03 Trying to load same module again"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   105
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   106
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   107
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   108
	INFO_PRINTF2(_L("LoadServer returned %d"), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   109
    if (asynchHandler->iStatus != KErrRSModuleAlreadyExist)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   110
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   111
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   112
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   113
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   114
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   115
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   116
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   117
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   118
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   119
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   120
// Test step 3.3 - Load Same Module Twice
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   121
CRootServerTest3_3::CRootServerTest3_3(CTE_RootServerServer *aSuite) : CRootServerTest3_DblLoad(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   122
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   123
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   124
	SetTestStepName(_L("Test3.3"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   125
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   126
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   127
TVerdict CRootServerTest3_3::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   128
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   129
	INFO_PRINTF1(_L("Test Purpose: Load Same Module Twice (normal priority)"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   130
	return LoadSameModuleTwiceL(EPriorityNormal);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   131
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   132
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   133
// Test step 3.4 - Load Same Module Twice with elevated priority
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   134
CRootServerTest3_4::CRootServerTest3_4(CTE_RootServerServer *aSuite) : CRootServerTest3_DblLoad(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   135
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   136
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   137
	SetTestStepName(_L("Test3.4"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   138
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   139
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   140
TVerdict CRootServerTest3_4::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   141
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   142
	INFO_PRINTF1(_L("Test Purpose: Load Same Module Twice (elevated priority)"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   143
	return LoadSameModuleTwiceL(EPriorityRealTime);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   144
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   145
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   146
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   147
// Test step 3.5 - Retrieve Module Information
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   148
CRootServerTest3_5::CRootServerTest3_5(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   149
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   150
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   151
	SetTestStepName(_L("Test3.5"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   152
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   153
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   154
TVerdict CRootServerTest3_5::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   155
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   156
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   157
	INFO_PRINTF1(_L("Test Purpose: Retrieve Module Information"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   158
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   159
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   160
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   161
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   162
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   163
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   164
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   165
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   166
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   167
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   168
	INFO_PRINTF2(_L("02 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   169
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   170
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   171
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   172
    if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   173
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   174
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   175
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   176
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   177
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   178
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   179
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   180
	// now try to retrieve information about the module
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   181
	INFO_PRINTF1(_L("03 Getting module information"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   182
	TRSModuleInfo info;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   183
	TCFModuleName moduleName = KModule1();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   184
	TInt ret = iRootServerSuite->RootSess().GetModuleInfo(moduleName, info);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   185
	INFO_PRINTF3(_L("GetModuleInfo for %S returned %d"), &moduleName, ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   186
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   187
	if(KErrNone != ret)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   188
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   189
        SetTestStepResult(EFail);		return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   190
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   191
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   192
	Log(_L("Filename %S, State %d, NumSubmodules %d"), 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   193
		&info.iParams.iDll, info.iParams.iState, info.iParams.iNumSubModules);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   194
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   195
	if (startParams.iParams.iFilename != info.iParams.iDll ||
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   196
		ERunning != info.iParams.iState ||
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   197
		3 != info.iParams.iNumSubModules)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   198
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   199
        SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   200
        return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   201
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   202
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   203
	// now ask for info about a non-existent module
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   204
	INFO_PRINTF1(_L("04 Getting module information for non-existent module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   205
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   206
	moduleName = KModule2;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   207
	ret = iRootServerSuite->RootSess().GetModuleInfo(moduleName, info);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   208
	INFO_PRINTF3(_L("GetModuleInfo for %S returned %d"), &moduleName, ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   209
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   210
	if(KErrRSModuleUnknown != ret)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   211
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   212
        SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   213
        return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   214
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   215
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   216
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   217
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   218
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   219
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   220
// Test step 3.6 - CancelLoadModule Before Thread Starts
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   221
CRootServerTest3_6::CRootServerTest3_6(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   222
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   223
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   224
	SetTestStepName(_L("Test3.6"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   225
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   226
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   227
TVerdict CRootServerTest3_6::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   228
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   229
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   230
	INFO_PRINTF1(_L("Test Purpose: CancelLoadModule Before Thread Starts"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   231
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   232
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   233
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   234
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   235
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   236
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   237
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   238
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   239
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   240
	iniData.iParams.iInitDelay = isRendezvousDelayTime;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   241
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   242
	INFO_PRINTF2(_L("02 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   243
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   244
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   245
//	User::After(5000000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   246
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   247
	INFO_PRINTF2(_L("03 Cancelling Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   248
	iRootServerSuite->RootSess().CancelLoadCpm(startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   249
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   250
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   251
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   252
    INFO_PRINTF2(_L("LoadServer status was: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   253
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   254
    if ((KErrCancel != asynchHandler->iStatus.Int()) && (KErrNone != asynchHandler->iStatus.Int()))
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   255
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   256
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   257
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   258
    // Unload the CPM anyway in case we were too late to cancel the load.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   259
    TRequestStatus status;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   260
    iRootServerSuite->RootSess().UnloadCpm(status, startParams.iParams.iName, EImmediate);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   261
    User::WaitForRequest(status);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   262
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   263
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   264
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   265
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   266
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   267
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   268
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   269
// Test step 3.7 - CancelLoadServer After Rendezvous
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   270
CRootServerTest3_7::CRootServerTest3_7(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   271
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   272
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   273
	SetTestStepName(_L("Test3.7"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   274
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   275
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   276
TVerdict CRootServerTest3_7::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   277
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   278
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   279
	INFO_PRINTF1(_L("Test Purpose: CancelLoadServer After Rendezvous"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   280
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   281
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   282
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   283
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   284
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   285
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   286
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   287
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   288
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   289
	INFO_PRINTF2(_L("02 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   290
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   291
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   292
	// now wait for testserver to meet rendezvous before cancelling load (give it 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   293
	User::After(1000000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   294
	INFO_PRINTF2(_L("03 Cancelling Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   295
	iRootServerSuite->RootSess().CancelLoadCpm(startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   296
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   297
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   298
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   299
    INFO_PRINTF2(_L("LoadServer status was: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   300
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   301
    if (KErrNone != asynchHandler->iStatus.Int())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   302
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   303
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   304
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   305
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   306
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   307
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   308
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   309
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   310
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   311
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   312
// Test step 3.8 - Close Session with Pending LoadServer
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   313
CRootServerTest3_8::CRootServerTest3_8(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   314
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   315
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   316
	SetTestStepName(_L("Test3.8"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   317
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   318
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   319
TVerdict CRootServerTest3_8::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   320
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   321
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   322
	INFO_PRINTF1(_L("Test Purpose: Close Session with Pending LoadServer"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   323
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   324
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   325
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   326
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   327
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   328
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   329
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   330
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   331
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   332
	iniData.iParams.iInitDelay = isRendezvousDelayTime;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   333
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   334
	INFO_PRINTF2(_L("02 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   335
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   336
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   337
	INFO_PRINTF1(_L("03 Closing Session"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   338
	iRootServerSuite->RootSess().Close();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   339
	INFO_PRINTF1(_L("RRootServ.Close() completed"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   340
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   341
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   342
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   343
	// note that if the session was closed before the module's thread started,
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   344
	// the handler should have been KErrCancelled
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   345
    INFO_PRINTF2(_L("LoadServer status was: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   346
    if ((KErrCancel != asynchHandler->iStatus.Int()) && (KErrNone != asynchHandler->iStatus.Int()))
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   347
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   348
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   349
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   350
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   351
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   352
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   353
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   354
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   355
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   356
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   357
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   358
// Test step 3.9 - Module Exits Before Rendezvous
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   359
CRootServerTest3_9::CRootServerTest3_9(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   360
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   361
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   362
	SetTestStepName(_L("Test3.9"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   363
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   364
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   365
TVerdict CRootServerTest3_9::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   366
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   367
	SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   368
	INFO_PRINTF1(_L("Test Purpose: Module Exits Before Rendezvous"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   369
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   370
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   371
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   372
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   373
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   374
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   375
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   376
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   377
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   378
	iniData.iParams.iInitDelay = EXIT_BEFORE_RENDEZVOUS;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   379
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   380
	INFO_PRINTF2(_L("03 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   381
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   382
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   383
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   384
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   385
    INFO_PRINTF2(_L("LoadServer status was: <%d>"), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   386
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   387
    if (KErrNone != asynchHandler->iStatus.Int())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   388
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   389
		SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   390
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   391
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   392
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   393
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   394
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   395
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   396
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   397
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   398
// Test step 3.10 - Module Panics Before Meeting Rendezvous
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   399
CRootServerTest3_10::CRootServerTest3_10(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   400
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   401
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   402
	SetTestStepName(_L("Test3.10"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   403
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   404
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   405
TVerdict CRootServerTest3_10::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   406
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   407
	SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   408
	INFO_PRINTF1(_L("Test Purpose: Module Panics Before Meeting Rendezvous"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   409
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   410
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   411
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   412
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   413
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   414
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   415
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   416
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   417
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   418
#ifdef SYMBIAN_C32ROOT_API_V3
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   419
	startParams.iParams.iControlFlags = TRSStartModuleParamContainer::KCF_UnstableModule;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   420
#endif
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   421
	iniData.iParams.iInitDelay = PANIC_BEFORE_RENDEZVOUS;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   422
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   423
	// make sure WINS doesn't stop at panic
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   424
	TBool jitDbg = User::JustInTime();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   425
	User::SetJustInTime(EFalse);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   426
	INFO_PRINTF2(_L("03 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   427
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   428
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   429
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   430
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   431
    INFO_PRINTF2(_L("LoadServer status was: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   432
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   433
    if (KErrNone != asynchHandler->iStatus.Int())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   434
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   435
		SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   436
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   437
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   438
	// Restore enclosing JIT status
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   439
	User::SetJustInTime(jitDbg);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   440
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   441
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   442
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   443
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   444
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   445
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   446
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   447
// Test step 3.11 - Module Panics After Meeting Rendezvous
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   448
CRootServerTest3_11::CRootServerTest3_11(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   449
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   450
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   451
	SetTestStepName(_L("Test3.11"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   452
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   453
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   454
TVerdict CRootServerTest3_11::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   455
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   456
										SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   457
	INFO_PRINTF1(_L("Test Purpose: Module Panics After Meeting Rendezvous"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   458
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   459
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   460
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   461
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   462
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   463
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   464
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   465
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   466
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   467
#ifdef SYMBIAN_C32ROOT_API_V3
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   468
	startParams.iParams.iControlFlags = TRSStartModuleParamContainer::KCF_UnstableModule;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   469
#endif
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   470
	iniData.iParams.iInitDelay = PANIC_AFTER_RENDEZVOUS;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   471
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   472
	// make sure WINS doesn't stop at panic
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   473
	TBool jitDbg = User::JustInTime();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   474
	User::SetJustInTime(EFalse);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   475
	INFO_PRINTF2(_L("03 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   476
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   477
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   478
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   479
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   480
    INFO_PRINTF2(_L("LoadServer status was: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   481
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   482
    if (KErrServerTerminated == asynchHandler->iStatus.Int())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   483
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   484
		SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   485
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   486
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   487
	// Restore enclosing JIT status
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   488
	User::SetJustInTime(jitDbg);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   489
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   490
	// destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   491
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   492
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   493
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   494
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   495
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   496
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   497
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   498
// Test step 3.12 - Load 2 modules sharing the same heap
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   499
CRootServerTest3_12::CRootServerTest3_12(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   500
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   501
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   502
	SetTestStepName(_L("Test3.12"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   503
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   504
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   505
TVerdict CRootServerTest3_12::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   506
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   507
	INFO_PRINTF1(_L("Test Purpose: Load 2 modules sharing the same heap"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   508
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   509
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   510
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   511
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   512
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   513
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   514
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   515
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   516
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   517
	_LIT8(KShareModule1, "Test ModuleShare1");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   518
	_LIT8(KShareModule2, "Test ModuleShare2");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   519
	startParams.iParams.iName = KShareModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   520
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   521
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   522
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   523
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   524
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   525
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   526
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   527
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   528
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   529
	//*****************step 3************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   530
	INFO_PRINTF1(_L("03 Load Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   531
	startParams.iParams.iName = KShareModule2;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   532
	startParams.iParams.iHeapType = EShareHeap;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   533
	startParams.iParams.iShareHeapWith = KShareModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   534
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   535
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   536
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   537
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   538
	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   539
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   540
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   541
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   542
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   543
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   544
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   545
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   546
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   547
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   548
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   549
// Test step 3.13 - Load 2 modules with private heaps
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   550
CRootServerTest3_13::CRootServerTest3_13(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   551
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   552
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   553
	SetTestStepName(_L("Test3.13"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   554
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   555
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   556
TVerdict CRootServerTest3_13::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   557
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   558
	INFO_PRINTF1(_L("Test Purpose: Load 2 modules with private heaps"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   559
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   560
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   561
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   562
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   563
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   564
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   565
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   566
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   567
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   568
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   569
	startParams.iParams.iHeapType = ENewHeap;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   570
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   571
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   572
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   573
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   574
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   575
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   576
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   577
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   578
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   579
	//*****************step 3************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   580
	INFO_PRINTF1(_L("03 Load Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   581
	startParams.iParams.iName = KModule2;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   582
	startParams.iParams.iHeapType = ENewHeap;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   583
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   584
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   585
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   586
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   587
	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   588
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   589
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   590
		SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   591
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   592
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   593
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   594
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   595
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   596
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   597
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   598
// Test step 3.14 - Load sluggish module
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   599
CRootServerTest3_14::CRootServerTest3_14(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   600
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   601
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   602
	SetTestStepName(_L("Test3.14"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   603
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   604
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   605
TVerdict CRootServerTest3_14::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   606
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   607
	INFO_PRINTF1(_L("Test Purpose: Load sluggish module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   608
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   609
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   610
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   611
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   612
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   613
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   614
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   615
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   616
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   617
	iniData.iParams.iDiscoveryDelay = 500;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   618
	iniData.iParams.iBindDelay = 1000;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   619
	iniData.iParams.iUnbindDelay = 1000;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   620
	iniData.iParams.iShutdownDelay = 1000;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   621
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   622
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   623
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   624
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   625
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   626
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   627
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   628
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   629
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   630
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   631
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   632
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   633
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   634
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   635
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   636
// Test step 3.14 - Load dormant module
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   637
CRootServerTest3_15::CRootServerTest3_15(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   638
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   639
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   640
	SetTestStepName(_L("Test3.15"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   641
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   642
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   643
TVerdict CRootServerTest3_15::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   644
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   645
	INFO_PRINTF1(_L("Test Purpose: Load Dormant module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   646
	//*****************step 1*************************//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   647
										SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   648
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   649
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   650
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   651
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   652
	//*****************step 3************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   653
	INFO_PRINTF1(_L("03 Load Dormant Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   654
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   655
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   656
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   657
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   658
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   659
	startParams.iParams.iHeapType = ENewHeap;	// when zombie is killed memory will leak
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   660
	iniData.iParams.iDiscoveryDelay = 30000;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   661
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   662
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   663
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   664
   	if (asynchHandler->iStatus != KErrRSZombie)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   665
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   666
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   667
		SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   668
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   669
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   670
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   671
		//*****************step 4***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   672
		INFO_PRINTF1(_L("04 Unload Dormant Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   673
		asynchHandler->TryUnLoad(startParams.iParams.iName, EUnGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   674
		CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   675
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   676
		if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   677
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   678
			INFO_PRINTF2(_L("Unload returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   679
			SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   680
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   681
		else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   682
			SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   683
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   684
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   685
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   686
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   687
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   688
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   689
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   690
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   691
// Test step 3.16 - Load test module and wait for death
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   692
CRootServerTest3_16::CRootServerTest3_16(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   693
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   694
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   695
	SetTestStepName(_L("Test3.16"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   696
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   697
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   698
TVerdict CRootServerTest3_16::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   699
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   700
	INFO_PRINTF1(_L("Test Purpose: Load test module, wait for death and check heap"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   701
	//*****************step 1*************************//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   702
										SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   703
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   704
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   705
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   706
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   707
	//*****************step 3************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   708
	INFO_PRINTF1(_L("03 Load Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   709
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   710
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   711
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   712
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   713
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   714
#ifdef SYMBIAN_C32ROOT_API_V3
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   715
	startParams.iParams.iControlFlags = TRSStartModuleParamContainer::KCF_UnstableModule;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   716
#endif
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   717
	iniData.iParams.iDeathDelay = 5000;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   718
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   719
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   720
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   721
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   722
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   723
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   724
		SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   725
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   726
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   727
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   728
		//*****************step 4***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   729
		INFO_PRINTF1(_L("04 Waiting for module to die"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   730
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   731
		User::After(6000000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   732
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   733
		TRSModuleInfo info;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   734
		TInt ret = iRootServerSuite->RootSess().GetModuleInfo(KModule1(), info);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   735
		INFO_PRINTF3(_L("GetModuleInfo for %S returned %d"), &KModule1(), ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   736
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   737
		if(KErrRSModuleUnknown == ret)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   738
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   739
			SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   740
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   741
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   742
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   743
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   744
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   745
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   746
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   747
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   748
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   749
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   750
// Test step 3.17 - Load unknown module and cancel
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   751
CRootServerTest3_17::CRootServerTest3_17(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   752
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   753
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   754
	SetTestStepName(_L("Test3.17"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   755
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   756
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   757
TVerdict CRootServerTest3_17::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   758
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   759
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   760
	INFO_PRINTF1(_L("Test Purpose: Load unknown module and cancel"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   761
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   762
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   763
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   764
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   765
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   766
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   767
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   768
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   769
	startParams.iParams.iFilename = _L("unknown_module.cpm");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   770
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   771
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   772
	INFO_PRINTF2(_L("02 Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   773
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   774
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   775
	User::After(1000000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   776
	INFO_PRINTF2(_L("03 Cancelling Loading module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   777
	iRootServerSuite->RootSess().CancelLoadCpm(startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   778
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   779
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   780
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   781
    INFO_PRINTF2(_L("LoadServer status was: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   782
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   783
    if (KErrNotFound != asynchHandler->iStatus.Int())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   784
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   785
		SetTestStepResult(EFail);		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   786
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   787
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   788
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   789
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   790
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   791
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   792
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   793
// Test step 3.18 - UnLoad unknown module and cancel
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   794
CRootServerTest3_18::CRootServerTest3_18(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   795
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   796
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   797
	SetTestStepName(_L("Test3.18"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   798
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   799
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   800
TVerdict CRootServerTest3_18::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   801
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   802
	SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   803
	INFO_PRINTF1(_L("Test Purpose: UnLoad unknown module and cancel"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   804
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   805
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   806
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   807
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   808
	_LIT8(KUnknownModule, "unknown_module.cpm");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   809
	INFO_PRINTF2(_L("02 UnLoading module: %S"), &KUnknownModule());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   810
	asynchHandler->TryUnLoad(KUnknownModule(), EUnGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   811
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   812
	User::After(1000000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   813
	INFO_PRINTF2(_L("03 Cancelling Unloading module: %S"), &KUnknownModule());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   814
	iRootServerSuite->RootSess().CancelUnloadCpm(KUnknownModule());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   815
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   816
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   817
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   818
    INFO_PRINTF2(_L("UnLoadServer status was: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   819
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   820
    if (KErrRSModuleNotLoaded != asynchHandler->iStatus.Int())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   821
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   822
		SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   823
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   824
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   825
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   826
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   827
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   828
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   829