commsprocess/commsrootserverconfig/TE_rootserver/src/RootServerTestSection5.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 6
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 "RootServerTestSection5.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    30
#include "RootServerTest.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    31
// Test step 3.5 - Retrieve Module Information
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    32
CRootServerTest_GracefulUnload::CRootServerTest_GracefulUnload(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    33
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    34
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    35
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    36
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    37
TVerdict CRootServerTest_GracefulUnload::UnloadGracefullyL(TThreadPriority aPriority)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    38
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    39
										SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    40
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    41
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    42
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    43
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    44
    //*****************step 2************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    45
	INFO_PRINTF1(_L("02 Load test module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    46
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    47
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    48
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    49
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    50
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    51
	startParams.iParams.iPriority = aPriority;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    52
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    53
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    54
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    55
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    56
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    57
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    58
								SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    59
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    60
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    61
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    62
		//*****************step 4***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    63
		INFO_PRINTF1(_L("04 Unload Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    64
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    65
		asynchHandler->TryUnLoad(startParams.iParams.iName, EGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    66
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    67
		CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    68
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    69
   		if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    70
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    71
			INFO_PRINTF2(_L("Unload returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    72
												SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    73
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    74
		else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    75
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    76
			SetTestStepResult(EPass);			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    77
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    78
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    79
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    80
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    81
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    82
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    83
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    84
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    85
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    86
// Test step 5.1 - UnLoad Gracefully (normal priority)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    87
CRootServerTest5_1::CRootServerTest5_1(CTE_RootServerServer *aSuite) : CRootServerTest_GracefulUnload(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    88
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    89
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    90
	SetTestStepName(_L("Test5.1"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    91
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    92
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    93
TVerdict CRootServerTest5_1::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    94
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    95
	INFO_PRINTF1(_L("Test Purpose: UnLoad Comms Provider Module gracefully (normal priority)"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    96
	return UnloadGracefullyL(EPriorityNormal);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    97
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    98
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    99
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   100
// Test step 5.2 - UnLoad Gracefully (elevated priority)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   101
CRootServerTest5_2::CRootServerTest5_2(CTE_RootServerServer *aSuite) : CRootServerTest_GracefulUnload(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   102
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   103
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   104
	SetTestStepName(_L("Test5.2"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   105
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   106
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   107
TVerdict CRootServerTest5_2::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   108
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   109
	INFO_PRINTF1(_L("Test Purpose: UnLoad Comms Provider Module gracefully (elevated priority)"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   110
	return UnloadGracefullyL(EPriorityRealTime);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   111
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   112
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   113
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   114
// Test step 5.3 -  Cancel UnLoad Gracefully
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   115
CRootServerTest5_3::CRootServerTest5_3(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   116
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   117
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   118
	SetTestStepName(_L("Test5.3"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   119
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   120
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   121
TVerdict CRootServerTest5_3::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   122
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   123
	INFO_PRINTF1(_L("Test Purpose: Cancel UnLoad Comms Provider Module gracefully"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   124
										SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   125
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   126
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   127
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   128
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   129
	//*****************step 2************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   130
	INFO_PRINTF1(_L("02 Load Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   131
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   132
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   133
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   134
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   135
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   136
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   137
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   138
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   139
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   140
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   141
								SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   142
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   143
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   144
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   145
		//*****************step 3***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   146
		INFO_PRINTF1(_L("03 Unload Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   147
		asynchHandler->TryUnLoad(startParams.iParams.iName, EGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   148
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   149
		//*****************step 4***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   150
		INFO_PRINTF2(_L("04 Cancelling UnLoad: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   151
		iRootServerSuite->RootSess().CancelUnloadCpm(startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   152
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   153
		CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   154
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   155
   		if ((asynchHandler->iStatus != KErrNone) && (asynchHandler->iStatus != KErrCancel))
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   156
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   157
			INFO_PRINTF2(_L("Unload returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   158
			SetTestStepResult(EFail);			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   159
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   160
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   161
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   162
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   163
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   164
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   165
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   166
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   167
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   168
// Test step 3.5 - Retrieve Module Information
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   169
CRootServerTest_UngracefulUnload::CRootServerTest_UngracefulUnload(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   170
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   171
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   172
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   173
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   174
TVerdict CRootServerTest_UngracefulUnload::UnloadNonGracefullyL(TThreadPriority aPriority)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   175
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   176
										SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   177
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   178
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   179
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   180
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   181
	//*****************step 3************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   182
	INFO_PRINTF1(_L("03 Load Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   183
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   184
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   185
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   186
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   187
	startParams.iParams.iPriority = aPriority;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   188
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   189
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   190
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   191
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   192
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   193
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   194
		SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   195
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   196
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   197
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   198
		//*****************step 4***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   199
		INFO_PRINTF1(_L("04 Unload Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   200
		asynchHandler->TryUnLoad(startParams.iParams.iName, EUnGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   201
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   202
		CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   203
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   204
   		if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   205
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   206
			INFO_PRINTF2(_L("Unload returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   207
			SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   208
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   209
		else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   210
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   211
			SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   212
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   213
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   214
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   215
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   216
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   217
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   218
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   219
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   220
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   221
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   222
// Test step 5.4 - UnLoad Ungracefully - normal priority
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   223
CRootServerTest5_4::CRootServerTest5_4(CTE_RootServerServer *aSuite) : CRootServerTest_UngracefulUnload(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   224
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   225
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   226
	SetTestStepName(_L("Test5.4"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   227
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   228
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   229
TVerdict CRootServerTest5_4::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   230
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   231
	INFO_PRINTF1(_L("Test Purpose: UnLoad Comms Provider Module Ungracefully (normal priority)"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   232
	return UnloadNonGracefullyL(EPriorityNormal);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   233
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   234
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   235
// Test step 5.5 - UnLoad Ungracefully - elevated priority
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   236
CRootServerTest5_5::CRootServerTest5_5(CTE_RootServerServer *aSuite) : CRootServerTest_UngracefulUnload(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   237
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   238
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   239
	SetTestStepName(_L("Test5.5"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   240
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   241
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   242
TVerdict CRootServerTest5_5::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   243
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   244
	INFO_PRINTF1(_L("Test Purpose: UnLoad Comms Provider Module Ungracefully (elevated priority)"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   245
	return UnloadNonGracefullyL(EPriorityRealTime);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   246
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   247
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   248
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   249
// Test step 5.6 - Cancel UnLoad Ungracefully
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   250
CRootServerTest5_6::CRootServerTest5_6(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   251
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   252
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   253
	SetTestStepName(_L("Test5.6"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   254
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   255
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   256
TVerdict CRootServerTest5_6::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   257
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   258
	INFO_PRINTF1(_L("Test Purpose: Cancel UnLoad Comms Provider Module Ungracefully"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   259
										SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   260
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   261
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   262
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   263
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   264
	//*****************step 2************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   265
	INFO_PRINTF1(_L("02 Load Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   266
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   267
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   268
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   269
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   270
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   271
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   272
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   273
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   274
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   275
		INFO_PRINTF2(_L("Load returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   276
								SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   277
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   278
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   279
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   280
		//*****************step 3***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   281
		INFO_PRINTF1(_L("03 Unload Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   282
		asynchHandler->TryUnLoad(startParams.iParams.iName, EUnGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   283
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   284
		//*****************step 4***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   285
		INFO_PRINTF2(_L("04 Cancelling UnLoad: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   286
		iRootServerSuite->RootSess().CancelUnloadCpm(startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   287
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   288
		CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   289
		
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   290
	    // Unload the CPM anyway in case we were too late to cancel the load.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   291
	    TRequestStatus status;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   292
	    iRootServerSuite->RootSess().UnloadCpm(status, startParams.iParams.iName, EImmediate);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   293
	    User::WaitForRequest(status);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   294
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   295
   		if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   296
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   297
			INFO_PRINTF2(_L("Unload returned error: <%d> "), asynchHandler->iStatus.Int());
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
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   302
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   303
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   304
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   305
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   306
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   307
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   308
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   309
// Test step 5.7 - UnLoad 2 modules sharing the same heap
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   310
CRootServerTest5_7::CRootServerTest5_7(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   311
{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   312
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   313
	SetTestStepName(_L("Test5.7"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   314
}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   315
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   316
TVerdict CRootServerTest5_7::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   317
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   318
	INFO_PRINTF1(_L("Test Purpose: UnLoad 2 modules sharing the same heap"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   319
										SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   320
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   321
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   322
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   323
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   324
	//*****************step 3************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   325
	INFO_PRINTF1(_L("03 Load Test Module_Share1"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   326
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   327
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   328
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   329
	_LIT8(KShareModule1, "Test ModuleShare1");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   330
	_LIT8(KShareModule2, "Test ModuleShare2");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   331
	startParams.iParams.iName = KShareModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   332
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   333
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   334
    CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   335
   	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   336
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   337
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   338
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   339
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   340
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   341
	//*****************step 3************************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   342
	INFO_PRINTF1(_L("03 Load Test Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   343
	startParams.iParams.iName = KShareModule2;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   344
	startParams.iParams.iHeapType = EShareHeap;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   345
	startParams.iParams.iShareHeapWith = KShareModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   346
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   347
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   348
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   349
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   350
	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   351
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   352
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   353
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   354
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   355
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   356
    //*****************step 5***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   357
	INFO_PRINTF1(_L("05 Unload Test Module_Share1"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   358
	startParams.iParams.iName = KShareModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   359
	asynchHandler->TryUnLoad(startParams.iParams.iName, EGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   360
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   361
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   362
	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   363
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   364
		INFO_PRINTF2(_L("Unload returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   365
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   366
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   367
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   368
	//*****************step 6***********************
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   369
	INFO_PRINTF1(_L("06 Unload Test Module_Share2"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   370
	startParams.iParams.iName = KShareModule2;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   371
	asynchHandler->TryUnLoad(startParams.iParams.iName, EGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   372
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   373
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   374
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   375
	if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   376
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   377
		INFO_PRINTF2(_L("Unload returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   378
		SetTestStepResult(EInconclusive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   379
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   380
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   381
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   382
		SetTestStepResult(EPass);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   383
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   384
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   385
	// uninstall and destroy active scheduler
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   386
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   387
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   388
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   389
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   390
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   391
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   392
// Test step 5.8 - Unload Sluggish CPM Gracefully with intervening Close of Session
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   393
CRootServerTest5_8::CRootServerTest5_8(CTE_RootServerServer *aSuite) : CTestStepRootServer(aSuite)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   394
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   395
	// store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   396
	SetTestStepName(_L("Test5.8"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   397
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   398
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   399
TVerdict CRootServerTest5_8::doTestStepL( void )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   400
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   401
	INFO_PRINTF1(_L("Test Purpose: Unload Sluggish CPM Gracefully with intervening Close of Session"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   402
										SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   403
	// Create scheduler/active object framework 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   404
	CSelfPopScheduler* scheduler = CSelfPopScheduler::CreateLC();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   405
    CTestAsynchHandler* asynchHandler = CTestAsynchHandler::NewLC(&iRootServerSuite->RootSess());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   406
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   407
	TRSStartModuleParams startParams;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   408
	TTestModuleIniData iniData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   409
	DefaultStartParams(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   410
	startParams.iParams.iName = KModule1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   411
	iniData.iParams.iShutdownDelay = isTestServerLifeTime;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   412
	INFO_PRINTF2(_L("01 Loading sluggish module: %S"), &startParams.iParams.iName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   413
	asynchHandler->TryLoad(startParams, iniData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   414
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   415
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   416
    if (asynchHandler->iStatus != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   417
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   418
		INFO_PRINTF2(_L("LoadServer returned error: <%d> "), asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   419
		User::Leave(asynchHandler->iStatus.Int());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   420
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   421
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   422
	INFO_PRINTF1(_L("02 Unload sluggish Module"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   423
	asynchHandler->TryUnLoad(startParams.iParams.iName, EGraceful);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   424
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   425
	// Brief wait to give unload chance to start
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   426
	User::After(250 * 1000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   427
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   428
	// Close the session
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   429
	INFO_PRINTF1(_L("03 Closing RRootServ"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   430
	iRootServerSuite->RootSess().Close();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   431
	// Brief wait for any fireworks
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   432
	User::After(250 * 1000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   433
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   434
	// Let the request complete
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   435
	CActiveScheduler::Start();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   436
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   437
	// Reconnect the session
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   438
	INFO_PRINTF1(_L("04 Reconnecting RRootServ"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   439
	TInt ret = iRootServerSuite->RootSess().Connect();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   440
	if (ret != KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   441
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   442
		INFO_PRINTF2(_L("Reconnect of RRootServ failed with error: <%d> "), ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   443
		User::Leave(ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   444
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   445
	// Brief wait for any fireworks
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   446
	User::After(250 * 1000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   447
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   448
	// now try to retrieve information about the module; should be ERunning after session close
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   449
	// causes unload handler to be canceled
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   450
	INFO_PRINTF1(_L("05 Getting module information"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   451
	TRSModuleInfo info;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   452
	TCFModuleName moduleName = startParams.iParams.iName;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   453
	ret = iRootServerSuite->RootSess().GetModuleInfo(moduleName, info);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   454
	INFO_PRINTF4(_L("GetModuleInfo for %S returned %d, state %c= ERunning"), &moduleName, ret, info.iParams.iState == EStopping? '=': '!');
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   455
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   456
	if(KErrNone != ret || info.iParams.iState != ERunning)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   457
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   458
		CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   459
		CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   460
        SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   461
        return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   462
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   463
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   464
	// Wait for it to finish stopping, query again
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   465
	INFO_PRINTF1(_L("06 Getting module information after waiting for stop"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   466
	User::After((iniData.iParams.iShutdownDelay + 500) * 1000);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   467
	moduleName = startParams.iParams.iName;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   468
	ret = iRootServerSuite->RootSess().GetModuleInfo(moduleName, info);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   469
	INFO_PRINTF3(_L("GetModuleInfo for %S returned %d"), &moduleName, ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   470
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   471
	if(KErrRSModuleUnknown != ret)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   472
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   473
		CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   474
		CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   475
        SetTestStepResult(EFail);	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   476
        return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   477
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   478
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   479
	CleanupStack::PopAndDestroy(asynchHandler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   480
	CleanupStack::PopAndDestroy(scheduler);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   481
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   482
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   483