imsrv_plat/ximp_core_feature_plugin_api/tsrc/src/t_sessionmng/t_sessionmng.cpp
author hgs
Wed, 03 Nov 2010 09:32:20 +0530
changeset 51 61fad867f68e
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include <ecom/ecom.h>
hgs
parents:
diff changeset
    20
#include <badesca.h>
hgs
parents:
diff changeset
    21
#include <e32base.h>
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include "t_sessionmng.h"
hgs
parents:
diff changeset
    24
#include "prfwteststatuseventlistener.h"
hgs
parents:
diff changeset
    25
#include "prfwtestmessaging.h"
hgs
parents:
diff changeset
    26
#include "prfwtestmessenger.h"
hgs
parents:
diff changeset
    27
#include "prfwtestcontextwrappermgr.h"
hgs
parents:
diff changeset
    28
#include "prfwtestcontextwrapper.h"
hgs
parents:
diff changeset
    29
#include "prfwtestfiletool.h"
hgs
parents:
diff changeset
    30
#include "userafter.h"
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
#include "eunittools.h"
hgs
parents:
diff changeset
    33
#include "prfwtestrobustnesstools.h"
hgs
parents:
diff changeset
    34
#include "prfwtestprotocols.h"
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
#include <ximpclient.h>
hgs
parents:
diff changeset
    37
#include <ximpcontext.h>
hgs
parents:
diff changeset
    38
#include <ximpcontextstateevent.h>
hgs
parents:
diff changeset
    39
#include <ximprequestcompleteevent.h>
hgs
parents:
diff changeset
    40
#include <ximpstatus.h>
hgs
parents:
diff changeset
    41
#include <ximpfeatureinfo.h>
hgs
parents:
diff changeset
    42
#include <ximpserviceinfo.h>
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
#include <platform/digia/eunit/eunitmacros.h>
hgs
parents:
diff changeset
    47
#include <platform/digia/eunit/teunitassertioninfo.h>
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
// CONSTRUCTION
hgs
parents:
diff changeset
    55
T_SessionMng* T_SessionMng::NewL()
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    T_SessionMng* self = new( ELeave ) T_SessionMng;
hgs
parents:
diff changeset
    58
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    59
    self->ConstructL();
hgs
parents:
diff changeset
    60
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
    return self;
hgs
parents:
diff changeset
    63
    }
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
T_SessionMng::~T_SessionMng()
hgs
parents:
diff changeset
    67
    {
hgs
parents:
diff changeset
    68
    delete iWrapperMgr;
hgs
parents:
diff changeset
    69
    
hgs
parents:
diff changeset
    70
    CXIMPTestFileTool::CleanAllL();
hgs
parents:
diff changeset
    71
    }
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
void T_SessionMng::ConstructL()
hgs
parents:
diff changeset
    75
    {
hgs
parents:
diff changeset
    76
    CEUnitTestSuiteClass::ConstructL();
hgs
parents:
diff changeset
    77
    CXIMPTestFileTool::CleanAllL();
hgs
parents:
diff changeset
    78
    }
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
T_SessionMng::T_SessionMng()
hgs
parents:
diff changeset
    82
    {
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
// ===========================================================================
hgs
parents:
diff changeset
    88
// TEST CASE SETUP & TEARDOWN METHODS
hgs
parents:
diff changeset
    89
// ===========================================================================
hgs
parents:
diff changeset
    90
//
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
void T_SessionMng::Setup_L()
hgs
parents:
diff changeset
    93
    {
hgs
parents:
diff changeset
    94
    PrfwTestRobustness::DoPreCleaning();
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    // now we're using only one connection
hgs
parents:
diff changeset
    97
    iWrapperMgr = CXIMPTestContextWrapperMgr::NewL();
hgs
parents:
diff changeset
    98
    iWrapperMgr->CreateWrapperL();
hgs
parents:
diff changeset
    99
    }
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
void T_SessionMng::Setup_2_L()
hgs
parents:
diff changeset
   103
    {
hgs
parents:
diff changeset
   104
    iWrapperMgr = CXIMPTestContextWrapperMgr::NewL();
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    // two wrappers
hgs
parents:
diff changeset
   107
    iWrapperMgr->CreateWrapperL();
hgs
parents:
diff changeset
   108
    iWrapperMgr->CreateWrapperL();
hgs
parents:
diff changeset
   109
    }
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
void T_SessionMng::Setup_3_L()
hgs
parents:
diff changeset
   113
    {
hgs
parents:
diff changeset
   114
    iWrapperMgr = CXIMPTestContextWrapperMgr::NewL();
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
    // three wrappers for unbalanced bind/share unbind/unshare test
hgs
parents:
diff changeset
   117
    iWrapperMgr->CreateWrapperL();
hgs
parents:
diff changeset
   118
    iWrapperMgr->CreateWrapperL();
hgs
parents:
diff changeset
   119
    iWrapperMgr->CreateWrapperL();
hgs
parents:
diff changeset
   120
    }
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
void T_SessionMng::Teardown()
hgs
parents:
diff changeset
   124
    {
hgs
parents:
diff changeset
   125
    delete iWrapperMgr;
hgs
parents:
diff changeset
   126
    iWrapperMgr = NULL;
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
    REComSession::FinalClose();
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    PrfwTestRobustness::DoPreCleaning();
hgs
parents:
diff changeset
   131
    }
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
// ===========================================================================
hgs
parents:
diff changeset
   136
// TEST CASE
hgs
parents:
diff changeset
   137
// ===========================================================================
hgs
parents:
diff changeset
   138
void T_SessionMng::T_Simple_Bind_Wait_Unbind_L()
hgs
parents:
diff changeset
   139
    {
hgs
parents:
diff changeset
   140
    EUNIT_PRINT( _L("Simple context Bind/Unbind test.") );
hgs
parents:
diff changeset
   141
    EUNIT_PRINT( _L("Client side waits bind completion before issuing unbind.") );
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   144
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   145
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   146
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    //Do bind, wait and verify events
hgs
parents:
diff changeset
   149
    wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingOk );
hgs
parents:
diff changeset
   150
    
hgs
parents:
diff changeset
   151
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   152
    messenger->SetNoError();
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
    TXIMPRequestId reqId;
hgs
parents:
diff changeset
   155
    reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   156
    EUNIT_ASSERT( reqId != TXIMPRequestId::Null() );
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   159
    wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
    //Verify features availability
hgs
parents:
diff changeset
   164
    MXIMPFeatureInfo* ctxFeats = context->GetContextFeaturesLC();
hgs
parents:
diff changeset
   165
    EUNIT_ASSERT_DESC( ctxFeats->FeatureIds().MdcaCount() > 0, "No features from context" );
hgs
parents:
diff changeset
   166
    CleanupStack::PopAndDestroy(); //ctxFeats
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
    //Do unbind, wait and verify events
hgs
parents:
diff changeset
   169
    wrapper->SetupListenerL( EXIMPTestStatusEvents_UnbindingOk );
hgs
parents:
diff changeset
   170
    messenger->SetNoError();
hgs
parents:
diff changeset
   171
    reqId = context->UnbindL();
hgs
parents:
diff changeset
   172
    EUNIT_ASSERT( reqId != TXIMPRequestId::Null() );
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   175
    wrapper->VerifyEventStackL( _L8("Unbinding single context: ") );
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
    messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   178
    messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   179
    }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
// ===========================================================================
hgs
parents:
diff changeset
   182
// TEST CASE
hgs
parents:
diff changeset
   183
// ===========================================================================
hgs
parents:
diff changeset
   184
void T_SessionMng::T_Settings_Bind_Wait_Unbind_L()
hgs
parents:
diff changeset
   185
    {
hgs
parents:
diff changeset
   186
    EUNIT_PRINT( _L("Context Bind with Settings id/Unbind test.") );
hgs
parents:
diff changeset
   187
    EUNIT_PRINT( _L("Client side waits bind completion before issuing unbind.") );
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   190
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   191
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   192
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
    //Do bind, wait and verify events
hgs
parents:
diff changeset
   195
    wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingOk );
hgs
parents:
diff changeset
   196
    
hgs
parents:
diff changeset
   197
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   198
    messenger->SetNoError();
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
    TXIMPRequestId reqId;
hgs
parents:
diff changeset
   201
    TUid protocol = { K_PRFW_TST_PROTOCOL_1_IMPLEMENTATION_UID };
hgs
parents:
diff changeset
   202
    reqId = context->BindToL( protocol, 0 );
hgs
parents:
diff changeset
   203
    
hgs
parents:
diff changeset
   204
    EUNIT_ASSERT( reqId != TXIMPRequestId::Null() );
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   207
    wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
    messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
    //Verify features availability
hgs
parents:
diff changeset
   212
    MXIMPFeatureInfo* ctxFeats = context->GetContextFeaturesLC();
hgs
parents:
diff changeset
   213
    EUNIT_ASSERT_DESC( ctxFeats->FeatureIds().MdcaCount() > 0, "No features from context" );
hgs
parents:
diff changeset
   214
    CleanupStack::PopAndDestroy(); //ctxFeats
hgs
parents:
diff changeset
   215
hgs
parents:
diff changeset
   216
    //Do unbind, wait and verify events
hgs
parents:
diff changeset
   217
    wrapper->SetupListenerL( EXIMPTestStatusEvents_UnbindingOk );
hgs
parents:
diff changeset
   218
    messenger->SetNoError();
hgs
parents:
diff changeset
   219
    reqId = context->UnbindL();
hgs
parents:
diff changeset
   220
    EUNIT_ASSERT( reqId != TXIMPRequestId::Null() );
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   223
    wrapper->VerifyEventStackL( _L8("Unbinding single context: ") );
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
    messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   226
    messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   227
    }
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
// ===========================================================================
hgs
parents:
diff changeset
   231
// TEST CASE
hgs
parents:
diff changeset
   232
// ===========================================================================
hgs
parents:
diff changeset
   233
void T_SessionMng::T_Simple_Bind_Wait_OOM_L()
hgs
parents:
diff changeset
   234
    {
hgs
parents:
diff changeset
   235
    EUNIT_PRINT( _L("Simple context Bind OOM test.") );
hgs
parents:
diff changeset
   236
    EUNIT_PRINT( _L("Client side waits bind completion in alloc heaven.") );
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   239
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   240
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
    //Do bind, wait and verify events
hgs
parents:
diff changeset
   243
    wrapper->SetupListenerReqCompleteL( EXIMPTestStatusEvents_RequestOk );
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   246
    messenger->SetNoError();
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
    TXIMPRequestId reqId;
hgs
parents:
diff changeset
   249
    reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   250
    EUNIT_ASSERT( reqId != TXIMPRequestId::Null() );
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   253
    
hgs
parents:
diff changeset
   254
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();    
hgs
parents:
diff changeset
   255
    TInt reqCompleteErr = eventListener->GetReqCompletionErrL( reqId );
hgs
parents:
diff changeset
   256
    User::LeaveIfError( reqCompleteErr );
hgs
parents:
diff changeset
   257
    
hgs
parents:
diff changeset
   258
    wrapper->VerifyEventStackL( _L8("Binding single context in OOM: ") );
hgs
parents:
diff changeset
   259
    }
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
// ===========================================================================
hgs
parents:
diff changeset
   263
// TEST CASE
hgs
parents:
diff changeset
   264
// ===========================================================================
hgs
parents:
diff changeset
   265
void T_SessionMng::T_Simple_Bind_Wait_Unbind_WithReqCompleteEventFilter_L()
hgs
parents:
diff changeset
   266
    {
hgs
parents:
diff changeset
   267
    EUNIT_PRINT( _L("Simple context Bind/Unbind test.") );
hgs
parents:
diff changeset
   268
    EUNIT_PRINT( _L("Client side waits bind completion before issuing unbind.") );
hgs
parents:
diff changeset
   269
    EUNIT_PRINT( _L("Client event filter accepts only request completion events") );
hgs
parents:
diff changeset
   270
hgs
parents:
diff changeset
   271
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   272
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   273
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   274
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
    //Accept only ReqComplete events
hgs
parents:
diff changeset
   277
    wrapper->SetupListenerReqCompleteL( EXIMPTestStatusEvents_RequestOk );
hgs
parents:
diff changeset
   278
    
hgs
parents:
diff changeset
   279
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   280
    messenger->SetNoError();
hgs
parents:
diff changeset
   281
    
hgs
parents:
diff changeset
   282
    
hgs
parents:
diff changeset
   283
    //Do bind, wait and verify events    
hgs
parents:
diff changeset
   284
    TXIMPRequestId reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   285
hgs
parents:
diff changeset
   286
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   287
    wrapper->VerifyEventStackL( _L8("Binding single context, accepting only reqComplete events: ") );
hgs
parents:
diff changeset
   288
    messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   289
    
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
    //Accept only ReqComplete events
hgs
parents:
diff changeset
   292
    wrapper->SetupListenerReqCompleteL( EXIMPTestStatusEvents_RequestOk );
hgs
parents:
diff changeset
   293
    messenger->SetNoError();
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
    //Do unbind, wait and verify events
hgs
parents:
diff changeset
   296
    reqId = context->UnbindL();
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   299
    wrapper->VerifyEventStackL( _L8("Unbinding single context, accepting only reqComplete events: ") );
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
    messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   302
    }
hgs
parents:
diff changeset
   303
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
// ===========================================================================
hgs
parents:
diff changeset
   307
// TEST CASE
hgs
parents:
diff changeset
   308
// ===========================================================================
hgs
parents:
diff changeset
   309
//
hgs
parents:
diff changeset
   310
void T_SessionMng::T_Simple_Bind_Wait_CloseHandle_L()
hgs
parents:
diff changeset
   311
    {
hgs
parents:
diff changeset
   312
    EUNIT_PRINT( _L("Simple context Bind/CloseHandle test.") );
hgs
parents:
diff changeset
   313
    EUNIT_PRINT( _L("Client side waits bind completion before closing the handle.") );
hgs
parents:
diff changeset
   314
hgs
parents:
diff changeset
   315
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   316
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   317
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   318
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
    //Do bind, wait and verify events
hgs
parents:
diff changeset
   321
    wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingOk );
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   324
    messenger->SetNoError();
hgs
parents:
diff changeset
   325
hgs
parents:
diff changeset
   326
    TXIMPRequestId reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   327
hgs
parents:
diff changeset
   328
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   329
    wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
    messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
hgs
parents:
diff changeset
   334
    //Close handle and verify events
hgs
parents:
diff changeset
   335
    wrapper->ClearListener();    
hgs
parents:
diff changeset
   336
    messenger->SetNoError();
hgs
parents:
diff changeset
   337
    wrapper->DeletePresenceContext();
hgs
parents:
diff changeset
   338
    
hgs
parents:
diff changeset
   339
    
hgs
parents:
diff changeset
   340
    // we give 10 sec to plugin to die
hgs
parents:
diff changeset
   341
    CUserAfter::AfterSecondsL( 10 );
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
    messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   345
    messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
    wrapper->VerifyEventStackL( _L8("Closing single context handle: ") );
hgs
parents:
diff changeset
   348
    }
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
// ===========================================================================
hgs
parents:
diff changeset
   353
// TEST CASE
hgs
parents:
diff changeset
   354
// ===========================================================================
hgs
parents:
diff changeset
   355
//
hgs
parents:
diff changeset
   356
void T_SessionMng::T_Simple_Bind_Direct_Unbind_L()
hgs
parents:
diff changeset
   357
    {
hgs
parents:
diff changeset
   358
    EUNIT_PRINT( _L("Simple context Bind/Unbind test.") );
hgs
parents:
diff changeset
   359
    EUNIT_PRINT( _L("Client side deletes context while the binding is still active.") );
hgs
parents:
diff changeset
   360
hgs
parents:
diff changeset
   361
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   362
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   363
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   364
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
    wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingOk );
hgs
parents:
diff changeset
   367
    wrapper->AppendToTraitsL( EXIMPTestStatusEvents_UnbindingOk );
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
    
hgs
parents:
diff changeset
   370
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   371
    messenger->SetNoError(); //For binding
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
    
hgs
parents:
diff changeset
   374
    TXIMPRequestId bindReqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   375
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
    messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
    messenger->SetNoError(); // for unbinding
hgs
parents:
diff changeset
   380
    TXIMPRequestId unbindReqId = context->UnbindL();
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
    wrapper->WaitRequestAndStackEvents( bindReqId );
hgs
parents:
diff changeset
   383
    wrapper->WaitRequestAndStackEvents( unbindReqId );
hgs
parents:
diff changeset
   384
hgs
parents:
diff changeset
   385
    wrapper->VerifyEventStackL( _L8("Direct Bind/Unbind single context: ") );
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
    messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   388
    messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   389
    }
hgs
parents:
diff changeset
   390
hgs
parents:
diff changeset
   391
hgs
parents:
diff changeset
   392
hgs
parents:
diff changeset
   393
hgs
parents:
diff changeset
   394
// ===========================================================================
hgs
parents:
diff changeset
   395
// TEST CASE
hgs
parents:
diff changeset
   396
// ===========================================================================
hgs
parents:
diff changeset
   397
//
hgs
parents:
diff changeset
   398
void T_SessionMng::T_Simple_Bind_Direct_CloseHandle_L()
hgs
parents:
diff changeset
   399
    {
hgs
parents:
diff changeset
   400
    EUNIT_PRINT( _L("Simple context Bind/Unbind test.") );
hgs
parents:
diff changeset
   401
    EUNIT_PRINT( _L("Client side closes context handle while the binding is still active.") );
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   404
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   405
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   406
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
   
hgs
parents:
diff changeset
   409
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   410
    messenger->SetNoError();   
hgs
parents:
diff changeset
   411
hgs
parents:
diff changeset
   412
hgs
parents:
diff changeset
   413
    TXIMPRequestId reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   414
hgs
parents:
diff changeset
   415
    messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   416
    wrapper->DeletePresenceContext();
hgs
parents:
diff changeset
   417
hgs
parents:
diff changeset
   418
    // wait for plugin to die properly here
hgs
parents:
diff changeset
   419
    CUserAfter::AfterSecondsL( 10 );
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
    messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   422
    messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   423
    }
hgs
parents:
diff changeset
   424
hgs
parents:
diff changeset
   425
hgs
parents:
diff changeset
   426
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
// ===========================================================================
hgs
parents:
diff changeset
   429
// TEST CASE
hgs
parents:
diff changeset
   430
// ===========================================================================
hgs
parents:
diff changeset
   431
//
hgs
parents:
diff changeset
   432
void T_SessionMng::T_ErrFromPlg_LeaveOnOpenSession_L()
hgs
parents:
diff changeset
   433
    {
hgs
parents:
diff changeset
   434
    EUNIT_PRINT( _L("Error from plug-in in bind/unbind." ) );
hgs
parents:
diff changeset
   435
    EUNIT_PRINT( _L("Plug-in leaves from OpenSessionL()." ) );
hgs
parents:
diff changeset
   436
hgs
parents:
diff changeset
   437
hgs
parents:
diff changeset
   438
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   439
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   440
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   441
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   442
hgs
parents:
diff changeset
   443
        {
hgs
parents:
diff changeset
   444
        wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingFailKErrAbort );
hgs
parents:
diff changeset
   445
        messenger->SetLeave( KErrAbort );
hgs
parents:
diff changeset
   446
        messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   447
        
hgs
parents:
diff changeset
   448
        TXIMPRequestId reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   449
hgs
parents:
diff changeset
   450
        wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   451
        wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   452
hgs
parents:
diff changeset
   453
        //Verify that features are not available
hgs
parents:
diff changeset
   454
        TRAPD( featLoadErr,
hgs
parents:
diff changeset
   455
                MXIMPFeatureInfo* ctxFeats = context->GetContextFeaturesLC();
hgs
parents:
diff changeset
   456
                CleanupStack::PopAndDestroy(); //ctxFeats
hgs
parents:
diff changeset
   457
             );
hgs
parents:
diff changeset
   458
        EUNIT_ASSERT_NOT_EQUALS( featLoadErr, KErrNone );
hgs
parents:
diff changeset
   459
hgs
parents:
diff changeset
   460
        // plugin should've been unloaded without calling CloseSession
hgs
parents:
diff changeset
   461
        EUNIT_ASSERT_DESC( ! messenger->GetBoolean( EXIMPPlgTestCloseSessionCalled ), "CloseSession was called" );
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
        messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   464
        }
hgs
parents:
diff changeset
   465
    }
hgs
parents:
diff changeset
   466
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
// ===========================================================================
hgs
parents:
diff changeset
   469
// TEST CASE:
hgs
parents:
diff changeset
   470
// ===========================================================================
hgs
parents:
diff changeset
   471
//
hgs
parents:
diff changeset
   472
void T_SessionMng::T_ErrFromPlg_ErrorResultOnOpenSession_L()
hgs
parents:
diff changeset
   473
    {
hgs
parents:
diff changeset
   474
    EUNIT_PRINT( _L("Error from plug-in in bind/unbind") );
hgs
parents:
diff changeset
   475
    EUNIT_PRINT( _L("Plug-in completes OpenSessionL() with error") );
hgs
parents:
diff changeset
   476
    EUNIT_PRINT( _L("Clint ctx can be reused for second bind.") );
hgs
parents:
diff changeset
   477
hgs
parents:
diff changeset
   478
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   479
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   480
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   481
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   482
hgs
parents:
diff changeset
   483
        {
hgs
parents:
diff changeset
   484
        wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingFailKErrAbort );
hgs
parents:
diff changeset
   485
hgs
parents:
diff changeset
   486
        messenger->SetError( KErrAbort );
hgs
parents:
diff changeset
   487
hgs
parents:
diff changeset
   488
        messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   489
hgs
parents:
diff changeset
   490
        TXIMPRequestId reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   491
hgs
parents:
diff changeset
   492
        wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   493
        wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   494
hgs
parents:
diff changeset
   495
hgs
parents:
diff changeset
   496
        // plugin should've been unloaded without calling CloseSession
hgs
parents:
diff changeset
   497
        EUNIT_ASSERT_DESC( ! messenger->GetBoolean( EXIMPPlgTestCloseSessionCalled ), "CloseSession was called" );
hgs
parents:
diff changeset
   498
        messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   499
        }
hgs
parents:
diff changeset
   500
hgs
parents:
diff changeset
   501
    
hgs
parents:
diff changeset
   502
    //It should be possible to reuse client ctx for second bind
hgs
parents:
diff changeset
   503
        {
hgs
parents:
diff changeset
   504
        //Do bind, wait and verify events
hgs
parents:
diff changeset
   505
        wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingOk );
hgs
parents:
diff changeset
   506
        
hgs
parents:
diff changeset
   507
        messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   508
        messenger->SetNoError();
hgs
parents:
diff changeset
   509
hgs
parents:
diff changeset
   510
        TXIMPRequestId reqId;
hgs
parents:
diff changeset
   511
        reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   512
        EUNIT_ASSERT( reqId != TXIMPRequestId::Null() );
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
        wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   515
        wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
        messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
        //Verify features availability
hgs
parents:
diff changeset
   520
        MXIMPFeatureInfo* ctxFeats = context->GetContextFeaturesLC();
hgs
parents:
diff changeset
   521
        EUNIT_ASSERT_DESC( ctxFeats->FeatureIds().MdcaCount() > 0, "No features from context" );
hgs
parents:
diff changeset
   522
        CleanupStack::PopAndDestroy(); //ctxFeats
hgs
parents:
diff changeset
   523
hgs
parents:
diff changeset
   524
        //Do unbind, wait and verify events
hgs
parents:
diff changeset
   525
        wrapper->SetupListenerL( EXIMPTestStatusEvents_UnbindingOk );
hgs
parents:
diff changeset
   526
        messenger->SetNoError();
hgs
parents:
diff changeset
   527
        reqId = context->UnbindL();
hgs
parents:
diff changeset
   528
        EUNIT_ASSERT( reqId != TXIMPRequestId::Null() );
hgs
parents:
diff changeset
   529
hgs
parents:
diff changeset
   530
        wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   531
        wrapper->VerifyEventStackL( _L8("Unbinding single context: ") );
hgs
parents:
diff changeset
   532
hgs
parents:
diff changeset
   533
        messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   534
        messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   535
        }    
hgs
parents:
diff changeset
   536
    }
hgs
parents:
diff changeset
   537
hgs
parents:
diff changeset
   538
hgs
parents:
diff changeset
   539
// ===========================================================================
hgs
parents:
diff changeset
   540
// TEST CASE:
hgs
parents:
diff changeset
   541
// Simple bind, bind error
hgs
parents:
diff changeset
   542
// ===========================================================================
hgs
parents:
diff changeset
   543
//
hgs
parents:
diff changeset
   544
void T_SessionMng::T_ErrFromPlg_InvalidReqIdOnOpenSession_L()
hgs
parents:
diff changeset
   545
    {
hgs
parents:
diff changeset
   546
    EUNIT_PRINT( _L("Error from plug-in in bind/unbind") );
hgs
parents:
diff changeset
   547
    EUNIT_PRINT( _L("Plug-in completes OpenSessionL() with faulty ReqId") );
hgs
parents:
diff changeset
   548
hgs
parents:
diff changeset
   549
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   550
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   551
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   552
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   553
hgs
parents:
diff changeset
   554
        {
hgs
parents:
diff changeset
   555
        wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingFailInvalidReqId );
hgs
parents:
diff changeset
   556
        messenger->SetBoolean( EXIMPTestPlgBehaveInvalidReqId );
hgs
parents:
diff changeset
   557
        messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   558
        
hgs
parents:
diff changeset
   559
        TXIMPRequestId reqId = BindContextToDefaultL( context );
hgs
parents:
diff changeset
   560
hgs
parents:
diff changeset
   561
        wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   562
        wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   563
        }
hgs
parents:
diff changeset
   564
hgs
parents:
diff changeset
   565
    }
hgs
parents:
diff changeset
   566
hgs
parents:
diff changeset
   567
hgs
parents:
diff changeset
   568
hgs
parents:
diff changeset
   569
// ===========================================================================
hgs
parents:
diff changeset
   570
// TEST CASE:
hgs
parents:
diff changeset
   571
// ===========================================================================
hgs
parents:
diff changeset
   572
//
hgs
parents:
diff changeset
   573
void T_SessionMng::T_ErrFromPlg_ErrorResultOnCloseSession_L()
hgs
parents:
diff changeset
   574
    {
hgs
parents:
diff changeset
   575
    EUNIT_PRINT( _L("Error from plug-in in bind/unbind") );
hgs
parents:
diff changeset
   576
    EUNIT_PRINT( _L("Plug-in completes CloseSession() with error") );
hgs
parents:
diff changeset
   577
hgs
parents:
diff changeset
   578
    CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( 0 );
hgs
parents:
diff changeset
   579
    MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   580
    CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   581
    CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   582
hgs
parents:
diff changeset
   583
    //Do bind, wait and verify events
hgs
parents:
diff changeset
   584
    wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingOk );
hgs
parents:
diff changeset
   585
hgs
parents:
diff changeset
   586
    messenger->SetNoError();
hgs
parents:
diff changeset
   587
hgs
parents:
diff changeset
   588
    messenger->SetPluginIndex( 0 );
hgs
parents:
diff changeset
   589
    
hgs
parents:
diff changeset
   590
    TXIMPRequestId reqId = BindContextToDefaultL( context );    
hgs
parents:
diff changeset
   591
hgs
parents:
diff changeset
   592
hgs
parents:
diff changeset
   593
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   594
    wrapper->VerifyEventStackL( _L8("Binding single context: ") );
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
    messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   597
hgs
parents:
diff changeset
   598
    //Do unbind, wait and verify events
hgs
parents:
diff changeset
   599
    wrapper->SetupListenerL( EXIMPTestStatusEvents_UnbindingOk );
hgs
parents:
diff changeset
   600
hgs
parents:
diff changeset
   601
    messenger->SetError( KErrCouldNotDisconnect );
hgs
parents:
diff changeset
   602
    reqId = context->UnbindL();
hgs
parents:
diff changeset
   603
hgs
parents:
diff changeset
   604
    wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   605
    wrapper->VerifyEventStackL( _L8("Unbinding single context: ") );
hgs
parents:
diff changeset
   606
hgs
parents:
diff changeset
   607
    messenger->AssertPluginDied( ETrue );
hgs
parents:
diff changeset
   608
    }
hgs
parents:
diff changeset
   609
hgs
parents:
diff changeset
   610
  
hgs
parents:
diff changeset
   611
hgs
parents:
diff changeset
   612
hgs
parents:
diff changeset
   613
hgs
parents:
diff changeset
   614
// ===========================================================================
hgs
parents:
diff changeset
   615
// TEST CASE
hgs
parents:
diff changeset
   616
// ===========================================================================
hgs
parents:
diff changeset
   617
//
hgs
parents:
diff changeset
   618
void T_SessionMng::T_Multi_Bind_Unbind_WithWaits_L()
hgs
parents:
diff changeset
   619
    {
hgs
parents:
diff changeset
   620
    EUNIT_PRINT( _L("Multiple context Bind/Unbind test.") );
hgs
parents:
diff changeset
   621
    EUNIT_PRINT( _L("Client performs multiple bind & unbinds for a separated context sharing a connection.") );
hgs
parents:
diff changeset
   622
hgs
parents:
diff changeset
   623
    TInt ix;
hgs
parents:
diff changeset
   624
hgs
parents:
diff changeset
   625
    // bind contexts
hgs
parents:
diff changeset
   626
    for ( ix = 0; ix < 3; ix++ )
hgs
parents:
diff changeset
   627
        {
hgs
parents:
diff changeset
   628
        CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( ix );
hgs
parents:
diff changeset
   629
        MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   630
        CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   631
        CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   632
hgs
parents:
diff changeset
   633
        if ( ix == 1 )
hgs
parents:
diff changeset
   634
            {
hgs
parents:
diff changeset
   635
            // fail the middle one
hgs
parents:
diff changeset
   636
            wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingFailKErrAbort );
hgs
parents:
diff changeset
   637
            messenger->SetError( KErrAbort );   // for binding
hgs
parents:
diff changeset
   638
            }
hgs
parents:
diff changeset
   639
        else
hgs
parents:
diff changeset
   640
            {
hgs
parents:
diff changeset
   641
            wrapper->SetupListenerL( EXIMPTestStatusEvents_BindingOk );
hgs
parents:
diff changeset
   642
            messenger->SetNoError();   // for binding
hgs
parents:
diff changeset
   643
            }
hgs
parents:
diff changeset
   644
hgs
parents:
diff changeset
   645
        messenger->SetPluginIndex( ix );
hgs
parents:
diff changeset
   646
hgs
parents:
diff changeset
   647
        TUid protocol = { K_PRFW_TST_PROTOCOL_1_IMPLEMENTATION_UID };
hgs
parents:
diff changeset
   648
        const TDesC16& instanceId = wrapper->InstanceId();
hgs
parents:
diff changeset
   649
        TXIMPRequestId reqId = context->BindToL( protocol,
hgs
parents:
diff changeset
   650
                                                _L("www.imps.no/wv"),
hgs
parents:
diff changeset
   651
                                                _L("user"),
hgs
parents:
diff changeset
   652
                                                _L("password"),
hgs
parents:
diff changeset
   653
                                                instanceId,
hgs
parents:
diff changeset
   654
                                                ix );
hgs
parents:
diff changeset
   655
hgs
parents:
diff changeset
   656
        wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   657
hgs
parents:
diff changeset
   658
        TBuf8<100> title;
hgs
parents:
diff changeset
   659
        title.AppendFormat( _L8("Bind [%d]: "), ix );
hgs
parents:
diff changeset
   660
        wrapper->VerifyEventStackL( title );
hgs
parents:
diff changeset
   661
hgs
parents:
diff changeset
   662
        switch ( ix )
hgs
parents:
diff changeset
   663
            {
hgs
parents:
diff changeset
   664
            case 0 :
hgs
parents:
diff changeset
   665
            case 1 :
hgs
parents:
diff changeset
   666
            case 2 :
hgs
parents:
diff changeset
   667
                {
hgs
parents:
diff changeset
   668
                messenger->AssertOpenSessionCalled( ETrue );
hgs
parents:
diff changeset
   669
                break;
hgs
parents:
diff changeset
   670
                }
hgs
parents:
diff changeset
   671
            default :
hgs
parents:
diff changeset
   672
                {
hgs
parents:
diff changeset
   673
                break;
hgs
parents:
diff changeset
   674
                }
hgs
parents:
diff changeset
   675
            }
hgs
parents:
diff changeset
   676
    }
hgs
parents:
diff changeset
   677
hgs
parents:
diff changeset
   678
hgs
parents:
diff changeset
   679
    // now context has been bound.
hgs
parents:
diff changeset
   680
    // one has failed, but two are okay. do 3 unbinds.
hgs
parents:
diff changeset
   681
    for( ix = 0; ix < 3; ix++ )
hgs
parents:
diff changeset
   682
        {
hgs
parents:
diff changeset
   683
        CXIMPTestContextWrapper* wrapper = iWrapperMgr->GetWrapperL( ix );
hgs
parents:
diff changeset
   684
        MXIMPContext* context = wrapper->GetContext();
hgs
parents:
diff changeset
   685
        CXIMPTestStatusEventListener* eventListener = wrapper->GetEventListener();
hgs
parents:
diff changeset
   686
        CXIMPTestMessenger* messenger = wrapper->GetMessenger();
hgs
parents:
diff changeset
   687
hgs
parents:
diff changeset
   688
        if ( ix == 1 )
hgs
parents:
diff changeset
   689
            {
hgs
parents:
diff changeset
   690
            // the middle one has failed
hgs
parents:
diff changeset
   691
            TRAPD( err, context->UnbindL() );
hgs
parents:
diff changeset
   692
            EUNIT_ASSERT_EQUALS( err, KErrNotReady );
hgs
parents:
diff changeset
   693
            }
hgs
parents:
diff changeset
   694
hgs
parents:
diff changeset
   695
        else
hgs
parents:
diff changeset
   696
            {
hgs
parents:
diff changeset
   697
            // we expect all unbinds to be okay from client point of view
hgs
parents:
diff changeset
   698
            wrapper->SetupListenerL( EXIMPTestStatusEvents_UnbindingOk );
hgs
parents:
diff changeset
   699
            messenger->SetNoError();   // For unbinding
hgs
parents:
diff changeset
   700
hgs
parents:
diff changeset
   701
            TXIMPRequestId reqId = context->UnbindL();
hgs
parents:
diff changeset
   702
            wrapper->WaitRequestAndStackEvents( reqId );
hgs
parents:
diff changeset
   703
hgs
parents:
diff changeset
   704
            TBuf8<100> title;
hgs
parents:
diff changeset
   705
            title.AppendFormat( _L8("Unbind [%d]: "), ix );
hgs
parents:
diff changeset
   706
            wrapper->VerifyEventStackL( title );
hgs
parents:
diff changeset
   707
            messenger->AssertCloseSessionCalled( ETrue );
hgs
parents:
diff changeset
   708
            }
hgs
parents:
diff changeset
   709
        }
hgs
parents:
diff changeset
   710
    }
hgs
parents:
diff changeset
   711
    
hgs
parents:
diff changeset
   712
    
hgs
parents:
diff changeset
   713
TXIMPRequestId T_SessionMng::BindContextToDefaultL( MXIMPContext* aContext )
hgs
parents:
diff changeset
   714
    {
hgs
parents:
diff changeset
   715
    TUid protocol = { K_PRFW_TST_PROTOCOL_1_IMPLEMENTATION_UID };
hgs
parents:
diff changeset
   716
    return aContext->BindToL( protocol,
hgs
parents:
diff changeset
   717
                             _L("www.imps.no/wv"),
hgs
parents:
diff changeset
   718
                             _L("user"),
hgs
parents:
diff changeset
   719
                             _L("password"),
hgs
parents:
diff changeset
   720
                             0 ); 
hgs
parents:
diff changeset
   721
    }
hgs
parents:
diff changeset
   722
hgs
parents:
diff changeset
   723
hgs
parents:
diff changeset
   724
hgs
parents:
diff changeset
   725
// ===========================================================================
hgs
parents:
diff changeset
   726
// TEST CASE TABLE
hgs
parents:
diff changeset
   727
// ===========================================================================
hgs
parents:
diff changeset
   728
//
hgs
parents:
diff changeset
   729
EUNIT_BEGIN_TEST_TABLE(
hgs
parents:
diff changeset
   730
        T_SessionMng,
hgs
parents:
diff changeset
   731
        "XIMP session management tests",
hgs
parents:
diff changeset
   732
        "MODULE" )
hgs
parents:
diff changeset
   733
hgs
parents:
diff changeset
   734
hgs
parents:
diff changeset
   735
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   736
        "Simple bind wait unbind",
hgs
parents:
diff changeset
   737
        "",
hgs
parents:
diff changeset
   738
        "",
hgs
parents:
diff changeset
   739
        "FUNCTIONALITY",
hgs
parents:
diff changeset
   740
        Setup_L,
hgs
parents:
diff changeset
   741
        T_Simple_Bind_Wait_Unbind_L,
hgs
parents:
diff changeset
   742
        Teardown )
hgs
parents:
diff changeset
   743
hgs
parents:
diff changeset
   744
 PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   745
        "Settings bind wait unbind",
hgs
parents:
diff changeset
   746
        "",
hgs
parents:
diff changeset
   747
        "",
hgs
parents:
diff changeset
   748
        "FUNCTIONALITY",
hgs
parents:
diff changeset
   749
        Setup_L,
hgs
parents:
diff changeset
   750
        T_Settings_Bind_Wait_Unbind_L,
hgs
parents:
diff changeset
   751
        Teardown )
hgs
parents:
diff changeset
   752
hgs
parents:
diff changeset
   753
EUNIT_ALLOC_TEST(
hgs
parents:
diff changeset
   754
        "Simple bind in OOM",
hgs
parents:
diff changeset
   755
        "",
hgs
parents:
diff changeset
   756
        "",
hgs
parents:
diff changeset
   757
        "FUNCTIONALITY",
hgs
parents:
diff changeset
   758
        Setup_L,
hgs
parents:
diff changeset
   759
        T_Simple_Bind_Wait_OOM_L,
hgs
parents:
diff changeset
   760
        Teardown )
hgs
parents:
diff changeset
   761
hgs
parents:
diff changeset
   762
hgs
parents:
diff changeset
   763
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   764
        "Simple bind wait unbind with reqComplete event filter",
hgs
parents:
diff changeset
   765
        "",
hgs
parents:
diff changeset
   766
        "",
hgs
parents:
diff changeset
   767
        "FUNCTIONALITY",
hgs
parents:
diff changeset
   768
        Setup_L,
hgs
parents:
diff changeset
   769
        T_Simple_Bind_Wait_Unbind_WithReqCompleteEventFilter_L,
hgs
parents:
diff changeset
   770
        Teardown )
hgs
parents:
diff changeset
   771
hgs
parents:
diff changeset
   772
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   773
        "Simple bind wait close handle",
hgs
parents:
diff changeset
   774
        "",
hgs
parents:
diff changeset
   775
        "",
hgs
parents:
diff changeset
   776
        "FUNCTIONALITY",
hgs
parents:
diff changeset
   777
        Setup_L,
hgs
parents:
diff changeset
   778
        T_Simple_Bind_Wait_CloseHandle_L,
hgs
parents:
diff changeset
   779
        Teardown )
hgs
parents:
diff changeset
   780
hgs
parents:
diff changeset
   781
hgs
parents:
diff changeset
   782
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   783
        "Simple bind direct unbind",
hgs
parents:
diff changeset
   784
        "",
hgs
parents:
diff changeset
   785
        "",
hgs
parents:
diff changeset
   786
        "FUNCTIONALITY",
hgs
parents:
diff changeset
   787
        Setup_L,
hgs
parents:
diff changeset
   788
        T_Simple_Bind_Direct_Unbind_L,
hgs
parents:
diff changeset
   789
        Teardown )
hgs
parents:
diff changeset
   790
hgs
parents:
diff changeset
   791
hgs
parents:
diff changeset
   792
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   793
        "Simple bind direct close handle",
hgs
parents:
diff changeset
   794
        "",
hgs
parents:
diff changeset
   795
        "",
hgs
parents:
diff changeset
   796
        "FUNCTIONALITY",
hgs
parents:
diff changeset
   797
        Setup_L,
hgs
parents:
diff changeset
   798
        T_Simple_Bind_Direct_CloseHandle_L,
hgs
parents:
diff changeset
   799
        Teardown )
hgs
parents:
diff changeset
   800
hgs
parents:
diff changeset
   801
hgs
parents:
diff changeset
   802
// opensession errors
hgs
parents:
diff changeset
   803
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   804
        "ErrFromPlg leave OpenSession",
hgs
parents:
diff changeset
   805
        "",
hgs
parents:
diff changeset
   806
        "",
hgs
parents:
diff changeset
   807
        "ERROHANDLING",
hgs
parents:
diff changeset
   808
        Setup_L,
hgs
parents:
diff changeset
   809
        T_ErrFromPlg_LeaveOnOpenSession_L,
hgs
parents:
diff changeset
   810
        Teardown )
hgs
parents:
diff changeset
   811
hgs
parents:
diff changeset
   812
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   813
        "ErrFromPlg OpenSession",
hgs
parents:
diff changeset
   814
        "",
hgs
parents:
diff changeset
   815
        "",
hgs
parents:
diff changeset
   816
        "ERROHANDLING",
hgs
parents:
diff changeset
   817
        Setup_L,
hgs
parents:
diff changeset
   818
        T_ErrFromPlg_ErrorResultOnOpenSession_L,
hgs
parents:
diff changeset
   819
        Teardown )
hgs
parents:
diff changeset
   820
hgs
parents:
diff changeset
   821
hgs
parents:
diff changeset
   822
hgs
parents:
diff changeset
   823
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   824
        "ErrFromPlg Invalid ReqId",
hgs
parents:
diff changeset
   825
        "",
hgs
parents:
diff changeset
   826
        "",
hgs
parents:
diff changeset
   827
        "ERROHANDLING",
hgs
parents:
diff changeset
   828
        Setup_L,
hgs
parents:
diff changeset
   829
        T_ErrFromPlg_InvalidReqIdOnOpenSession_L,
hgs
parents:
diff changeset
   830
        Teardown )
hgs
parents:
diff changeset
   831
hgs
parents:
diff changeset
   832
hgs
parents:
diff changeset
   833
// closesession errors
hgs
parents:
diff changeset
   834
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   835
        "ErrFromPlg CloseSession",
hgs
parents:
diff changeset
   836
        "",
hgs
parents:
diff changeset
   837
        "",
hgs
parents:
diff changeset
   838
        "ERROHANDLING",
hgs
parents:
diff changeset
   839
        Setup_L,
hgs
parents:
diff changeset
   840
        T_ErrFromPlg_ErrorResultOnCloseSession_L,
hgs
parents:
diff changeset
   841
        Teardown )
hgs
parents:
diff changeset
   842
hgs
parents:
diff changeset
   843
hgs
parents:
diff changeset
   844
// multiple bind + unbind tests
hgs
parents:
diff changeset
   845
PRFW_NOT_DECORATED_TEST(
hgs
parents:
diff changeset
   846
        "Multiple context Bind/Unbind test.",
hgs
parents:
diff changeset
   847
        "",
hgs
parents:
diff changeset
   848
        "",
hgs
parents:
diff changeset
   849
        "ERROHANDLING",
hgs
parents:
diff changeset
   850
        Setup_3_L,
hgs
parents:
diff changeset
   851
        T_Multi_Bind_Unbind_WithWaits_L,
hgs
parents:
diff changeset
   852
        Teardown )
hgs
parents:
diff changeset
   853
hgs
parents:
diff changeset
   854
hgs
parents:
diff changeset
   855
EUNIT_END_TEST_TABLE
hgs
parents:
diff changeset
   856
hgs
parents:
diff changeset
   857
hgs
parents:
diff changeset
   858
// ===========================================================================
hgs
parents:
diff changeset
   859
// TEST SUITE CONSTRUCTION
hgs
parents:
diff changeset
   860
// ===========================================================================
hgs
parents:
diff changeset
   861
//
hgs
parents:
diff changeset
   862
EXPORT_C MEUnitTest* CreateTestSuiteL()
hgs
parents:
diff changeset
   863
    {
hgs
parents:
diff changeset
   864
    return T_SessionMng::NewL();
hgs
parents:
diff changeset
   865
    }
hgs
parents:
diff changeset
   866
hgs
parents:
diff changeset
   867
hgs
parents:
diff changeset
   868
// end of file
hgs
parents:
diff changeset
   869
hgs
parents:
diff changeset
   870
hgs
parents:
diff changeset
   871
hgs
parents:
diff changeset
   872
hgs
parents:
diff changeset
   873
hgs
parents:
diff changeset
   874