summaryrefslogtreecommitdiffstats
path: root/tests/CoreTests/android/core/DatagramTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/CoreTests/android/core/DatagramTest.java')
-rw-r--r--tests/CoreTests/android/core/DatagramTest.java192
1 files changed, 0 insertions, 192 deletions
diff --git a/tests/CoreTests/android/core/DatagramTest.java b/tests/CoreTests/android/core/DatagramTest.java
deleted file mode 100644
index 355a267..0000000
--- a/tests/CoreTests/android/core/DatagramTest.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.core;
-
-import junit.framework.TestCase;
-
-import java.io.IOException;
-import java.net.DatagramPacket;
-import java.net.DatagramSocket;
-import java.net.InetAddress;
-import java.net.SocketTimeoutException;
-import android.test.suitebuilder.annotation.LargeTest;
-
-/**
- * Implements some simple tests for datagrams. Not as excessive as the core
- * tests, but good enough for the harness.
- */
-public class DatagramTest extends TestCase {
-
- /**
- * Helper class that listens to incoming datagrams and reflects them to the
- * sender. Incoming datagram is interpreted as a String. It is uppercased
- * before being sent back.
- */
-
- class Reflector extends Thread {
- // Helper class for reflecting incoming datagrams.
- DatagramSocket socket;
-
- boolean alive = true;
-
- byte[] buffer = new byte[256];
-
- DatagramPacket packet;
-
- /**
- * Main loop. Receives datagrams and reflects them.
- */
- @Override
- public void run() {
- try {
- while (alive) {
- try {
- packet.setLength(buffer.length);
- socket.receive(packet);
- String s = stringFromPacket(packet);
- // System.out.println(s + " (from " + packet.getAddress() + ":" + packet.getPort() + ")");
-
- try {
- Thread.sleep(100);
- } catch (InterruptedException ex) {
- // Ignore.
- }
-
- stringToPacket(s.toUpperCase(), packet);
-
- packet.setAddress(InetAddress.getLocalHost());
- packet.setPort(2345);
-
- socket.send(packet);
- } catch (java.io.InterruptedIOException e) {
- }
- }
- } catch (java.io.IOException ex) {
- ex.printStackTrace();
- } finally {
- socket.close();
- }
- }
-
- /**
- * Creates a new Relfector object for the given local address and port.
- */
- public Reflector(int port, InetAddress address) {
- try {
- packet = new DatagramPacket(buffer, buffer.length);
- socket = new DatagramSocket(port, address);
- } catch (IOException ex) {
- throw new RuntimeException(
- "Creating datagram reflector failed", ex);
- }
- }
- }
-
- /**
- * Converts a given datagram packet's contents to a String.
- */
- static String stringFromPacket(DatagramPacket packet) {
- return new String(packet.getData(), 0, packet.getLength());
- }
-
- /**
- * Converts a given String into a datagram packet.
- */
- static void stringToPacket(String s, DatagramPacket packet) {
- byte[] bytes = s.getBytes();
- System.arraycopy(bytes, 0, packet.getData(), 0, bytes.length);
- packet.setLength(bytes.length);
- }
-
- /**
- * Implements the main part of the Datagram test.
- */
- @LargeTest
- public void testDatagram() throws Exception {
-
- Reflector reflector = null;
- DatagramSocket socket = null;
-
- try {
- // Setup the reflector, so we have a partner to send to
- reflector = new Reflector(1234, InetAddress.getLocalHost());
- reflector.start();
-
- byte[] buffer = new byte[256];
-
- DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
- socket = new DatagramSocket(2345, InetAddress.getLocalHost());
-
- // Send ten simple packets and check for the expected responses.
- for (int i = 1; i <= 10; i++) {
- String s = "Hello, Android world #" + i + "!";
- stringToPacket(s, packet);
-
- packet.setAddress(InetAddress.getLocalHost());
- packet.setPort(1234);
-
- socket.send(packet);
-
- try {
- Thread.sleep(100);
- } catch (InterruptedException ex) {
- // Ignore.
- }
-
- packet.setLength(buffer.length);
- socket.receive(packet);
- String t = stringFromPacket(packet);
- // System.out.println(t + " (from " + packet.getAddress() + ":" + packet.getPort() + ")");
-
- assertEquals(s.toUpperCase(), t);
- }
- } finally {
- if (reflector != null) {
- reflector.alive = false;
- }
-
- if (socket != null) {
- socket.close();
- }
- }
- }
-
- // Regression test for issue 1018003: DatagramSocket ignored a set timeout.
- @LargeTest
- public void testDatagramSocketSetSOTimeout() throws Exception {
- DatagramSocket sock = null;
- int timeout = 5000;
- long start = System.currentTimeMillis();
- try {
- sock = new DatagramSocket();
- DatagramPacket pack = new DatagramPacket(new byte[100], 100);
- sock.setSoTimeout(timeout);
- sock.receive(pack);
- } catch (SocketTimeoutException e) {
- // expected
- long delay = System.currentTimeMillis() - start;
- if (Math.abs(delay - timeout) > 1000) {
- fail("timeout was not accurate. expected: " + timeout
- + " actual: " + delay + " miliseconds.");
- }
- } finally {
- if (sock != null) {
- sock.close();
- }
- }
- }
-}