websrv_pub/web_service_connection_api/tsrc/SenConnectionTimeoutsTester/src/SenConnectionTimeoutsTesterBlocks.cpp
changeset 0 62f9d29f7211
child 23 a1df79fa35b4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/websrv_pub/web_service_connection_api/tsrc/SenConnectionTimeoutsTester/src/SenConnectionTimeoutsTesterBlocks.cpp	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,797 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:        ?Description
+*
+*/
+
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "SenConnectionTimeoutsTester.h"
+
+//  EXTERNAL INCLUDES
+#include <http.h>
+#include <httperr.h>
+
+#include <SenBaseFragment.h>
+#include <SenBaseElement.h>
+#include <SenDomFragment.h>
+#include <SenServiceConnection.h>
+#include <SenServicePattern.h>
+#include <SenSoapEnvelope.h>
+#include <SenSoapEnvelope2.h>
+#include <SenXmlReader.h>
+#include <SenXmlServiceDescription.h>
+#include <SenXmlUtils.h>
+#include <SenServiceManager.h>
+#include <SenIdentityProvider.h>
+#include <SenHttpTransportProperties.h>
+#include <SenSoapMessage.h>
+#include <SenSoapMessage2.h>
+#include <SenDateUtils.h>
+#include <SenTransportProperties.h>
+
+#include <xmlengchunkcontainer.h>
+#include <xmlengfilecontainer.h>
+#include <xmlengserializer.h>
+
+#include <e32base.h> // for CActive
+#include <aknnotewrappers.h> 
+
+#include <commdb.h>
+
+#include <s32file.h>    // filestream
+#include <e32svr.h>     // fileman
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+namespace 
+    {
+        
+#ifdef AOL_RADIO_SERVICE
+    // AOL redio.etenee.net:9080
+    _LIT8(KWSPContract,         "urn:aol-com:services:radio");
+    _LIT8(KAuthServEndpoint,    "http://radio.etenee.net:9080/tfs/IDPSSO_IDWSF");
+    _LIT8(KASProviderID,        "http://radio.etenee.net:9080/tfs/");
+    _LIT8(KTestAuthzID,         "012345678901234");
+    _LIT8(KTestPassword,        "012345678901234");
+#elif VALIMO_ADDRESSBOOK_SERVICE
+    // Addressbook service hosted inside Nokia intra by ASP / testing team
+    _LIT8(KWSPContract,         "urn:nokia:test:addrbook:2004-09");
+    _LIT8(KAuthServEndpoint,    "http://10.21.32.110/tfs/IDPSSO_IDWSF10");
+    _LIT8(KASProviderID,        "provider01");
+    _LIT8(KTestAuthzID,         "john");
+    _LIT8(KTestPassword,        "password");
+#elif SYSOPENDIGIA_ADDRESSBOOK_SERVICE
+    _LIT8(KWSPContract,         "urn:nokia:test:addrbook:2004-09");
+    _LIT8(KAuthServEndpoint,    "http://ys01liw022.partner.yomi.com:9080/tfs/IDPSSO_IDWSF");
+    _LIT8(KASProviderID,        "http://ys01liw022.partner.yomi.com:9080/tfs/");
+    _LIT8(KTestAuthzID,         "012345678901234");
+    _LIT8(KTestPassword,        "012345678901234");
+#else // == default (no MACROs defined in .mmp)
+    // Addressbook service hosted by Forum Nokia (accessible from external network)
+    _LIT8(KWSPContract,         "urn:nokia:test:addrbook:2004-09"); aa
+    _LIT8(KAuthServEndpoint,    "http://selma.ndhub.net:9080/tfs/IDPSSO_IDWSF");
+    _LIT8(KASProviderID,        "http://selma.ndhub.net:9080/tfs/");
+    _LIT8(KTestAuthzID,         "testuser1");
+    _LIT8(KTestPassword,        "testuser1");
+#endif // FN_ADDRESSBOOK_SERVICE
+
+
+    _LIT8(KASContract,              "urn:liberty:as:2004-04");
+    _LIT8(KHttpsEndPoint,           "https://10.21.32.110/sereneHardCoded/WS_WSI_R9980_001" );    
+    
+    _LIT8(KWSIFrameworkID,          "WS-I");
+    _LIT8(KIDWSFFrameworkID,        "ID-WSF");
+    _LIT8(KRESTFrameworkID,         "REST");       
+//    _LIT8(KWsStarFrameworkID,       "WS-STAR");       
+#ifdef SYSOPENDIGIA_ADDRESSBOOK_SERVICE
+    _LIT8(KAddressBookServiceId,    "http://radio.aol.com/xsd/2.0/ns/");
+    _LIT8(KAddressBookContract,     "http://radio.aol.com/xsd/2.0/ns/");
+#else
+    _LIT8(KAddressBookServiceId,    "urn:nokia:test:addrbook:2004-09");
+    _LIT8(KAddressBookContract,     "urn:nokia:test:addrbook:2004-09");
+#endif
+    
+#ifdef SYSOPENDIGIA_ADDRESSBOOK_SERVICE
+    _LIT(KIAPName,                  "Ethernet No Daemon Static IP");
+#else
+    //_LIT(KIAPName,                  "Ethernet with Daemon Dynamic IP");
+    //_LIT(KIAPName,                  "Ethernet No Daemon Static IP");
+    _LIT(KIAPName,                  "Ethernet with Daemon Dynamic IP");
+#endif
+    _LIT8(KLoggerFileNameProperty,  "HttpLoggerFileName");
+
+    _LIT(KFileToRead,               "c:\\Logs\\LoggingHttpFilter\\httptrace.xml");
+    _LIT8(KFileName,                "httptrace.xml");
+
+    _LIT8(KHTTPMethodGet,           "GET");
+    _LIT8(KHTTPMethodPost,          "POST");
+    
+//    const TBool MultipleSimultanousRHttpSessionsSupported = EFalse;
+    // If IAP changes all previously sent messages will be canceled.
+    
+    
+    _LIT8(KProxyHost,               "172.19.160.50"); // IP address to: bsprx01.americas.nokia.com
+    const TInt KProxyPort =         8080;
+    
+    }
+
+
+// MACROS
+//#define ?macro ?macro_def
+//Macro for Porting to STIF
+#define LOCAL_ASSERT(expression)	{if(!(expression)){return KErrArgument;}}
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSenConnectionTimeoutsTester::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CSenConnectionTimeoutsTester::Delete() 
+    {
+
+    }
+
+// -----------------------------------------------------------------------------
+// CSenConnectionTimeoutsTester::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CSenConnectionTimeoutsTester::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+		ENTRY("SendL_TPAsync1Test_CSenServiceConnection_SendLconnectionisnotinitialized", CSenConnectionTimeoutsTester_TP_Async1),
+		ENTRY("SendL_TPAsync2Test_CSenServiceConnection_SendLconnectionisnotinitialized", CSenConnectionTimeoutsTester_TP_Async2),
+        //ADD NEW ENTRY HERE
+        // [test cases entries] - Do not remove
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+
+// CONSTRUCTION
+//CSenConnectionTimeoutsTester* CSenConnectionTimeoutsTester::NewL()
+//    {
+//    CSenConnectionTimeoutsTester* self = CSenConnectionTimeoutsTester::NewLC();
+//    CleanupStack::Pop();
+
+//    return self;
+//    }
+
+//CSenConnectionTimeoutsTester* CSenConnectionTimeoutsTester::NewLC()
+//    {
+//    CSenConnectionTimeoutsTester* self = new( ELeave ) CSenConnectionTimeoutsTester();
+//    CleanupStack::PushL( self );
+
+//    self->ConstructL();
+
+//    return self;
+//    }
+
+
+// Default constructor
+//CSenConnectionTimeoutsTester::CSenConnectionTimeoutsTester():iInitialized(FALSE)
+//    {
+//    }
+      
+// Second phase construct
+//void CSenConnectionTimeoutsTester::ConstructL()
+//    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+//    CEUnitTestSuiteClass::ConstructL();
+//    }
+
+//  METHODS
+
+void CSenConnectionTimeoutsTester::HandleMessageL(const TDesC8& aMessage)
+    {
+    iCallback = ECallbackHandleMessage;
+    if ( ipMessage )
+        {
+        delete ipMessage;
+        ipMessage = NULL;
+        }
+    ipMessage = aMessage.AllocL();
+    iTransactionId = iServiceConnection->TxnId();
+
+    StopActiveScheduler();
+    }
+
+void CSenConnectionTimeoutsTester::HandleErrorL(const int aErrorCode, const TDesC8& aError)
+    {
+    iCallback = ECallbackHandleError;
+    iErrorCode = aErrorCode;
+    
+    // debugging only - START
+    if( HTTPStatus::IsInformational( this->iErrorCode ) )
+        {
+        // if((aStatus >= HTTPStatus::EContinue) && (aStatus < HTTPStatus::EOk))
+        RDebug::Print(_L("- HTTP error code: IS INFORMATION."));
+        }
+    if( HTTPStatus::IsSuccessful( this->iErrorCode ) )
+        {
+        // if((aStatus >= HTTPStatus::EOk) && (aStatus < HTTPStatus::EMultipleChoices))
+        RDebug::Print(_L("- HTTP error code: IS SUCCESSFUL."));
+        }
+    if( HTTPStatus::IsRedirection( this->iErrorCode ) )
+        {
+        // if((aStatus >= HTTPStatus::EMultipleChoices) && (aStatus < HTTPStatus::EBadRequest))
+        RDebug::Print(_L("- HTTP error code: IS REDIRECTION."));
+        }
+    if( HTTPStatus::IsClientError( this->iErrorCode ) )
+        {
+        // if((aStatus >= HTTPStatus::EBadRequest) && (aStatus < HTTPStatus::EInternalServerError))
+        RDebug::Print(_L("- HTTP error code: IS CLIENT ERROR."));
+        }
+    if( HTTPStatus::IsServerError( this->iErrorCode ) )
+        {
+        // if(aStatus >= HTTPStatus::EInternalServerError)
+        RDebug::Print(_L("- HTTP error code: IS CLIENT ERROR."));
+        }    
+    // debuggin only - END
+    
+    if ( ipMessage )
+        {
+        delete ipMessage;
+        ipMessage = NULL;
+        }
+    ipMessage = aError.AllocL();
+    iTransactionId = iServiceConnection->TxnId();
+    
+    TBuf<70> errorMessage;
+    _LIT(KErrNotInitialized, "Connection isn't initialized.");
+    
+    switch(aErrorCode) 
+        {
+        case KErrSubmitting:
+            errorMessage = KErrNotInitialized;
+            break;
+        default:
+            break;
+        }   
+
+    StopActiveScheduler();
+    }
+
+void CSenConnectionTimeoutsTester::ErrorL(TInt aCode)
+    {
+    _LIT(KNotReady, "Connection is not ready.");
+    
+    TBuf<70> errorMessage;
+    switch(aCode) 
+        {
+        case EConnectionNotReady:
+            errorMessage = KNotReady;
+            break;
+        default:
+            break;
+        }
+    }
+
+void CSenConnectionTimeoutsTester::SetStatus(const TInt aStatus)
+    {
+    switch(aStatus)
+        {
+        case KSenConnectionStatusNew:
+            break;
+        case KSenConnectionStatusReady:
+            iInitialized = ETrue;
+            break;
+        case KSenConnectionStatusExpired:
+            break;
+        default:
+            TBuf<32> num;
+            num.AppendNum(aStatus);
+            break;
+        }
+
+    if ( aStatus >= KSenConnectionStatusCreateFailed && aStatus <= KSenConnectionStatusMetadataExchange )
+        {
+        if(!iInitialized)
+            {
+            TInt leaveCode(KErrNone);
+            TRAP(leaveCode, ErrorL(EConnectionNotReady));
+            leaveCode = 0; // not used
+            }
+        iConnectionState = aStatus;
+        StopActiveScheduler();
+        }
+    }
+
+
+void CSenConnectionTimeoutsTester::SetupL(  )
+    {
+    __UHEAP_MARK;
+
+    RFile file;
+    RFs iFsSession;
+    _LIT(KFileName,"c:\\testing\\data\\rest.on");
+    
+   
+    User::LeaveIfError(iFsSession.Connect());
+        
+    TInt fileOP = file.Open(iFsSession,KFileName,EFileRead);
+    if (fileOP == KErrNone) 
+        {
+        RDebug::Print(_L( "Found rest.on file => using RESTful framework" ) ); 
+        file.Close();
+        ipFrameworkID = HBufC8::NewL(KRESTFrameworkID().Length());
+        ipFrameworkID->Des().Append(KRESTFrameworkID);
+        }
+    else
+        {
+        RDebug::Print(_L( "File rest.on not found => defaulting to WS-I" ) ); 
+        ipFrameworkID = HBufC8::NewL(KWSIFrameworkID().Length());
+        ipFrameworkID->Des().Append(KWSIFrameworkID);
+        }
+    iFsSession.Close();
+    
+    iCallback = ECallbackNone;
+    }
+
+void CSenConnectionTimeoutsTester::Teardown(  )
+    {
+    delete ipFrameworkID;
+    ipFrameworkID = NULL;
+    delete ipMessage;
+    ipMessage = NULL;
+    __UHEAP_MARKEND;
+    }
+
+
+
+    
+
+//Befor executing this TC remember to set big enought TimeOut value (10 min.)
+
+TInt CSenConnectionTimeoutsTester::CSenConnectionTimeoutsTester_TP_Async1(CStifItemParser& aItem)
+{
+
+    
+    
+    _LIT8(KAsyncEndPoint,           "http://10.21.32.110/sereneHardCoded/WS_Async_002");
+    _LIT8(KCustomHttpHeader,        "CustomHeader");
+    
+    _LIT8(KLogFile,                "httptrace");
+    _LIT(KFileExtension,          ".xml");
+    _LIT8(KCustomHttpHeaderValue,  "AsyncTest_");
+    _LIT(KLogFileToRead,           "c:\\Logs\\LoggingHttpFilter\\httptrace");
+    
+    SetupL();
+    CSenServicePattern* pPattern =
+        CSenServicePattern::NewLC(KAsyncEndPoint, KNullDesC8());
+    pPattern->SetFrameworkIdL(*ipFrameworkID);
+    
+    iServiceConnection = CSenServiceConnection::NewL(*this, *pPattern);
+    
+    CleanupStack::PopAndDestroy(pPattern);
+    
+    StartActiveScheduler(1);
+    LOCAL_ASSERT(iConnectionState == KSenConnectionStatusReady);
+    // Connection is ready to be used.
+    
+    // 2. Get TP using SC:TransportPropertiesL()
+    HBufC8* pTransportPropertiesAsXml = NULL;
+    iServiceConnection->TransportPropertiesL(pTransportPropertiesAsXml);
+    if ( pTransportPropertiesAsXml )
+        {
+        delete pTransportPropertiesAsXml;
+        }
+     
+     
+    TBuf8<255> tempLogFile;     
+    TBuf8<255> tempCustomHttpHeaderValue;
+    TBuf<255> tempLogFileToRead;
+    
+    for (TInt i = 1; i <= 8; i++)
+    {
+        tempLogFile.Copy(KLogFile);
+        tempLogFile.AppendNum(i);
+        tempLogFile.Append(KFileExtension);
+    
+        tempCustomHttpHeaderValue.Copy(KCustomHttpHeaderValue);
+        tempCustomHttpHeaderValue.AppendNum(i);
+        
+        tempLogFileToRead.Copy(KLogFileToRead);
+        tempLogFileToRead.AppendNum(i);
+        tempLogFileToRead.Append(KFileExtension);
+        
+        TL(CSenConnectionTimeoutsTester_TP_Send(tempLogFile,KCustomHttpHeader,tempCustomHttpHeaderValue,iServiceConnection) == KErrNone) ;    
+        TL(CSenConnectionTimeoutsTester_TP_CheckLogs( tempLogFileToRead,  KCustomHttpHeader, tempCustomHttpHeaderValue) == KErrNone);     
+        
+    }//for i
+                                                  
+    
+        delete iServiceConnection;
+        iServiceConnection = NULL;
+        Teardown();
+		return KErrNone;    
+    }    
+
+
+
+//Before executing this TC remember to set big enought TimeOut value (10 min.)
+TInt CSenConnectionTimeoutsTester::CSenConnectionTimeoutsTester_TP_Async2(CStifItemParser& aItem)
+    {
+    _LIT8(KAsyncEndPoint,           "http://10.21.32.110/sereneHardCoded/WS_Async_002");
+    _LIT8(KCustomHttpHeader,        "CustomHeader");
+    
+    _LIT8(KLogFile,                "httptrace");
+    _LIT(KFileExtension,          ".xml");
+    _LIT8(KCustomHttpHeaderValue,  "AsyncTest_");
+    _LIT(KLogFileToRead,           "c:\\Logs\\LoggingHttpFilter\\httptrace");
+    
+	SetupL();
+    CSenServicePattern* pPattern = CSenServicePattern::NewLC(KAsyncEndPoint, KNullDesC8());
+    pPattern->SetFrameworkIdL(*ipFrameworkID);
+    
+    iServiceConnection = CSenServiceConnection::NewL(*this, *pPattern);
+    
+    CleanupStack::PopAndDestroy(pPattern);
+    
+    StartActiveScheduler(1);
+    LOCAL_ASSERT(iConnectionState == KSenConnectionStatusReady);
+    // Connection is ready to be used.
+    
+    // 2. Get TP using SC:TransportPropertiesL()
+    HBufC8* pTransportPropertiesAsXml = NULL;
+    iServiceConnection->TransportPropertiesL(pTransportPropertiesAsXml);
+    if ( pTransportPropertiesAsXml )
+        {
+        delete pTransportPropertiesAsXml;
+        }
+
+    TBuf8<255> tempLogFile;     
+    TBuf8<255> tempCustomHttpHeader;
+    TBuf8<255> tempCustomHttpHeaderValue;
+    TBuf<255> tempLogFileToRead;
+    
+    for (TInt i = 1; i <= 8; i++)
+    {
+        tempLogFile.Copy(KLogFile);
+        tempLogFile.AppendNum(i);
+        tempLogFile.Append(KFileExtension);
+        
+        tempCustomHttpHeader.Copy(KCustomHttpHeader);
+        tempCustomHttpHeader.AppendNum(i);
+    
+        tempCustomHttpHeaderValue.Copy(KCustomHttpHeaderValue);
+        tempCustomHttpHeaderValue.AppendNum(i);
+        
+        tempLogFileToRead.Copy(KLogFileToRead);
+        tempLogFileToRead.AppendNum(i);
+        tempLogFileToRead.Append(KFileExtension);
+        
+        TL(CSenConnectionTimeoutsTester_TP_Send(tempLogFile,tempCustomHttpHeader,tempCustomHttpHeaderValue,iServiceConnection) == KErrNone) ; 
+        TL(CSenConnectionTimeoutsTester_TP_CheckLogs( tempLogFileToRead,  tempCustomHttpHeader, tempCustomHttpHeaderValue) == KErrNone);      
+        
+    }//for i
+                                                  
+    
+    delete iServiceConnection;
+    iServiceConnection = NULL;
+    Teardown();
+		return KErrNone;     
+     
+    }    
+
+
+TInt CSenConnectionTimeoutsTester::CSenConnectionTimeoutsTester_TP_Send(const TDesC8& aLogFileName, const TDesC8& aCustomHttpHeader,
+                                                                const TDesC8& aCustomHttpHeaderValue, CSenServiceConnection* iServiceConnection)
+    {
+    TInt result = KErrNone;
+    CSenSoapMessage* pSOAPMessage = CreateAuthRequestLC();
+
+    // SendL(MSG) // with custom header
+    CSenHttpTransportProperties* pHttpProperties = CSenHttpTransportProperties::NewLC();    
+    pHttpProperties->SetHttpHeaderL(KLoggerFileNameProperty, aLogFileName);
+    pHttpProperties->SetHttpHeaderL(aCustomHttpHeader, aCustomHttpHeaderValue);
+    TUint32 iapId = SearchIAPIdByName(KIAPName);
+    pHttpProperties->SetIapIdL(iapId);
+    HBufC8* pSerializedProperties = pHttpProperties->AsUtf8L();
+    CleanupStack::PushL(pSerializedProperties);
+    iServiceConnection->SendL(*pSOAPMessage, *pSerializedProperties);
+    StartActiveScheduler(1);
+    //RDebug::Print(_L(iCallback == ECallbackHandleMessage);
+    if(iCallback != ECallbackHandleMessage) return KErrGeneral;
+   
+    CleanupStack::PopAndDestroy(pSerializedProperties);
+    CleanupStack::PopAndDestroy(pHttpProperties);
+    CleanupStack::PopAndDestroy(pSOAPMessage);
+    return result;
+    }  
+    
+    
+TInt CSenConnectionTimeoutsTester::CSenConnectionTimeoutsTester_TP_CheckLogs(const TDesC& aLogFilePath,  const TDesC8& aCustomHttpHeader, const TDesC8& aCustomHttpHeaderValue)
+    {
+    TInt result = KErrNone;
+    HBufC8* pFileContent = ReadFileL(aLogFilePath);
+    //RDebug::Print(_L(pFileContent != NULL);
+    if (pFileContent == NULL) return KErrNotFound;
+    
+    CleanupStack::PushL(pFileContent);
+    HBufC8* pValue = HttpPropertyValueFromXmlLC(*pFileContent, aCustomHttpHeader);
+    //RDebug::Print(_L(*pValue == aCustomHttpHeaderValue);
+    if (*pValue != aCustomHttpHeaderValue) return KErrNotFound;
+    
+    CleanupStack::PopAndDestroy(pValue);
+    CleanupStack::PopAndDestroy(pFileContent);    
+
+    return result;
+    }
+
+
+HBufC8* CSenConnectionTimeoutsTester::HttpMethodValueFromXmlLC(const TDesC8& aXml)
+    {
+    CSenXmlReader* pReader = CSenXmlReader::NewL();
+    CleanupStack::PushL(pReader);
+    CSenDomFragment* pDom = CSenDomFragment::NewL();
+    CleanupStack::PushL(pDom);
+    pReader->SetContentHandler(*pDom);
+    pDom->SetReader(*pReader);
+    pReader->ParseL(aXml);
+    
+    CSenElement& element = pDom->AsElement();
+    CSenElement* pRequestElement = element.Element(_L8("Request"));
+    CSenElement* pTPElement = pRequestElement->Element(_L8("Method"));
+    
+    HBufC8* pRetBuf = pTPElement->Content().AllocL();
+
+    CleanupStack::PopAndDestroy(pDom);
+    CleanupStack::PopAndDestroy(pReader);
+    
+    CleanupStack::PushL(pRetBuf);
+    
+    return pRetBuf;
+    }
+
+HBufC8* CSenConnectionTimeoutsTester::HttpPropertyValueFromXmlLC(const TDesC8& aXml,
+                                                             const TDesC8& aPropertyName)
+    {
+    CSenXmlReader* pReader = CSenXmlReader::NewL();
+    CleanupStack::PushL(pReader);
+    CSenDomFragment* pDom = CSenDomFragment::NewL();
+    CleanupStack::PushL(pDom);
+    pReader->SetContentHandler(*pDom);
+    pDom->SetReader(*pReader);
+    pReader->ParseL(aXml);
+    
+    HBufC8* pRetBuf = NULL;
+    
+    CSenElement& element = pDom->AsElement();
+    CSenElement* pRequestElement = element.Element(_L8("Request"));
+    if ( pRequestElement )
+        {
+        CSenElement* pTPElement = pRequestElement->Element(_L8("TranportProperties"));
+        if ( pTPElement )
+            {
+            CSenElement* pElement = pTPElement->Element(aPropertyName);
+            if ( pElement )
+                {
+                pRetBuf = pElement->Content().AllocL();
+                }
+            }
+        }
+
+    CleanupStack::PopAndDestroy(pDom);
+    CleanupStack::PopAndDestroy(pReader);
+    CleanupStack::PushL(pRetBuf);
+    return pRetBuf;
+    }
+    
+HBufC8* CSenConnectionTimeoutsTester::ReadFileL(const TDesC& aFilename)
+    {
+    RFs fsSession;
+    CleanupClosePushL(fsSession);
+    User::LeaveIfError(fsSession.Connect() == NULL);
+    TEntry entry;
+    User::LeaveIfError(fsSession.Entry(aFilename,entry));
+    HBufC8* pFileContent = NULL;
+    RFileReadStream fileInStream;
+    CleanupClosePushL(fileInStream);
+    if (fileInStream.Open(fsSession,aFilename,EFileRead) == KErrNone)
+        {
+        HBufC8* pTempFileContent = HBufC8::NewLC(entry.iSize+10);
+        TRAPD(error,
+            fileInStream.ReadL((TUint8*)pTempFileContent->Ptr(),entry.iSize);
+            );
+            
+        if (!error)
+            {
+            TPtrC8 fileContent((TUint8*)pTempFileContent->Ptr(),entry.iSize);
+            pFileContent = fileContent.AllocL();
+            }
+        CleanupStack::PopAndDestroy(pTempFileContent);
+        }
+    CleanupStack::PopAndDestroy(&fileInStream);
+    CleanupStack::PopAndDestroy(&fsSession);
+    return pFileContent;
+    }
+    
+TUint32 CSenConnectionTimeoutsTester::SearchIAPIdByName(const TDesC& aIAPName)
+    {
+    TBool found = EFalse;
+    CCommsDatabase* pDB = CCommsDatabase::NewL(EDatabaseTypeIAP);
+    CleanupStack::PushL(pDB);
+    
+    //open internet accesspoint table
+    CCommsDbTableView* pDbTView = pDB->OpenTableLC(TPtrC(IAP));
+    TInt retVal = pDbTView->GotoFirstRecord();
+    TBuf<128> name; 
+    TUint32 id = 0;
+    //Find the correct record
+    while ( retVal == KErrNone && found == EFalse )
+        {
+        pDbTView->ReadTextL(TPtrC(COMMDB_NAME), name);
+        pDbTView->ReadUintL(TPtrC(COMMDB_ID), id);
+        found = ( name == aIAPName ); 
+        if ( !found )
+            {
+            retVal = pDbTView->GotoNextRecord();
+            }
+        }
+    CleanupStack::PopAndDestroy(pDbTView);
+    CleanupStack::PopAndDestroy(pDB);
+    return id;
+    }
+    
+CSenSoapMessage* CSenConnectionTimeoutsTester::CreateAuthRequestLC()
+    {
+    _LIT8(KRequest, "<sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"PLAIN ANONYMOUS\" advisoryAuthnID=\"012345678901234\"/>");
+    CSenSoapMessage* pSOAPMessage = CSenSoapMessage::NewL();
+    CleanupStack::PushL(pSOAPMessage);
+
+    //xxxxxxxx*************** CorrelationHeader starts ***************************
+    CSenBaseElement* pElement = CSenBaseElement::NewL(_L8("urn:liberty:sb:2003-08"), _L8("Correlation"), _L8("sb:Correlation"));
+    CleanupStack::PushL(pElement);
+
+    pElement->AddAttrL(_L8("messageID"),_L8(""));
+    pElement->AddAttrL(_L8("refToMessageID"),_L8(""));
+
+    TTime t;
+    t.HomeTime();
+    TBuf8<SenDateUtils::KXmlDateTimeMaxLength> ts;
+    SenDateUtils::ToXmlDateTimeUtf8L(ts, t);
+    pElement->AddAttrL(_L8("timestamp"), ts);
+
+    pSOAPMessage->AddHeaderL(*pElement); // pElement will be owned by pSOAPMessage
+    CleanupStack::Pop(pElement);
+    //************************ CorrelationHeader ends ****************************
+
+    pSOAPMessage->SetBodyL(KRequest);
+    return pSOAPMessage;    
+    }
+     
+CSenSoapMessage2* CSenConnectionTimeoutsTester::CreateNewAuthRequestLC()
+    {
+    _LIT8(KRequest, "<sa:SASLRequest xmlns:sa=\"urn:liberty:sa:2004-04\" mechanism=\"PLAIN ANONYMOUS\" advisoryAuthnID=\"012345678901234\"/>");
+    CSenSoapMessage2* pSOAPMessage = CSenSoapMessage2::NewL();
+    CleanupStack::PushL(pSOAPMessage);
+
+    //xxxxxxxx*************** CorrelationHeader starts ***************************
+    /*CSenBaseElement* pElement = CSenBaseElement::NewL(_L8("urn:liberty:sb:2003-08"), _L8("Correlation"), _L8("sb:Correlation"));
+    CleanupStack::PushL(pElement);
+
+    pElement->AddAttrL(_L8("messageID"),_L8(""));
+    pElement->AddAttrL(_L8("refToMessageID"),_L8(""));
+
+    TTime t;
+    t.HomeTime();
+    TBuf8<SenDateUtils::KXmlDateTimeMaxLength> ts;
+    SenDateUtils::ToXmlDateTimeUtf8L(ts, t);
+    pElement->AddAttrL(_L8("timestamp"), ts);
+
+    //pSOAPMessage->AddHeaderL(*pElement); // pElement will be owned by pSOAPMessage
+    CleanupStack::Pop(pElement);*/
+    //************************ CorrelationHeader ends ****************************
+
+    pSOAPMessage->SetBodyL(KRequest);
+    return pSOAPMessage;    
+    }
+    
+void CSenConnectionTimeoutsTester::StartActiveScheduler(TInt aNumberOfPendingOps)
+    {
+    iNumberOfPendingOps = aNumberOfPendingOps;
+    CActiveScheduler::Start();
+    }
+       
+void CSenConnectionTimeoutsTester::StopActiveScheduler()
+    {
+    iNumberOfPendingOps--;
+    if ( iNumberOfPendingOps == 0 )
+        {
+        CActiveScheduler::Stop();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSenConnectionTimeoutsTester::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*
+TInt CSenConnectionTimeoutsTester::?member_function(
+   CItemParser& aItem )
+   {
+
+   ?code
+
+   }
+*/
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  [End of File] - Do not remove