harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tim Ellison (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-2276) [classlib][net]DatagramPacket truncate packet length different than RI
Date Tue, 29 May 2007 10:36:15 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-2276?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12499762
] 

Tim Ellison commented on HARMONY-2276:
--------------------------------------

Sorry guys, I still cannot get this patch to pass the tests on my Win XP/x86 machine.

I still get a :


> [classlib][net]DatagramPacket truncate packet length different than RI
> ----------------------------------------------------------------------
>
>                 Key: HARMONY-2276
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2276
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Jimmy, Jing Lv
>            Assignee: Tim Ellison
>         Attachments: H-2276.patch, H-2276_updated_1.patch, harmony-2276-updated.patch,
patch-2276.diff
>
>
> Hi,
>     Though spec reads un-clear, RI sets packet length of DatagramPacket to its orginal
length in receiving, but Harmony remember its perious received length. As a result, if the
perious received bytes are shorter than the next input, it will cause a truncate different
than RI.
> testcase:
> public class DatagramSocketTest extends TestCase {
>    private final String ADDRESS = "239.255.2.3";
>    private final int PORT = 6155;
>    private MulticastSocket socket = null;
>    private byte[] recvData = null;
>    private DatagramPacket recvDatagram = null;
>    @Override
>    protected void setUp() throws Exception {
>        super.setUp();
>        // open a multicast socket
>        socket = new MulticastSocket(PORT);
>        socket.joinGroup(InetAddress.getByName(ADDRESS));
>        recvData = new byte[100];
>        recvDatagram = new DatagramPacket(recvData, recvData.length);
>    }
>    @Override
>    protected void tearDown() throws Exception {
>        if (socket != null) socket.close();
>        super.tearDown();
>    }
>    private void sendMessage(String message) throws IOException {
>        // send the datagram
>        byte[] sendData = message.getBytes();
>        DatagramPacket sendDatagram = new DatagramPacket(sendData, 0,
> sendData.length,
>                new InetSocketAddress(InetAddress.getByName(ADDRESS), PORT));
>        socket.send(sendDatagram);
>    }
>    private String receiveMessage() throws IOException {
>        // receive the datagram
>        socket.setSoTimeout(5000);           // prevent eternal block
> in socket.receive()
>        socket.receive(recvDatagram);
>        String recvMessage = new String(recvData, 0, recvDatagram.getLength());
>        return recvMessage;
>    }
>    public void testReceive() {
>        String message = "Hello, world!";
>        String longerMessage = message + " again.";
>        try {
>            sendMessage(message);
>            assertEquals(message, receiveMessage());
>            sendMessage(longerMessage);
>            assertEquals(longerMessage, receiveMessage());
>        } catch (IOException e) {
>            //ignore
>        }
>    }
> }
> Result: RI pass, but Harmony fails.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message