diff -r 000000000000 -r f5a58ecadc66 servicediscoveryandcontrol/pnp/test/upnp/unittests/tcpclient/src/ctcpclienttestupnp2.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/servicediscoveryandcontrol/pnp/test/upnp/unittests/tcpclient/src/ctcpclienttestupnp2.cpp Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,205 @@ +/* +* Copyright (c) 2008 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: +* +*/ + +#include +#include +#include +#include + +#include "ptcpclienttests.h" +#include "upnp_cf_msgs.h" +#include "upnpflowbase.h" +#include "httpclientflow.h" +#include "upnpflowfactory.h" +#include "CTcpClientTestUPnP2.h" + +const TUint16 KActivityNull = 0; +const TUint KHttpDefaultPort = 80; + + +const TUint KTransactionCount = 1; +_LIT8 ( KTxtRawRequest, "GET / HTTP/1.1\r\nHost: [0:0:0:0:0:0:0:1]\r\nContent-Length: 0\r\n\r\n" ); +_LIT8 ( KTxtRawResponse1, "HTTP/2.2 200 OK\r\nContent-Length: 0\r\n\r\n" ); + + +CTcpClientTestUPnP2* CTcpClientTestUPnP2::NewL ( CProxyProvd* aProvd ) + { + CTcpClientTestUPnP2* ret = new ( ELeave ) CTcpClientTestUPnP2 ( aProvd ); + CleanupStack::PushL ( ret ); + ret->ConstructL (); + CleanupStack::Pop ( ret ); + return ret; + } + +CTcpClientTestUPnP2::CTcpClientTestUPnP2 ( CProxyProvd* aProvd ) : + CTcpClientTestBase(aProvd), iTestServer(NULL) + { + } + +CTcpClientTestUPnP2::~CTcpClientTestUPnP2 () + { + iTimer.Close (); + } + +void CTcpClientTestUPnP2::ConstructL() + { + iTimer.CreateLocal (); + } + +TVerdict CTcpClientTestUPnP2::RunTestL() + { + switch ( iState ) + { + case ECreateTestServer: + { + iLogger.WriteFormat(_L("Creating TestServer..... ")); + + iTestServer = CTestTcpServer::NewL ( *this ); + + iState = ECreateTestClient; + iStatus = KRequestPending; + Reschedule(); + return EPass; + } + + case ECreateTestClient: + { + iLogger.WriteFormat(_L("TestServer is created..... ")); + iLogger.WriteFormat(_L("Creating TestClient..... ")); + + THttpClientFlowQuery flowQuery ( TAppProtAddr ( KInetAddrLoop, KHttpDefaultPort ), Id (), EHttpClientFlow, THttpClientFlowQuery::ECreateNew, iChunkManager ); + const TUid requestedUid = { CUPnPFlowFactory::iUid }; + + TNodeId factoryContainer = SockManGlobals::Get( )->GetPlaneFC( TCFPlayerRole ( TCFPlayerRole::EDataPlane ) ); + + RClientInterface::OpenPostMessageClose ( NodeId (), TNodeCtxId ( KActivityNull, factoryContainer ), TCFFactory::TFindOrCreatePeer ( TCFPlayerRole::EDataPlane, requestedUid, &flowQuery ).CRef () ); + + iState = ESendRequestData; + iStatus = KRequestPending; + Reschedule(); + return EPass; + } + + case ESendRequestData: + { + iLogger.WriteFormat(_L("Client is Created")); + iLogger.WriteFormat(_L("Send data..... ")); + + RMemChunk bodyBuf; + RMemChunk uriBuf; + //uriBuf.CreateL ( _L8 ("http://127.0.0.1:9999") ); + uriBuf.CreateL ( _L8 ("http://[0:0:0:0:0:0:0:1]"), iAllocator ); + TUpnpMessage::TUPnPClientRequestInfo msg ( HTTP::EGET, uriBuf, bodyBuf, NULL ); + iClientId.Node ().ReceivedL ( TNodeCtxId ( KActivityNull, Id () ), TNodeCtxId ( KActivityNull, iClientId ), msg ); + + iState = ECleanup; + iStatus = KRequestPending; + Reschedule (); + return EPass; + } + + case ECleanup: + { + delete iTestServer; + // cleanup tcp client flow + delete reinterpret_cast ( iClientId.Ptr () ); + iTimer.After ( iStatus, 60000000 ); //10 secs + iState = EComplete; + iStatus = KRequestPending; + Reschedule (); + return EPass; + } + case EComplete: + { + iLogger.WriteFormat(_L("TestCase: Complete..... ")); + return EPass; + } + + default: + iLogger.WriteFormat(_L(" Failed: TestCase:..... ")); + ASSERT(0); + return EFail; + } + } + +void CTcpClientTestUPnP2::OnTestServerEventL ( TInt aError ) + { + CompleteSelf ( aError ); + } + +MTcpClientTestCase* CTcpClientTestUPnP2::GetTestCase () + { + return this; + } + +CTestExecuteLogger& CTcpClientTestUPnP2::GetLogger ( ) + { + return iLogger; + } + + +void CTcpClientTestUPnP2::ReceivedL ( const TRuntimeCtxId& /*aSender*/, const TNodeId& /*aRecipient*/, TSignatureBase& aMessage ) + { + if ( aMessage.IsMessage () ) + { + const TCFFactory::TPeerFoundOrCreated& msg = message_cast < const TCFFactory::TPeerFoundOrCreated > ( aMessage ); + iClientId = msg.iNodeId; + CompleteSelf ( KErrNone ); + } + else if ( aMessage.IsMessage () ) + { + + CompleteSelf(EPass); + } + else if ( aMessage.IsMessage () ) + { + iLogger.WriteFormat(_L("TEBase::TError..... ")); + CompleteSelf(EFail); + } + + } + +const TDesC& CTcpClientTestUPnP2::TestCaseName () const + { + _LIT ( KTxtTitle, "Defect Fix CINC077703More" ); + return KTxtTitle (); + } + +TInt CTcpClientTestUPnP2::TotalTransactionCount () const + { + return KTransactionCount; + } + +const TDesC8& CTcpClientTestUPnP2::GetRawRequest ( TInt aTransIndex ) + { + __ASSERT_ALWAYS ( aTransIndex < KTransactionCount, User::Invariant () ); + return KTxtRawRequest (); + } + +const TDesC8& CTcpClientTestUPnP2::GetRawResponse ( TInt aTransIndex ) + { + __ASSERT_ALWAYS( aTransIndex < KTransactionCount, User::Invariant () ); + return KTxtRawResponse1 (); + } + +TInt CTcpClientTestUPnP2::TransactionCount () const + { + return KTransactionCount; + } + + +