The Trunk: NetworkTests-dtl.34.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: NetworkTests-dtl.34.mcz

commits-2
David T. Lewis uploaded a new version of NetworkTests to project The Trunk:
http://source.squeak.org/trunk/NetworkTests-dtl.34.mcz

==================== Summary ====================

Name: NetworkTests-dtl.34
Author: dtl
Time: 15 November 2012, 12:05:37.979 am
UUID: 661c04dd-3386-4424-aa92-944ad27fa74a
Ancestors: NetworkTests-dtl.33

SocketTest>>testSocketReuse will fail on platforms that do not implement the SO_REUSEPORT socket option. Update the test comment to explain this, and provide assertions that identify the cause of the failure.

Note that failure on setting SO_REUSEPORT reflects a limitation of the underlying platform network support, and does not indicate an error in Squeak networking.

=============== Diff against NetworkTests-dtl.33 ===============

Item was changed:
  ----- Method: SocketTest>>testSocketReuse (in category 'tests') -----
  testSocketReuse
+ "Test for SO_REUSEADDR/SO_REUSEPORT. Test will fail if the platform does
+ not implement these socket options. Support for SO_REUSEPORT is not
+ present on many systems, and a failure on setting this socket option reflects
+ a limitation of the underlying platform."
- "Test for SO_REUSEADDR/SO_REUSEPORT"
 
  | address port udp1 send1 udp2 recv2 sendProc recvProc received |
  address := #[255 255 255 255]. "broadcast"
  port := 31259.
  [
  udp1 := Socket newUDP.
+ self assert: (udp1 setOption: 'SO_REUSEADDR' value: 1) notNil
+ description: 'SO_REUSEADDR not supported'.
+ self assert: (udp1 setOption: 'SO_REUSEPORT' value: 1) notNil
+ description: 'SO_REUSEPORT not supported'.
- udp1 setOption: 'SO_REUSEADDR' value: 1.
- udp1 setOption: 'SO_REUSEPORT' value: 1.
  udp1 setPort: port.
+ self assert: (udp1 setOption: 'SO_BROADCAST' value: 1) notNil
+ description: 'SO_BROADCAST not supported'.
- udp1 setOption: 'SO_BROADCAST' value: 1.
  send1 := UUID new.
 
  udp2 := Socket newUDP.
+ self assert: (udp2 setOption: 'SO_REUSEADDR' value: 1) notNil
+ description: 'SO_REUSEADDR not supported'.
+ self assert: (udp2 setOption: 'SO_REUSEPORT' value: 1) notNil
+ description: 'SO_REUSEPORT not supported'.
- udp2 setOption: 'SO_REUSEADDR' value: 1.
- udp2 setOption: 'SO_REUSEPORT' value: 1.
  udp2 setPort: port.
+ self assert: (udp2 setOption: 'SO_BROADCAST' value: 1) notNil
+ description: 'SO_BROADCAST not supported'.
- udp2 setOption: 'SO_BROADCAST' value: 1.
  recv2 := UUID new.
 
  received := 0.
  recvProc := [
  [received < 16] whileTrue:[
  received := received + (udp2 receiveDataInto: recv2 startingAt: received + 1).
  ]
  ] fork.
  sendProc := [
  udp1 setPeer: address port: port.
  udp1 sendData: send1 count: 16.
  ] fork.
  (Delay forMilliseconds: 200) wait.
  self should: [recvProc isTerminated].
  self should: [sendProc isTerminated].
  self should: [send1 = recv2].
  ] ensure:[
+ udp1 ifNotNilDo: [:s | s destroy].
+ udp2 ifNotNilDo: [:s | s destroy].
- udp1 destroy.
- udp2 destroy.
  ].
  !