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); |
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(); |
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; |
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 |