datacommsserver/esockserver/test/TE_Socket/SocketTestSection1.cpp
branchRCL_3
changeset 12 8b5d60ce1e94
parent 2 dee179edb159
child 25 9d7ce34704c8
equal deleted inserted replaced
11:98a7181d2ce7 12:8b5d60ce1e94
    10 //
    10 //
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 // This contains ESock Test cases from section 1
    14 // This contains ESock Test cases from section 1
    15 // 
    15 //
    16 //
    16 //
    17 
    17 
    18 // EPOC includes
    18 // EPOC includes
    19 #include <e32base.h>
    19 #include <e32base.h>
    20 #include <ss_std.h>
    20 #include <ss_std.h>
    57 	Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
    57 	Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
    58 	TESTL(KErrNone == ret);
    58 	TESTL(KErrNone == ret);
    59 
    59 
    60 	CleanupStack::Pop();
    60 	CleanupStack::Pop();
    61 	ss.Close();
    61 	ss.Close();
    62  
    62 
    63  	SetTestStepResult(verdict);   
    63  	SetTestStepResult(verdict);
    64 	return verdict;
    64 	return verdict;
    65 	}
    65 	}
    66 
    66 
    67 
    67 
    68 // Test step 1.2
    68 // Test step 1.2
    69 const TDesC& CSocketTest1_2::GetTestName()
    69 const TDesC& CSocketTest1_2::GetTestName()
    70 	{
    70 	{
    71 	_LIT(ret,"Test1.2");
    71 	_LIT(ret,"Test1.2");
    72 	return ret;
    72 	return ret;
    73 	}
    73 	}
    74 	
    74 
    75 enum TVerdict CSocketTest1_2::InternalDoTestStepL( void )
    75 enum TVerdict CSocketTest1_2::InternalDoTestStepL( void )
    76 	{
    76 	{
    77 	TVerdict verdict = EPass;
    77 	TVerdict verdict = EPass;
    78 
    78 
    79 	Logger().WriteFormat(_L("Test Purpose: Open and Close Sockets"));
    79 	Logger().WriteFormat(_L("Test Purpose: Open and Close Sockets"));
    89 	// NumProtocols and GetProtocolInfo
    89 	// NumProtocols and GetProtocolInfo
    90 	Logger().WriteFormat(_L("Try NumProtocols"));
    90 	Logger().WriteFormat(_L("Try NumProtocols"));
    91 //	ss.__DbgMarkHeap();		// in ESOCKMT leak checking is best done by shutting down the server
    91 //	ss.__DbgMarkHeap();		// in ESOCKMT leak checking is best done by shutting down the server
    92 	TUint numProtocols;
    92 	TUint numProtocols;
    93 	ret = ss.NumProtocols(numProtocols);
    93 	ret = ss.NumProtocols(numProtocols);
    94 	Logger().WriteFormat(_L("NumProtocols returned %S, number %d"), 
    94 	Logger().WriteFormat(_L("NumProtocols returned %S, number %d"),
    95 			&EpocErrorToText(ret), numProtocols);
    95 			&EpocErrorToText(ret), numProtocols);
    96 	TESTL(KErrNone == ret);
    96 	TESTL(KErrNone == ret);
    97 
    97 
    98 	TProtocolDesc protoInfo;
    98 	TProtocolDesc protoInfo;
    99 	TUint aIndex;
    99 	TUint aIndex;
   100 	TBool aFound = false;
   100 	TBool aFound = false;
   101 	RSocket sock1;
   101 	RSocket sock1;
   102 	TInt pdummyIndex = -1;
   102 	TInt pdummyIndex = -1;
   103  	Logger().WriteFormat(_L("Trying GetProtocolInfo until Dummy Protocol 1 is found"));
   103  	Logger().WriteFormat(_L("Trying GetProtocolInfo until Dummy Protocol 1 is found"));
   104 	for (aIndex=1;aIndex<=numProtocols;aIndex++) 
   104 	for (aIndex=1;aIndex<=numProtocols;aIndex++)
   105 		{
   105 		{
   106 		ret = ss.GetProtocolInfo(aIndex, protoInfo);
   106 		ret = ss.GetProtocolInfo(aIndex, protoInfo);
   107 		Logger().WriteFormat(_L("GetProtocolInfo returned %S"), &EpocErrorToText(ret));	
   107 		Logger().WriteFormat(_L("GetProtocolInfo returned %S"), &EpocErrorToText(ret));
   108 		TESTL(KErrNone == ret || KErrCannotFindProtocol == ret);
   108 		TESTL(KErrNone == ret || KErrCannotFindProtocol == ret);
   109 		Logger().WriteFormat(_L("Protocol Index %d corresponds to %S"), aIndex, &protoInfo.iName);
   109 		Logger().WriteFormat(_L("Protocol Index %d corresponds to %S"), aIndex, &protoInfo.iName);
   110 		if (protoInfo.iName == KDummyProtocol1Name())
   110 		if (protoInfo.iName == KDummyProtocol1Name())
   111 			{
   111 			{
   112 			pdummyIndex = aIndex;
   112 			pdummyIndex = aIndex;
   120 		return EFail;
   120 		return EFail;
   121 	}
   121 	}
   122 
   122 
   123 	Logger().WriteFormat(_L("Opening Socket for Family: %d, Sock: %d, protocol: %d"),
   123 	Logger().WriteFormat(_L("Opening Socket for Family: %d, Sock: %d, protocol: %d"),
   124 			protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
   124 			protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
   125 		
   125 
   126 	ret=sock1.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
   126 	ret=sock1.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol);
   127 	Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
   127 	Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
   128 	TESTL(KErrNone == ret);
   128 	TESTL(KErrNone == ret);
   129 	Logger().WriteFormat(_L("Opened %S socket OK"), &protoInfo.iName);
   129 	Logger().WriteFormat(_L("Opened %S socket OK"), &protoInfo.iName);
   130 
   130 
   194 	Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
   194 	Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
   195 	TESTL(KErrNone == ret);
   195 	TESTL(KErrNone == ret);
   196 
   196 
   197 	Logger().WriteFormat(_L("Attempting to create bad socket type"));
   197 	Logger().WriteFormat(_L("Attempting to create bad socket type"));
   198 	RSocket sock;
   198 	RSocket sock;
   199 	ret = sock.Open(ss, 0, 0, 0); 
   199 	ret = sock.Open(ss, 0, 0, 0);
   200 	Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
   200 	Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret));
   201 	TESTL(KErrBadName == ret);
   201 	TESTL(KErrBadName == ret);
   202 
   202 
   203 	sock.Close();
   203 	sock.Close();
   204 	CleanupStack::Pop(&ss);
   204 	CleanupStack::Pop(&ss);
   211 const TDesC& CSocketTest1_4::GetTestName()
   211 const TDesC& CSocketTest1_4::GetTestName()
   212 	{
   212 	{
   213 	_LIT(ret,"Test1.4");
   213 	_LIT(ret,"Test1.4");
   214 	return ret;
   214 	return ret;
   215 	}
   215 	}
   216 	
   216 
   217 enum TVerdict CSocketTest1_4::InternalDoTestStepL( void )
   217 enum TVerdict CSocketTest1_4::InternalDoTestStepL( void )
   218 	{
   218 	{
   219 	TVerdict verdict = EPass;
   219 	TVerdict verdict = EPass;
   220 
   220 
   221 	Logger().WriteFormat(_L("Test Purpose: Find Protocols"));
   221 	Logger().WriteFormat(_L("Test Purpose: Find Protocols"));
   236 
   236 
   237     Logger().WriteFormat(_L("Try to find dummy protocol 1"));
   237     Logger().WriteFormat(_L("Try to find dummy protocol 1"));
   238 	ret = ss.FindProtocol(KDummyProtocol1Name(), protoInfo);
   238 	ret = ss.FindProtocol(KDummyProtocol1Name(), protoInfo);
   239 	Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
   239 	Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret));
   240 	TESTL(KErrNone == ret);
   240 	TESTL(KErrNone == ret);
   241 	
   241 
   242 	CleanupStack::Pop(&ss);
   242 	CleanupStack::Pop(&ss);
   243 	ss.Close();
   243 	ss.Close();
   244 	SetTestStepResult(verdict);
   244 	SetTestStepResult(verdict);
   245 	return verdict;
   245 	return verdict;
   246 	}
   246 	}
   266 	a.iHandle = this;
   266 	a.iHandle = this;
   267 	a.iSem=&s;
   267 	a.iSem=&s;
   268 	a.iNumSockets = KNumTestSockets;
   268 	a.iNumSockets = KNumTestSockets;
   269 	//Need to share logger across different threads
   269 	//Need to share logger across different threads
   270 	Logger().ShareAuto();
   270 	Logger().ShareAuto();
   271 	t.Create(_L("SocketThread1"), SocketThread, 
   271 	t.Create(_L("SocketThread1"), SocketThread,
   272 			 KDefaultStackSize, KDefaultHeapSize, KDefaultHeapSize, &a);
   272 			 KDefaultStackSize, KDefaultHeapSize, KDefaultHeapSize, &a);
   273 	t.Resume();
   273 	t.Resume();
   274 	s.Wait();
   274 	s.Wait();
   275 
   275 
   276 	Logger().WriteFormat(_L("Main thread : Killing Sub thread"));
   276 	Logger().WriteFormat(_L("Main thread : Killing Sub thread"));
   285 const TDesC& CSocketTest1_6::GetTestName()
   285 const TDesC& CSocketTest1_6::GetTestName()
   286 	{
   286 	{
   287 	_LIT(ret,"Test1.6");
   287 	_LIT(ret,"Test1.6");
   288 	return ret;
   288 	return ret;
   289 	}
   289 	}
   290 	
   290 
   291 enum TVerdict CSocketTest1_6::InternalDoTestStepL( void )
   291 enum TVerdict CSocketTest1_6::InternalDoTestStepL( void )
   292 	{
   292 	{
   293 	TVerdict verdict = EPass;
   293 	TVerdict verdict = EPass;
   294 
   294 
   295 	Logger().WriteFormat(_L("Test Purpose: Close Uninitialised Socket"));
   295 	Logger().WriteFormat(_L("Test Purpose: Close Uninitialised Socket"));
   306 const TDesC& CSocketTest1_7::GetTestName()
   306 const TDesC& CSocketTest1_7::GetTestName()
   307 	{
   307 	{
   308 	_LIT(ret,"Test1.7");
   308 	_LIT(ret,"Test1.7");
   309 	return ret;
   309 	return ret;
   310 	}
   310 	}
   311 	
   311 
   312 enum TVerdict CSocketTest1_7::InternalDoTestStepL( void )
   312 enum TVerdict CSocketTest1_7::InternalDoTestStepL( void )
   313 	{
   313 	{
   314 	TVerdict verdict = EPass;
   314 	TVerdict verdict = EPass;
   315 	
   315 
   316 	TInt numExhaustiveSockets = iNormalTest ? KNumExhaustiveSockets : 10;
   316 	TInt numExhaustiveSockets = iNormalTest ? KNumExhaustiveSockets : 10;
   317 	iNormalTest = EFalse; // normal test is only run once, the rest are OOM tests
   317 	iNormalTest = EFalse; // normal test is only run once, the rest are OOM tests
   318 
   318 
   319 	Logger().WriteFormat(_L("Test Purpose: Exhaustive Socket Open"));
   319 	Logger().WriteFormat(_L("Test Purpose: Exhaustive Socket Open"));
   320 
   320 
   348 	Logger().WriteFormat(_L("Attempting to Open %d sockets"), numExhaustiveSockets);
   348 	Logger().WriteFormat(_L("Attempting to Open %d sockets"), numExhaustiveSockets);
   349 	TInt sockNum=0;
   349 	TInt sockNum=0;
   350 	ret = KErrNone;
   350 	ret = KErrNone;
   351 	while (KErrNone==ret && sockNum<numExhaustiveSockets)
   351 	while (KErrNone==ret && sockNum<numExhaustiveSockets)
   352 		{
   352 		{
   353 		ret = socks[sockNum].Open(ss, protoInfo.iAddrFamily, 
   353 		ret = socks[sockNum].Open(ss, protoInfo.iAddrFamily,
   354 								  protoInfo.iSockType, protoInfo.iProtocol);
   354 								  protoInfo.iSockType, protoInfo.iProtocol);
   355 		sockNum++;
   355 		sockNum++;
   356 		}
   356 		}
   357 	if (ret != KErrNone)
   357 	if (ret != KErrNone)
   358 		{
   358 		{
   359 		sockNum--;
   359 		sockNum--;
   360 		}
   360 		}
   361 	Logger().WriteFormat(_L("Created %d sockets"), sockNum);
   361 	Logger().WriteFormat(_L("Created %d sockets"), sockNum);
   362 	
   362 
   363 	Logger().WriteFormat(_L("Freeing sockets in creation order"));
   363 	Logger().WriteFormat(_L("Freeing sockets in creation order"));
   364 	TInt i;
   364 	TInt i;
   365 	for (i=0; i<sockNum; i++)
   365 	for (i=0; i<sockNum; i++)
   366 		{
   366 		{
   367 		socks[i].Close();
   367 		socks[i].Close();
   368 		}
   368 		}
   369 		
   369 
   370 
   370 
   371 #if defined (_DEBUG_SOCKET_FUNCTIONS)
   371 #if defined (_DEBUG_SOCKET_FUNCTIONS)
   372 
   372 
   373 	Logger().WriteFormat(_L("Attempting to Open %d sockets"), numExhaustiveSockets);
   373 	Logger().WriteFormat(_L("Attempting to Open %d sockets"), numExhaustiveSockets);
   374 	TInt sockCount1 = sockNum;
   374 	TInt sockCount1 = sockNum;
   375 	ret = KErrNone;
   375 	ret = KErrNone;
   376 	sockNum = 0;
   376 	sockNum = 0;
   377 	while (ret==KErrNone && sockNum<numExhaustiveSockets)
   377 	while (ret==KErrNone && sockNum<numExhaustiveSockets)
   378 		{
   378 		{
   379 		ret=socks[sockNum].Open(ss, protoInfo.iAddrFamily, 
   379 		ret=socks[sockNum].Open(ss, protoInfo.iAddrFamily,
   380 								protoInfo.iSockType,protoInfo.iProtocol);
   380 								protoInfo.iSockType,protoInfo.iProtocol);
   381 		sockNum++;
   381 		sockNum++;
   382 		}
   382 		}
   383 	if (ret != KErrNone)
   383 	if (ret != KErrNone)
   384 		{
   384 		{
   385 		sockNum--;
   385 		sockNum--;
   386 		}
   386 		}
   387 	Logger().WriteFormat(_L("Created %d sockets, expected %d sockets"), sockNum, sockCount1);
   387 	Logger().WriteFormat(_L("Created %d sockets, expected at least %d sockets"), sockNum, sockCount1);
   388 	TESTL(sockCount1 == sockNum);
   388 	TESTL(sockNum >= sockCount1);
   389 
   389 
   390 	Logger().WriteFormat(_L("Freeing sockets in creation order"));
   390 	Logger().WriteFormat(_L("Freeing sockets in creation order"));
   391 	for (i=0; i<sockNum; i++)
   391 	for (i=0; i<sockNum; i++)
   392 		{
   392 		{
   393 		socks[i].Close();
   393 		socks[i].Close();
   400 	CleanupStack::Pop(&ss);
   400 	CleanupStack::Pop(&ss);
   401 	ss.Close();
   401 	ss.Close();
   402 	SetTestStepResult(verdict);
   402 	SetTestStepResult(verdict);
   403 	return verdict;
   403 	return verdict;
   404 	}
   404 	}
   405 	
   405 
   406 // Test step 1.8
   406 // Test step 1.8
   407 const TDesC& CSocketTest1_8::GetTestName()
   407 const TDesC& CSocketTest1_8::GetTestName()
   408 	{
   408 	{
   409 	_LIT(ret,"Test1.8");
   409 	_LIT(ret,"Test1.8");
   410 	return ret;
   410 	return ret;
   411 	}
   411 	}
   412 	
   412 
   413 enum TVerdict CSocketTest1_8::InternalDoTestStepL( void )
   413 enum TVerdict CSocketTest1_8::InternalDoTestStepL( void )
   414 	{
   414 	{
   415 	TVerdict verdict = EPass;
   415 	TVerdict verdict = EPass;
   416 
   416 
   417 	Logger().WriteFormat(_L("Test Purpose: Exhaustively enumerate all the protocols"));
   417 	Logger().WriteFormat(_L("Test Purpose: Exhaustively enumerate all the protocols"));
   425 	CleanupClosePushL(ss);
   425 	CleanupClosePushL(ss);
   426 	// NumProtocols and GetProtocolInfo
   426 	// NumProtocols and GetProtocolInfo
   427 	Logger().WriteFormat(_L("Try NumProtocols"));
   427 	Logger().WriteFormat(_L("Try NumProtocols"));
   428 	TUint numProtocols;
   428 	TUint numProtocols;
   429 	ret = ss.NumProtocols(numProtocols);
   429 	ret = ss.NumProtocols(numProtocols);
   430 	Logger().WriteFormat(_L("NumProtocols returned %S, number %d"), 
   430 	Logger().WriteFormat(_L("NumProtocols returned %S, number %d"),
   431 			&EpocErrorToText(ret), numProtocols);
   431 			&EpocErrorToText(ret), numProtocols);
   432 	TESTL(KErrNone == ret);
   432 	TESTL(KErrNone == ret);
   433 
   433 
   434 	TProtocolDesc protoInfo;
   434 	TProtocolDesc protoInfo;
   435 	TUint aIndex;
   435 	TUint aIndex;
   436 	TInt pdummyIndex = -1;
   436 	TInt pdummyIndex = -1;
   437  	Logger().WriteFormat(_L("Trying GetProtocolInfo on each protocol"));
   437  	Logger().WriteFormat(_L("Trying GetProtocolInfo on each protocol"));
   438 	for (aIndex=1;aIndex<=numProtocols;aIndex++) 
   438 	for (aIndex=1;aIndex<=numProtocols;aIndex++)
   439 		{
   439 		{
   440 		ret = ss.GetProtocolInfo(aIndex, protoInfo);
   440 		ret = ss.GetProtocolInfo(aIndex, protoInfo);
   441 		Logger().WriteFormat(_L("GetProtocolInfo returned %S"), &EpocErrorToText(ret));	
   441 		Logger().WriteFormat(_L("GetProtocolInfo returned %S"), &EpocErrorToText(ret));
   442 		TESTL(KErrNone == ret);
   442 		TESTL(KErrNone == ret);
   443 		Logger().WriteFormat(_L("Protocol Index %d corresponds to %S"), aIndex, &protoInfo.iName);
   443 		Logger().WriteFormat(_L("Protocol Index %d corresponds to %S"), aIndex, &protoInfo.iName);
   444 		if (protoInfo.iName ==KDummyProtocol1Name())
   444 		if (protoInfo.iName ==KDummyProtocol1Name())
   445 			{
   445 			{
   446 			pdummyIndex = aIndex;
   446 			pdummyIndex = aIndex;
   452 		{
   452 		{
   453 		Logger().WriteFormat(_L("Could not find Dummy Protocol 1"));
   453 		Logger().WriteFormat(_L("Could not find Dummy Protocol 1"));
   454 		verdict = EFail;
   454 		verdict = EFail;
   455 		}
   455 		}
   456 	verdict = EPass;
   456 	verdict = EPass;
   457 	
   457 
   458 	SetTestStepResult(verdict);
   458 	SetTestStepResult(verdict);
   459 	return verdict;
   459 	return verdict;
   460 	}
   460 	}
   461 
   461 
   462 
   462 
   469 const TDesC& CSocketTest1_9::GetTestName()
   469 const TDesC& CSocketTest1_9::GetTestName()
   470 	{
   470 	{
   471 	_LIT(ret,"Test1.9");
   471 	_LIT(ret,"Test1.9");
   472 	return ret;
   472 	return ret;
   473 	}
   473 	}
   474 	
   474 
   475 	
   475 
   476 enum TVerdict CSocketTest1_9::InternalDoTestStepL( void )
   476 enum TVerdict CSocketTest1_9::InternalDoTestStepL( void )
   477 	{
   477 	{
   478 
   478 
   479 	// Create socket, shutdown socket then connect 
   479 	// Create socket, shutdown socket then connect
   480 	TVerdict verdict = EPass;
   480 	TVerdict verdict = EPass;
   481 	Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Shutdown"));
   481 	Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Shutdown"));
   482 
   482 
   483 	// Connect to esock
   483 	// Connect to esock
   484 	Logger().WriteFormat(_L("Attempting to connect to socket server"));
   484 	Logger().WriteFormat(_L("Attempting to connect to socket server"));
   485     RSocketServ ss;
   485     RSocketServ ss;
   486 	TInt ret = ss.Connect();
   486 	TInt ret = ss.Connect();
   487 	Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
   487 	Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret));
   488 	TESTL(KErrNone == ret);
   488 	TESTL(KErrNone == ret);
   489 	CleanupClosePushL(ss); 
   489 	CleanupClosePushL(ss);
   490 
   490 
   491 	// Create and open RConnection
   491 	// Create and open RConnection
   492 	Logger().WriteFormat(_L("Creating RConnection"));
   492 	Logger().WriteFormat(_L("Creating RConnection"));
   493 	RConnection conn; 
   493 	RConnection conn;
   494 	ret = conn.Open(ss);
   494 	ret = conn.Open(ss);
   495 	Logger().WriteFormat(_L("Connection Open returned %S"), &EpocErrorToText(ret));
   495 	Logger().WriteFormat(_L("Connection Open returned %S"), &EpocErrorToText(ret));
   496 	TESTL(KErrNone == ret);
   496 	TESTL(KErrNone == ret);
   497 	CleanupClosePushL(conn);
   497 	CleanupClosePushL(conn);
   498 
   498 
   499 	// Create and open socket on TCP protocol
   499 	// Create and open socket on TCP protocol
   500 	RSocket socket1;
   500 	RSocket socket1;
   501 	
   501 
   502 	
   502 
   503 	TProtocolDesc protoInfo;
   503 	TProtocolDesc protoInfo;
   504 	
   504 
   505 	TUint numProtocols;
   505 	TUint numProtocols;
   506 	ret = ss.NumProtocols(numProtocols);
   506 	ret = ss.NumProtocols(numProtocols);
   507 	Logger().WriteFormat(_L("NumProtocols returned %S, number %d"), 
   507 	Logger().WriteFormat(_L("NumProtocols returned %S, number %d"),
   508 			&EpocErrorToText(ret), numProtocols);
   508 			&EpocErrorToText(ret), numProtocols);
   509 	TESTL(KErrNone == ret);
   509 	TESTL(KErrNone == ret);
   510 
   510 
   511 	
   511 
   512 	for (TInt index=1;index<=numProtocols;index++) 
   512 	for (TInt index=1;index<=numProtocols;index++)
   513 		{
   513 		{
   514 		ret = ss.GetProtocolInfo(index, protoInfo);
   514 		ret = ss.GetProtocolInfo(index, protoInfo);
   515 		Logger().WriteFormat(_L("GetProtocolInfo returned %S"), &EpocErrorToText(ret));	
   515 		Logger().WriteFormat(_L("GetProtocolInfo returned %S"), &EpocErrorToText(ret));
   516 		TESTL(KErrNone == ret || KErrCannotFindProtocol == ret);
   516 		TESTL(KErrNone == ret || KErrCannotFindProtocol == ret);
   517 		Logger().WriteFormat(_L("Protocol Index %d corresponds to %S"), index, &protoInfo.iName);
   517 		Logger().WriteFormat(_L("Protocol Index %d corresponds to %S"), index, &protoInfo.iName);
   518 		if (protoInfo.iName == KDummyProtocol1Name())
   518 		if (protoInfo.iName == KDummyProtocol1Name())
   519 			{
   519 			{
   520 			break;
   520 			break;
   521 			}
   521 			}
   522 		}
   522 		}
   523 	
   523 
   524 	
   524 
   525 	
   525 
   526 	Logger().WriteFormat(_L("Opening Socket 1"));
   526 	Logger().WriteFormat(_L("Opening Socket 1"));
   527 	ret = socket1.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol /*KAfInet, KSockStream, KProtocolInetTcp, conn*/);
   527 	ret = socket1.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol /*KAfInet, KSockStream, KProtocolInetTcp, conn*/);
   528 	Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret)); 
   528 	Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret));
   529 	TESTL(KErrNone == ret);
   529 	TESTL(KErrNone == ret);
   530 	CleanupClosePushL(socket1); 
   530 	CleanupClosePushL(socket1);
   531 
   531 
   532 	// Create Ports for Socket and socket to connect to
   532 	// Create Ports for Socket and socket to connect to
   533 	const TInt KSocket1Port = 3441;
   533 	const TInt KSocket1Port = 3441;
   534 	const TInt KSocket2Port = 3881;
   534 	const TInt KSocket2Port = 3881;
   535 	_LIT(KLoopback, "127.0.0.1");
   535 	_LIT(KLoopback, "127.0.0.1");
   539 	TInetAddr socket1Addr;
   539 	TInetAddr socket1Addr;
   540 	socket1Addr.SetPort(KSocket1Port);
   540 	socket1Addr.SetPort(KSocket1Port);
   541 	socket1Addr.Input(KLocal);
   541 	socket1Addr.Input(KLocal);
   542 	ret = socket1.Bind(socket1Addr);
   542 	ret = socket1.Bind(socket1Addr);
   543 
   543 
   544 	// Set remote address for socket 
   544 	// Set remote address for socket
   545 	TInetAddr socket2Addr;
   545 	TInetAddr socket2Addr;
   546 	socket2Addr.SetPort(KSocket2Port);
   546 	socket2Addr.SetPort(KSocket2Port);
   547 	socket2Addr.Input(KLoopback);
   547 	socket2Addr.Input(KLoopback);
   548 
   548 
   549 	// Shutdown the Socket
   549 	// Shutdown the Socket
   550 	Logger().WriteFormat(_L("Shutting down Connection on Socket1"));
   550 	Logger().WriteFormat(_L("Shutting down Connection on Socket1"));
   551 	TRequestStatus shutdownStatus;
   551 	TRequestStatus shutdownStatus;
   552 	_LIT8(desOut, "Some test stuff to send to protocol");
   552 	_LIT8(desOut, "Some test stuff to send to protocol");
   553 	
   553 
   554 	TBuf8<50> desIn;
   554 	TBuf8<50> desIn;
   555 	
   555 
   556 	socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus);
   556 	socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus);
   557 	User::WaitForRequest(shutdownStatus);
   557 	User::WaitForRequest(shutdownStatus);
   558 	Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int()));
   558 	Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int()));
   559 
   559 
   560 	// Connect socket1 to remote address
   560 	// Connect socket1 to remote address
   566 
   566 
   567 	if(connectSocket1Status != KErrBadHandle)
   567 	if(connectSocket1Status != KErrBadHandle)
   568 		{
   568 		{
   569 		verdict = EFail;
   569 		verdict = EFail;
   570 		}
   570 		}
   571 	
   571 
   572 	CleanupStack::PopAndDestroy(); //socket
   572 	CleanupStack::PopAndDestroy(); //socket
   573 	CleanupStack::PopAndDestroy(); //conn
   573 	CleanupStack::PopAndDestroy(); //conn
   574 	CleanupStack::PopAndDestroy(); //ss
   574 	CleanupStack::PopAndDestroy(); //ss
   575 
   575 
   576 	return verdict;
   576 	return verdict;