PR target/27599
[official-gcc.git] / libjava / classpath / testsuite / java.net / DatagramSocketSendReceiveTest.java
blobb1614d23e0562f08bea236cf34da755fc2a15791
1 import java.net.*;
3 /*
4 * Start one thread for receiving a packet, wait for it to set up,
5 * send a packet to it, and wait until it completes. Compare the
6 * packet to make sure it came thru without errors.
7 */
9 public class DatagramSocketSendReceiveTest
10 implements Runnable
12 public static final int port = 4000 + (int)(java.lang.Math.random() * 1000);
13 public static final String message = "hello";
14 public static int count = 0;
15 public static String received;
17 void send()
18 throws Exception
20 DatagramSocket sender = new DatagramSocket();
21 InetAddress local = sender.getLocalAddress();
22 byte []message_bytes = message.getBytes();
24 DatagramPacket packet = new DatagramPacket(message_bytes,
25 message_bytes.length,
26 local, port);
28 sender.send(packet);
29 sender.close();
31 void receive()
32 throws Exception
34 DatagramSocket socket = new DatagramSocket(port);
35 socket.setSoTimeout(10);
37 byte[] buffer = new byte[100];
38 DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
40 synchronized(this) {
41 notifyAll();
44 socket.receive(packet);
45 socket.close();
47 received = new String(buffer, 0, packet.getLength());
49 count++;
50 if ( message.length() != received.length() )
51 throw new Exception("Receved "+ received.length()+
52 " bytes but sent "+message.length() + " bytes");
54 if ( ! message.equals(received) )
55 throw new Exception("Receved \""+ received+
56 "\" but sent \""+message + "\"");
60 public void run()
62 String name = Thread.currentThread().getName();
63 if (name.equals("timer")) {
64 try {
65 Thread.sleep(10000);
66 } catch (InterruptedException e){}
67 System.out.println("FAILED: timer triggered");
68 System.exit(0);
70 try {
71 receive();
72 } catch (Exception e) {
73 System.out.println("FAILED: receiver: " + e);
74 System.exit(0);
77 public static void main(String args[])
79 try {
80 DatagramSocketSendReceiveTest sender =
81 new DatagramSocketSendReceiveTest();
82 DatagramSocketSendReceiveTest receiver =
83 new DatagramSocketSendReceiveTest();
84 Thread receiver_thread = new Thread(receiver);
86 /* Make sure the test terminates even if it hangs on network */
87 DatagramSocketSendReceiveTest timer = new DatagramSocketSendReceiveTest();
88 Thread timer_thread = new Thread(timer, "timer");
89 timer_thread.start();
91 synchronized(receiver) {
92 receiver_thread.start();
93 receiver.wait();
95 try {
96 sender.send();
97 } catch (Exception e) {
98 System.out.println("FAILED: sender: " + e);
99 System.exit(0);
101 receiver_thread.join();
103 if (0 == count)
104 throw new Exception("Nothing received");
106 System.out.println("PASSED: DatagramSocket send/receive count="+count+
107 " message="+received);
108 System.exit(0);
109 } catch (Exception e) {
110 System.out.println("FAILED: " + e);
111 System.exit(0);