wapstack/wapmessageapi/te_wapstack/src/WapFullySpecCLPushSteps.cpp
branchRCL_3
changeset 20 07a122eea281
parent 19 630d2f34d719
child 21 4814c5a49428
equal deleted inserted replaced
19:630d2f34d719 20:07a122eea281
     1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @internalComponent
       
    19 */
       
    20 
       
    21 #include "WapFullySpecCLPushSteps.h"
       
    22 #include "WapStackSuiteDefs.h"
       
    23 #include <simtsy.h>
       
    24 #include <wapmsgerr.h>
       
    25 #include <ecom/ecom.h>
       
    26 
       
    27 
       
    28 CFullySpecCLPushBase::CFullySpecCLPushBase()
       
    29 /**
       
    30 * Constructor
       
    31 */
       
    32 	{
       
    33 	}
       
    34 
       
    35 CFullySpecCLPushBase::~CFullySpecCLPushBase()
       
    36 /**
       
    37 * Destructor
       
    38 */
       
    39 	{
       
    40 	if(iImp) 
       
    41 		{
       
    42 		UnloadInterface();
       
    43 		}
       
    44 	}
       
    45 
       
    46 CWapFullySpecCLPushService* CFullySpecCLPushBase::LoadInterface()
       
    47 	{
       
    48 	TInt trapValue;
       
    49 	CWapFullySpecCLPushService* implementation = NULL;
       
    50 	// UID {0x101FBB3A} - SWS implementation
       
    51 	TUid KInterfaceUid = {0x101FBB3A}; 	
       
    52 	INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), KInterfaceUid);
       
    53 	TRAP(trapValue, implementation = CWapFullySpecCLPushService::NewL(KInterfaceUid));
       
    54 	if(!trapValue)
       
    55 		{
       
    56 		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), implementation);
       
    57 		return implementation;
       
    58 		}
       
    59 	else return NULL;
       
    60 	}
       
    61 
       
    62 void CFullySpecCLPushBase::UnloadInterface()
       
    63 	{
       
    64 	INFO_PRINTF2(_L("Interface at implementation.addr = 0x%08x is deleted"), iImp);
       
    65 	delete iImp;
       
    66 	iImp = NULL;
       
    67 	REComSession::FinalClose();	
       
    68 	}
       
    69 
       
    70 CFullySpecCLPushStep_1::CFullySpecCLPushStep_1()
       
    71 /**
       
    72 * Constructor
       
    73 */
       
    74 	{
       
    75 	}
       
    76 
       
    77 CFullySpecCLPushStep_1::~CFullySpecCLPushStep_1()
       
    78 /**
       
    79 * Destructor
       
    80 */
       
    81 	{
       
    82 	}
       
    83 
       
    84 
       
    85 TVerdict CFullySpecCLPushStep_1::doTestStepL()
       
    86 /**
       
    87 * @return - TVerdict code
       
    88 * Override of base class pure virtual
       
    89 * Our implementation only gets called if the base class doTestStepPreambleL() did
       
    90 * not leave. That being the case, the current test result value will be EPass.
       
    91 */
       
    92 	{
       
    93 	//
       
    94 	// CWapFullySpecCLPushService
       
    95 	// 
       
    96 	INFO_PRINTF1(_L("CreateImplementation - CWapFullySpecCLPushService"));
       
    97 	INFO_PRINTF1(_L("Calling old NewL() method"));
       
    98 	
       
    99 	TInt trapValue; 
       
   100 	
       
   101 	SetTestStepResult(EFail);
       
   102 	TRAP(trapValue, iImp = CWapFullySpecCLPushService::NewL());
       
   103 	if(!trapValue)
       
   104 		{
       
   105 		// interface is loaded
       
   106 		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), iImp);
       
   107 		UnloadInterface();
       
   108 		iImp = LoadInterface();
       
   109 		if(iImp)
       
   110 			{
       
   111 			INFO_PRINTF1(_L("CreateImplementation - OK"));
       
   112 			SetTestStepResult(EPass);
       
   113 			UnloadInterface();
       
   114 			}
       
   115 		}
       
   116 	return TestStepResult();
       
   117 	}
       
   118 
       
   119 CFullySpecCLPushStep_2::CFullySpecCLPushStep_2()
       
   120 /**
       
   121 * Constructor
       
   122 */
       
   123 	{
       
   124 	}
       
   125 
       
   126 CFullySpecCLPushStep_2::~CFullySpecCLPushStep_2() 
       
   127 /**
       
   128 * Destructor
       
   129 */
       
   130 	{
       
   131 	}
       
   132 
       
   133 TVerdict CFullySpecCLPushStep_2::doTestStepL()
       
   134 /** 
       
   135 * Test Connect methoths 
       
   136 * @return - TVerdict code
       
   137 * 
       
   138 */
       
   139 	{
       
   140 	INFO_PRINTF1(_L("FULLYSPEC-PUSH: Testing Connect"));
       
   141 	if(TestStepResult() == EPass )
       
   142 		{
       
   143 		SetTestStepResult(EFail);
       
   144 		iImp = LoadInterface();
       
   145 		if(iImp)
       
   146 			{
       
   147 			TInt bearer;
       
   148 			TInt error	= KErrNone;
       
   149 			TBool secure= EFalse;
       
   150 			TBool reconnect = EFalse;
       
   151 			SetLastError(KErrNone);
       
   152 			
       
   153 			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
       
   154 			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
       
   155 			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
       
   156 			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
       
   157 			
       
   158 			if(UseSimTsy())
       
   159 				{
       
   160 				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
       
   161 				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
       
   162 				}
       
   163 			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
       
   164 			
       
   165 			SetState(EConnect);
       
   166 			iControl->ReStart();
       
   167 			ShowConnectionInfo();
       
   168 
       
   169 			StartScheduler();
       
   170 			UnloadInterface();
       
   171 			}
       
   172 		}
       
   173 	return TestStepResult();
       
   174 	}
       
   175 
       
   176 TInt CFullySpecCLPushStep_2::CallStateMachine()
       
   177 	{
       
   178 	TInt err = KErrNone;
       
   179 	INFO_PRINTF2(_L("CallStateMachine: step [%d]"), State());
       
   180 	switch(iState)
       
   181 		{
       
   182 		case EConnect:
       
   183 			INFO_PRINTF1(_L("EConnect"));
       
   184 			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
       
   185 			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
       
   186 			if( err == KErrNone)
       
   187 				{
       
   188 				if(iReconnect)
       
   189 					{ 
       
   190 					INFO_PRINTF1(_L("Reconnection"));
       
   191 					iControl->ReStart();
       
   192 					break;
       
   193 					}
       
   194 				}
       
   195 			SetState(EFinish);
       
   196 			SetLastError(err);
       
   197 			iControl->ReStart();
       
   198 			break;
       
   199 			
       
   200 		case EFinish:
       
   201 			INFO_PRINTF1(_L("EFinish"));
       
   202 			if(GetLastError() == GetExpectedError()) SetTestStepResult(EPass);
       
   203 			else SetTestStepResult(EFail);
       
   204 			SetState(EIdle);
       
   205 			StopScheduler();
       
   206 			break;
       
   207 			
       
   208 		case EIdle:
       
   209 		default:
       
   210 			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
       
   211 			SetTestStepResult(EFail);
       
   212 			StopScheduler();
       
   213 			break;
       
   214 		}
       
   215 	return (0);
       
   216 	}
       
   217 
       
   218 CFullySpecCLPushStep_3::CFullySpecCLPushStep_3()
       
   219 /**
       
   220 * Constructor
       
   221 */
       
   222 	{
       
   223 	}
       
   224 
       
   225 CFullySpecCLPushStep_3::~CFullySpecCLPushStep_3() 
       
   226 /**
       
   227 * Destructor
       
   228 */
       
   229 	{
       
   230 	}
       
   231 
       
   232 TVerdict CFullySpecCLPushStep_3::doTestStepL()
       
   233 /** 
       
   234 * Test Connect methoths 
       
   235 * @return - TVerdict code
       
   236 * 
       
   237 */
       
   238 	{
       
   239 	INFO_PRINTF1(_L("FullySpecWSPPush. Requests without connection"));
       
   240 	// check preamble result
       
   241 	TVerdict verdict = TestStepResult();
       
   242 	if (verdict==EPass)
       
   243 		{
       
   244 		TInt err, ret;
       
   245 		iImp = LoadInterface();
       
   246 		if (!iImp)
       
   247 			{
       
   248 			ERR_PRINTF1(_L("Unable to load FullySpecWSPPush Interface"));
       
   249 			verdict = EFail;
       
   250 			}
       
   251 		else
       
   252 			{
       
   253 			GetIntFromConfig(ConfigSection(),KWapExError,(TInt&)iExError);
       
   254 			ShowConnectionInfo();
       
   255 			TRequestStatus reqStatus;
       
   256 			iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, reqStatus);
       
   257 			TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("AwaitPush Fails not as expected")))
       
   258 				if (ret) 
       
   259 					verdict = EFail;
       
   260 				else
       
   261 					{
       
   262 					Wap::TPort port;
       
   263 					err=iImp->GetLocalPort(port);
       
   264 					TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalPort Fails not as expected")))
       
   265 						if (ret)
       
   266 							verdict = EFail;
       
   267 						else
       
   268 							{
       
   269 							HBufC8* localHost;					
       
   270 							err=iImp->GetLocalAddress(localHost);
       
   271 							TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalAddress Fails not as expected")))
       
   272 								if (ret) 
       
   273 									verdict = EFail;
       
   274 							}
       
   275 					}
       
   276 				UnloadInterface();
       
   277 			}
       
   278 		}
       
   279 	if (verdict==EPass)
       
   280 		{
       
   281 		INFO_PRINTF1(_L("FullySpecCLPush. Requests Fail as expected"));
       
   282 		}
       
   283 	SetTestStepResult(verdict);
       
   284 	return TestStepResult();
       
   285 	}
       
   286 
       
   287 TInt CFullySpecCLPushStep_3::CallStateMachine()
       
   288 	{
       
   289 	return (0);
       
   290 	}
       
   291 
       
   292 CFullySpecCLPushStep_4::CFullySpecCLPushStep_4()
       
   293 /**
       
   294 * Constructor
       
   295 */
       
   296 	{
       
   297 	}
       
   298 
       
   299 CFullySpecCLPushStep_4::~CFullySpecCLPushStep_4() 
       
   300 /**
       
   301 * Destructor
       
   302 */
       
   303 	{
       
   304 	}
       
   305 
       
   306 TVerdict CFullySpecCLPushStep_4::doTestStepL()
       
   307 /** 
       
   308 * Test Connect methoths 
       
   309 * @return - TVerdict code
       
   310 * 
       
   311 */
       
   312 	{
       
   313 	INFO_PRINTF1(_L("FULLYSPEC-CLPUSH: Connect-AwaitPush"));
       
   314 	if(TestStepResult() == EPass )
       
   315 		{
       
   316 		SetTestStepResult(EFail);
       
   317 		iImp = LoadInterface();
       
   318 		if(iImp)
       
   319 			{
       
   320 			SetLastError(KErrNone);
       
   321 			
       
   322 			TInt bearer, port;
       
   323 			TInt error = KErrNone;
       
   324 			TPtrC16 remote_host;
       
   325 			
       
   326 			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
       
   327 				{
       
   328 				iBearer = static_cast<Wap::TBearer>(bearer);
       
   329 				}
       
   330 			if(GetStringFromConfig(ConfigSection(), KWapRemoteHost, remote_host))
       
   331 				{
       
   332 				iRemoteHost.Copy(remote_host);
       
   333 				}
       
   334 			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) 
       
   335 				{
       
   336 				iLocalPort = static_cast<Wap::TPort>(port);
       
   337 				}
       
   338 			if(GetIntFromConfig(ConfigSection(),KWapRemotePort, port)) 
       
   339 				{
       
   340 				iRemotePort = static_cast<Wap::TPort>(port);
       
   341 				}
       
   342 			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
       
   343 				{
       
   344 				SetExpectedError(error);
       
   345 				}
       
   346 			GetBoolFromConfig(ConfigSection(), KMiddleCancel, iMiddleCancel);
       
   347 			GetBoolFromConfig(ConfigSection(), KMultiReadCancel, iMultiReadCancel);
       
   348 			TInt headerLength, bufLength; 
       
   349 			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
       
   350 				{
       
   351 				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
       
   352 				}
       
   353 			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
       
   354 				{
       
   355 				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
       
   356 				}
       
   357 			
       
   358 			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
       
   359 			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
       
   360 			
       
   361 			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
       
   362 			
       
   363 			if(UseSimTsy())
       
   364 				{
       
   365 				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
       
   366 				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
       
   367 				}
       
   368 				
       
   369 				
       
   370 			SetState(EConnect);
       
   371 			iControl->ReStart();
       
   372 			ShowConnectionInfo();
       
   373 			//	Start state machine
       
   374 			StartScheduler();
       
   375 			delete iRecvBody;
       
   376 			iRecvBody=NULL;
       
   377 			delete iRecvHeaders;
       
   378 			iRecvHeaders=NULL;
       
   379 			UnloadInterface();
       
   380 			} 
       
   381 		
       
   382 		}
       
   383 	return TestStepResult();
       
   384 	}
       
   385 
       
   386 TInt CFullySpecCLPushStep_4::CallStateMachine()
       
   387 	{
       
   388 	TVerdict verdict = EFail;
       
   389 	TInt err = KErrNone;
       
   390 	TInt activate = 0;
       
   391 
       
   392 	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());	
       
   393 	switch(iState)
       
   394 		{
       
   395 		case EConnect:
       
   396 			INFO_PRINTF1(_L("EConnect"));
       
   397 			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
       
   398 			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
       
   399 			if( err == KErrNone)
       
   400 				{
       
   401 				TRAP(err, WaitForInitializeL());
       
   402 				iRecvHeadersBuf.Set(iRecvHeaders->Des());
       
   403 				iRecvBodyBuf.Set(iRecvBody->Des());
       
   404 				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
       
   405 				INFO_PRINTF1(_L("Start AwaitingPush....."));
       
   406 				activate = 1;
       
   407 				if (!iMiddleCancel)
       
   408 					{
       
   409 					SetState(EAwaitPush);
       
   410 					}
       
   411 				else
       
   412 					{
       
   413 					INFO_PRINTF1(_L("Cancel AwaitPush"));
       
   414 					iImp->CancelAwaitPush();
       
   415 					SetState(EFinish);
       
   416 					}
       
   417 				}
       
   418 			else 
       
   419 				{
       
   420 				SetState(EFinish);
       
   421 				iControl->ReStart();
       
   422 				}
       
   423 			SetLastError(err);
       
   424 			break;
       
   425 			
       
   426 		case EAwaitPush:
       
   427 			INFO_PRINTF1(_L("EAwaitPush"));
       
   428 			if(iStatus->Int() != KErrNone && iStatus->Int()!=Wap::EMoreData) 
       
   429 				// AwaitPush failed
       
   430 				{
       
   431 				INFO_PRINTF1(_L("AwaitPush failed"));
       
   432 				SetLastError(iStatus->Int());
       
   433 				SetState(EFinish);
       
   434 				iControl->ReStart();
       
   435 				}
       
   436 			else
       
   437 				{
       
   438 				iMaxWspHeaderRecvBuffer.Append(iRecvHeadersBuf);
       
   439 				iMaxWspDataRecvBuffer.Append(iRecvBodyBuf);
       
   440 				if (iStatus->Int()==Wap::EMoreData)
       
   441 					{
       
   442 					iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
       
   443 					activate = 1;
       
   444 					if (!iMultiReadCancel)
       
   445 						{
       
   446 						SetState(EAwaitPush);
       
   447 						}
       
   448 					else
       
   449 						{
       
   450 						INFO_PRINTF1(_L("Cancel Receive in EMutipleReceive state"));
       
   451 						iImp->CancelAwaitPush();
       
   452 						SetState(EFinish);
       
   453 						}					
       
   454 					
       
   455 					}
       
   456 				else
       
   457 					{
       
   458 					SetLastError(iStatus->Int());
       
   459 					iControl->ReStart();
       
   460 					SetState(EFinish);
       
   461 					}
       
   462 				}
       
   463 			break;
       
   464 			
       
   465 		case EFinish:
       
   466 			INFO_PRINTF1(_L("EFinish"));
       
   467 			if(iStatus->Int() != KErrNone) 
       
   468 				{
       
   469 				SetLastError(iStatus->Int());
       
   470 				}
       
   471 			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
       
   472 			if (verdict==EPass && !iMiddleCancel && !iMultiReadCancel)
       
   473 				{
       
   474 				iImp->CancelAwaitPush();
       
   475 				INFO_PRINTF1(_L("Headers"));
       
   476 				DumpBuf(iMaxWspHeaderRecvBuffer);
       
   477 				INFO_PRINTF1(_L("Body"));
       
   478 				DumpBuf(iMaxWspDataRecvBuffer);
       
   479 				if (verdict==EPass)
       
   480 					{
       
   481 					Wap::TPort port;
       
   482 					iImp->GetLocalPort(port);
       
   483 					verdict = (port == iLocalPort)?EPass:EFail;
       
   484 					}
       
   485 				if (verdict==EPass)
       
   486 					{
       
   487 					//This test can not perform.
       
   488 					HBufC8* buf;
       
   489 					iImp->GetLocalAddress(buf);
       
   490 					delete buf;
       
   491 					}
       
   492 				}
       
   493 			SetTestStepResult(verdict);
       
   494 			SetState(EIdle);
       
   495 			StopScheduler();
       
   496 			break;
       
   497 			
       
   498 		case EIdle:
       
   499 		default:
       
   500 			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
       
   501 			SetTestStepResult(verdict);
       
   502 			StopScheduler();
       
   503 			break;
       
   504 		}
       
   505 		return (activate);
       
   506 }
       
   507 
       
   508 CFullySpecCLPushStep_5::CFullySpecCLPushStep_5()
       
   509 /**
       
   510 * Constructor
       
   511 */
       
   512 	{
       
   513 	}
       
   514 
       
   515 CFullySpecCLPushStep_5::~CFullySpecCLPushStep_5() 
       
   516 /**
       
   517 * Destructor
       
   518 */
       
   519 	{
       
   520 	}
       
   521 
       
   522 TVerdict CFullySpecCLPushStep_5::doTestStepL()
       
   523 /** 
       
   524 * Test Cancel await push 
       
   525 * @return - TVerdict code
       
   526 * 
       
   527 */
       
   528 	{
       
   529 	INFO_PRINTF1(_L("FullySpecified-PUSH: Testing Cancel"));
       
   530 	if(TestStepResult() == EPass )
       
   531 		{
       
   532 		SetTestStepResult(EFail);
       
   533 		iImp = LoadInterface();
       
   534 		if(iImp)
       
   535 			{
       
   536 			TInt bearer;
       
   537 			TInt error	= KErrNone;
       
   538 			TBool secure= EFalse;
       
   539 			TBool reconnect = EFalse;
       
   540 			SetLastError(KErrNone);
       
   541 			
       
   542 			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
       
   543 			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
       
   544 			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
       
   545 			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
       
   546 			
       
   547 			ShowConnectionInfo();
       
   548 			error = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
       
   549 			INFO_PRINTF2(_L("Connection completed with code = %d"), error);
       
   550 			if( error == KErrNone)
       
   551 				{
       
   552 				TBuf8<100> header, body;
       
   553 				TPckgBuf<TUint8> pushIdPckg;
       
   554 				TRequestStatus reqStatus;
       
   555 				iImp->AwaitPush(header, body, pushIdPckg, reqStatus);
       
   556 				SetState(EAwaitPush);
       
   557 				StartScheduler();
       
   558 				iControl->ReStart();
       
   559 				if(reqStatus==KErrCancel)
       
   560 					{
       
   561 					SetTestStepResult(EPass);
       
   562 					}
       
   563 				}
       
   564 			
       
   565 			}
       
   566 		}
       
   567 	return TestStepResult();
       
   568 	}
       
   569 
       
   570 TInt CFullySpecCLPushStep_5::CallStateMachine()
       
   571 	{
       
   572 	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());	
       
   573 	switch(iState)
       
   574 		{
       
   575 		case EAwaitPush:
       
   576 			INFO_PRINTF1(_L("EAwaitPush"));
       
   577 			iImp->CancelAwaitPush();
       
   578 			SetState(EFinish);
       
   579 			iControl->ReStart();
       
   580 			break;
       
   581 		case EFinish:
       
   582 			INFO_PRINTF1(_L("EFinish"));
       
   583 			SetState(EIdle);
       
   584 			StopScheduler();
       
   585 			break;
       
   586 		case EIdle:
       
   587 		default:
       
   588 			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
       
   589 			SetTestStepResult(EFail);
       
   590 			StopScheduler();
       
   591 			break;
       
   592 		}
       
   593 	return (0);
       
   594 	}
       
   595 
       
   596 CFullySpecCLPushStep_6::CFullySpecCLPushStep_6() 
       
   597 	{
       
   598 	}
       
   599 CFullySpecCLPushStep_6::~CFullySpecCLPushStep_6() 
       
   600 	{
       
   601 	}
       
   602 TVerdict CFullySpecCLPushStep_6::doTestStepL()
       
   603 	{
       
   604 	//Not in use
       
   605 	return TestStepResult();
       
   606 	}
       
   607 
       
   608 TInt CFullySpecCLPushStep_6::CallStateMachine()
       
   609 	{
       
   610 	return (0);
       
   611 	}
       
   612 
       
   613 CFullySpecCLPushStep_7::CFullySpecCLPushStep_7() 
       
   614 	{
       
   615 	}
       
   616 CFullySpecCLPushStep_7::~CFullySpecCLPushStep_7() 
       
   617 	{
       
   618 	}
       
   619 TVerdict CFullySpecCLPushStep_7::doTestStepL()
       
   620 	{
       
   621 	INFO_PRINTF1(_L("FULLYSPEC-CLPUSH: Connect-AwaitPush-AwaitPush"));
       
   622 	if(TestStepResult() == EPass )
       
   623 		{
       
   624 		SetTestStepResult(EFail);
       
   625 		iImp = LoadInterface();
       
   626 		if(iImp)
       
   627 			{
       
   628 			SetLastError(KErrNone);
       
   629 			
       
   630 			TInt bearer;
       
   631 			TInt error = KErrNone;
       
   632 			
       
   633 			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) 
       
   634 				{
       
   635 				iBearer = static_cast<Wap::TBearer>(bearer);
       
   636 				}
       
   637 			if(GetIntFromConfig(ConfigSection(),KWapExError, error)) 
       
   638 				{
       
   639 				SetExpectedError(error);
       
   640 				}
       
   641 			TInt headerLength, bufLength; 
       
   642 			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
       
   643 				{
       
   644 				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
       
   645 				}
       
   646 			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
       
   647 				{
       
   648 				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
       
   649 				}
       
   650 			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
       
   651 			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
       
   652 			SetState(EConnect);
       
   653 			iControl->ReStart();
       
   654 			ShowConnectionInfo();
       
   655 			// Start state machine
       
   656 			StartScheduler();
       
   657 			delete iRecvBody;
       
   658 			iRecvBody=NULL;
       
   659 			delete iRecvHeaders;
       
   660 			iRecvHeaders=NULL;
       
   661 			UnloadInterface();
       
   662 			}
       
   663 		}
       
   664 	return TestStepResult();
       
   665 	}
       
   666 
       
   667 TInt CFullySpecCLPushStep_7::CallStateMachine()
       
   668 	{
       
   669 	TVerdict verdict = EFail;
       
   670 	TInt err = KErrNone;
       
   671 	TInt activate = 0;
       
   672 	
       
   673 	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());	
       
   674 	switch(iState)
       
   675 		{
       
   676 		case EConnect:
       
   677 			INFO_PRINTF1(_L("EConnect"));
       
   678 			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
       
   679 			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
       
   680 			if( err == KErrNone)
       
   681 				{
       
   682 //				WaitForInitializeL();
       
   683 				TRequestStatus reqStatus;
       
   684 				iRecvHeadersBuf.Set(iRecvHeaders->Des());
       
   685 				iRecvBodyBuf.Set(iRecvBody->Des());
       
   686 				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, reqStatus);
       
   687 				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
       
   688 				INFO_PRINTF1(_L("AwaitPush"));
       
   689 				activate = 1;
       
   690 				}
       
   691 			else
       
   692 				{
       
   693 				iControl->ReStart();
       
   694 				}
       
   695 			SetLastError(err);
       
   696 			SetState(EFinish);
       
   697 			break;
       
   698 			
       
   699 		case EFinish:
       
   700 			
       
   701 			INFO_PRINTF1(_L("EFinish"));
       
   702 			iImp->CancelAwaitPush();
       
   703 			if(iStatus->Int() != KErrNone) 
       
   704 				{
       
   705 				SetLastError(iStatus->Int());
       
   706 				}
       
   707 			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
       
   708 			SetTestStepResult(verdict);
       
   709 			SetState(EIdle);
       
   710 			StopScheduler();
       
   711 			break;
       
   712 			
       
   713 		case EIdle:
       
   714 		default:
       
   715 			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
       
   716 			SetTestStepResult(verdict);
       
   717 			StopScheduler();
       
   718 			
       
   719 			break;
       
   720 		}
       
   721 	return (activate);
       
   722 	}
       
   723 
       
   724 CFullySpecCLPushStep_8::CFullySpecCLPushStep_8() 
       
   725 	{
       
   726 	}
       
   727 CFullySpecCLPushStep_8::~CFullySpecCLPushStep_8() 
       
   728 	{
       
   729 	}
       
   730 TVerdict CFullySpecCLPushStep_8::doTestStepL()
       
   731 /**
       
   732 *	@return - TVerdict code
       
   733 *	Wrong parameter values for FullySpecified CL Push API:
       
   734 *	- Wrong TUid on construction
       
   735 *	- Connect to wrong bearer (already implemented in test 2)
       
   736 */
       
   737 	{
       
   738 	INFO_PRINTF1(_L("CreateImplementation with wrong Uid- CWapFullySpecCLPushService"));
       
   739 	if(TestStepResult() == EPass )
       
   740 		{
       
   741 		TInt error;
       
   742 		if(GetIntFromConfig(ConfigSection(),KWapExError2, error))
       
   743 			{
       
   744 			iExError2=error;
       
   745 			}
       
   746 		TInt trapValue;
       
   747 		TUid invalidInterfaceUid = {0x00000000}; 
       
   748 		INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), invalidInterfaceUid);
       
   749 		TRAP(trapValue, iImp = CWapFullySpecCLPushService::NewL(invalidInterfaceUid));
       
   750 		TVerdict verdict = (trapValue == iExError2)?EPass:EFail;
       
   751 		if (verdict==EPass)
       
   752 			{
       
   753 			INFO_PRINTF2(_L("CreateImplementation with wrong Uid- Failed as expected with error %d"),trapValue);
       
   754 			}
       
   755 		SetTestStepResult(verdict);
       
   756 		}
       
   757 	return TestStepResult();
       
   758 	}
       
   759 
       
   760 TInt CFullySpecCLPushStep_8::CallStateMachine()
       
   761 	{
       
   762 	return (0);
       
   763 	}
       
   764 
       
   765 CFullySpecCLPushStep_9::CFullySpecCLPushStep_9() {}
       
   766 CFullySpecCLPushStep_9::~CFullySpecCLPushStep_9() {}
       
   767 TVerdict CFullySpecCLPushStep_9::doTestStepL()
       
   768 	{
       
   769 	return TestStepResult();
       
   770 	}
       
   771 
       
   772 TInt CFullySpecCLPushStep_9::CallStateMachine()
       
   773 	{
       
   774 	return (0);
       
   775 	}
       
   776