In message <[email protected]>, Regis writes:
>
> On 2010-05-19 20:45, Catherine Hope wrote:
> > I also see these 2 tests failing in the same way. It seems to be
> > caused by Regis' commit 944119 "SocketChannelImpl.SocketAdapter's
> > remote address should be updated after channel connected" on
> > 14/05/2010. It could be that the tests are invalid though -
> > the first one is checking that the SocketAddress returned by
> > getRemoteAddress() is a different object to the one that was passed
> > to connect(), though as SocketAddress is immutable would this cause
> > a problem?
> >
>
> The test case expect behaviors to be exactly same with RI, but I don't
> think it's a big deal, I intend to delete this assert.
>
> for - testSocket_NonBlock_BasicStatusAfterConnect, isConnected()
> should check first, following patch can fix it. And again, the test
> failed at same line as BasicStatusAfterConnect.
>
> Following patch can fix these failures, I'd like to commit it if
> second committer agree this.
-1
I am +1 for the patch to SocketChannelImpl.java because this fixes
behaviour.
However, I am -1 for the patch to SocketChannelTest.java because we
don't fix broken tests during code freeze.
-Mark.
> Index:
> modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java
> =====================================================================
> ---
> modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java
> +++
> modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java
> @@ -1008,6 +1008,10 @@ class SocketChannelImpl extends SocketChannel
> implements
> FileDescriptorHandler {
>
> @Override
> public InetAddress getInetAddress() {
> + if (!isConnected()) {
> + return null;
> + }
> +
> if (channel.connectAddress == null && super.getInetAddress() !=
>
> null) {
> channel.connectAddress = new
> InetSocketAddress(super.getInetAddress(), super.getPort());
> }
> @@ -1019,6 +1023,9 @@ class SocketChannelImpl extends SocketChannel implement
> s
> FileDescriptorHandler {
>
> @Override
> public SocketAddress getRemoteSocketAddress() {
> + if (!isConnected()) {
> + return null;
> + }
> if (channel.connectAddress == null && super.getInetAddress() !=
>
> null) {
> channel.connectAddress = new
> InetSocketAddress(super.getInetAddress(), super.getPort());
> }
> @@ -1027,6 +1034,9 @@ class SocketChannelImpl extends SocketChannel implement
> s
> FileDescriptorHandler {
>
> @Override
> public int getPort() {
> + if (!isConnected()) {
> + return 0;
> + }
> if (channel.connectAddress == null && super.getInetAddress() !=
>
> null) {
> channel.connectAddress = new
> InetSocketAddress(super.getInetAddress(), super.getPort());
> }
> Index:
> modules/nio/src/test/java/common/org/apache/harmony/nio/tests/java/nio/channe
> ls/SocketChannelTest.java
> =====================================================================
> ---
> modules/nio/src/test/java/common/org/apache/harmony/nio/tests/java/nio/channe
> ls/SocketChannelTest.java
> +++
> modules/nio/src/test/java/common/org/apache/harmony/nio/tests/java/nio/channe
> ls/SocketChannelTest.java
> @@ -491,8 +491,6 @@ public class SocketChannelTest extends TestCase {
> assertEquals(s.getPort(), address.getPort());
> assertNotNull(s.getLocalSocketAddress());
> assertTrue(s.getReceiveBufferSize() >= 8192);
> - // equal , not same
> - assertNotSame(s.getRemoteSocketAddress(), (SocketAddress) address);
> assertEquals(s.getRemoteSocketAddress(), (SocketAddress) address);
> // assertFalse(s.getReuseAddress());
> assertTrue(s.getSendBufferSize() >= 8192);
>
>
> --
> Best Regards,
> Regis.
>