You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2007/08/02 21:54:53 UTC

svn commit: r562231 - in /harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api: unix/org/apache/harmony/luni/tests/java/net/ windows/org/apache/harmony/luni/tests/java/net/

Author: tellison
Date: Thu Aug  2 12:54:52 2007
New Revision: 562231

URL: http://svn.apache.org/viewvc?view=rev&rev=562231
Log:
Apply patch for HARMONY-4182 ([classlib][luni][java6] New unit test for java.net.NetworkInterface for java6)

Added:
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/unix/org/apache/harmony/luni/tests/java/net/
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/unix/org/apache/harmony/luni/tests/java/net/UnixNetworkInterfaceTest.java   (with props)
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/net/
    harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/net/WinNetworkInterfaceTest.java   (with props)

Added: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/unix/org/apache/harmony/luni/tests/java/net/UnixNetworkInterfaceTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/unix/org/apache/harmony/luni/tests/java/net/UnixNetworkInterfaceTest.java?view=auto&rev=562231
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/unix/org/apache/harmony/luni/tests/java/net/UnixNetworkInterfaceTest.java (added)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/unix/org/apache/harmony/luni/tests/java/net/UnixNetworkInterfaceTest.java Thu Aug  2 12:54:52 2007
@@ -0,0 +1,240 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.harmony.luni.tests.java.net;
+
+import java.net.NetworkInterface;
+import java.util.Enumeration;
+
+import junit.framework.TestCase;
+
+/**
+ * Please note that this case can only be passed on Linux with the user is
+ * 'root'.
+ * 
+ */
+public class UnixNetworkInterfaceTest extends TestCase {
+    private Enumeration<NetworkInterface> netifs = null;
+
+    private boolean valid = false;
+
+    /**
+     * @tests java.net.NetworkInterface#isUp()
+     * 
+     * @since 1.6
+     */
+    public void test_isUp() throws Exception {
+        while (netifs.hasMoreElements()) {
+            NetworkInterface netif = netifs.nextElement();
+            String name = netif.getName();
+            boolean up = netif.isUp();
+            // Down network interface will bring side effect on the
+            // platform. So chooses the already-down interface to up it.
+            if (!up && valid) {
+                String cmd = "ifconfig " + name + " up";
+                Process proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + " up should be " + !up, !up, netif.isUp());
+
+                cmd = "ifconfig " + name + " down";
+                proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + " up should be " + up, up, netif.isUp());
+            }
+        }
+    }
+
+    /**
+     * @tests java.net.NetworkInterface#supportsMulticast()
+     * 
+     * @since 1.6
+     */
+    public void test_supportsMulticast() throws Exception {
+        while (netifs.hasMoreElements()) {
+            NetworkInterface netif = netifs.nextElement();
+            String name = netif.getName();
+            boolean multicast = netif.supportsMulticast();
+            if (valid) {
+                String cmd = multicast ? "ifconfig " + name + " -multicast"
+                        : "ifconfig " + name + " multicast";
+                Process proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + " multicast should be " + !multicast,
+                        !multicast, netif.supportsMulticast());
+
+                cmd = multicast ? "ifconfig " + name + " multicast"
+                        : "ifconfig " + name + " -multicast";
+                proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + " multicast should be " + multicast,
+                        multicast, netif.supportsMulticast());
+            }
+        }
+    }
+
+    /**
+     * @tests java.net.NetworkInterface#getHardwareAddress()
+     * 
+     * @since 1.6
+     */
+    public void test_getHardwareAddress() throws Exception {
+        while (netifs.hasMoreElements()) {
+            NetworkInterface netif = netifs.nextElement();
+            String name = netif.getName();
+            byte[] hardAddr = netif.getHardwareAddress();
+
+            if (hardAddr != null && valid) {
+                String hardwareAddress = toHardwareAddress(hardAddr);
+                String newHardwareAddr = "0:11:25:1B:BD:FF";
+                String cmd = "ifconfig " + name + " hw ether "
+                        + newHardwareAddr;
+                Process proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + "'s hardware address should be"
+                        + newHardwareAddr, newHardwareAddr,
+                        toHardwareAddress(netif.getHardwareAddress()));
+
+                cmd = "ifconfig " + name + " hw ether " + hardwareAddress;
+                proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + "'s hardware address should be"
+                        + hardwareAddress, hardwareAddress,
+                        toHardwareAddress(netif.getHardwareAddress()));
+            }
+        }
+    }
+
+    /**
+     * @tests java.net.NetworkInterface#getMTU()
+     * 
+     * @since 1.6
+     */
+    public void test_getMTU() throws Exception {
+        while (netifs.hasMoreElements()) {
+            NetworkInterface netif = netifs.nextElement();
+            String name = netif.getName();
+            int mtu = netif.getMTU();
+            if (valid) {
+                String cmd = "ifconfig " + name + " mtu 1000";
+                Process proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + " MTU should be 1000", 1000, netif.getMTU());
+
+                cmd = "ifconfig " + name + " mtu " + mtu;
+                proc = Runtime.getRuntime().exec(cmd);
+                proc.waitFor();
+                assertEquals(name + " MTU should be " + mtu, mtu, netif
+                        .getMTU());
+            }
+        }
+    }
+
+    /**
+     * @tests java.net.NetworkInterface#getSubInterfaces()
+     * 
+     * @since 1.6
+     */
+    public void test_getSubInterfaces() throws Exception {
+        while (netifs.hasMoreElements()) {
+            NetworkInterface netif = netifs.nextElement();
+            Enumeration<NetworkInterface> subInterfaces1 = netif
+                    .getSubInterfaces();
+            Enumeration<NetworkInterface> subInterfaces2 = netif
+                    .getSubInterfaces();
+            while (subInterfaces1.hasMoreElements()
+                    && subInterfaces2.hasMoreElements() && valid) {
+                NetworkInterface sub1 = subInterfaces1.nextElement();
+                NetworkInterface sub2 = subInterfaces2.nextElement();
+                assertSame(sub1, sub2);
+                assertSame(netif, sub1.getParent());
+            }
+        }
+    }
+
+    /**
+     * @tests java.net.NetworkInterface#getParent()
+     * 
+     * @since 1.6
+     */
+    public void test_getParent() {
+        while (netifs.hasMoreElements()) {
+            NetworkInterface netif = netifs.nextElement();
+            Enumeration<NetworkInterface> subInterfaces = netif
+                    .getSubInterfaces();
+            boolean contains = false;
+            boolean hasSubInterfaces = false;
+            while (subInterfaces.hasMoreElements() && valid) {
+                hasSubInterfaces = true;
+                NetworkInterface sub = subInterfaces.nextElement();
+                NetworkInterface parent1 = sub.getParent();
+                NetworkInterface parent2 = sub.getParent();
+                assertSame(parent1, parent2);
+                if (netif.equals(parent1)) {
+                    contains = true;
+                    break;
+                }
+            }
+            assertEquals(hasSubInterfaces, contains);
+        }
+    }
+
+    /**
+     * 
+     * @tests java.net.NetworkInterface#isVirtual()
+     * 
+     * @since 1.6
+     */
+    public void test_isVirtual() {
+        while (netifs.hasMoreElements()) {
+            NetworkInterface netif = netifs.nextElement();
+            boolean virtual = netif.getParent() != null;
+            assertEquals(netif.getName() + " isVirtual() is" + !virtual,
+                    virtual, netif.isVirtual());
+            Enumeration<NetworkInterface> subInterfaces = netif
+                    .getSubInterfaces();
+            while (subInterfaces.hasMoreElements()) {
+                assertTrue(subInterfaces.nextElement().isVirtual());
+            }
+        }
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        netifs = NetworkInterface.getNetworkInterfaces();
+        valid = (netifs != null)
+                && System.getProperty("user.name").equals("root");
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        netifs = null;
+        valid = false;
+        super.tearDown();
+    }
+
+    private static String toHardwareAddress(byte[] hardAddr) {
+        StringBuilder builder = new StringBuilder();
+        for (byte b : hardAddr) {
+            builder.append(Integer.toHexString(b >= 0 ? b : b + 256)
+                    .toUpperCase());
+            if (hardAddr[hardAddr.length - 1] != b) {
+                builder.append(":");
+            }
+        }
+        return builder.toString();
+    }
+}

Propchange: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/unix/org/apache/harmony/luni/tests/java/net/UnixNetworkInterfaceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/net/WinNetworkInterfaceTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/net/WinNetworkInterfaceTest.java?view=auto&rev=562231
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/net/WinNetworkInterfaceTest.java (added)
+++ harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/net/WinNetworkInterfaceTest.java Thu Aug  2 12:54:52 2007
@@ -0,0 +1,67 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.harmony.luni.tests.java.net;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.util.ArrayList;
+import java.util.Enumeration;
+
+import junit.framework.TestCase;
+
+
+public class WinNetworkInterfaceTest extends TestCase {
+    // Regression Test for Harmony-2290
+    public void test_isReachableLjava_net_NetworkInterfaceII_loopbackInterface()
+            throws IOException {
+        final int TTL = 20;
+        final int TIME_OUT = 3000;
+
+        NetworkInterface loopbackInterface = null;
+        ArrayList<InetAddress> localAddresses = new ArrayList<InetAddress>();
+        Enumeration<NetworkInterface> networkInterfaces = NetworkInterface
+                .getNetworkInterfaces();
+        while (networkInterfaces.hasMoreElements()) {
+            NetworkInterface networkInterface = networkInterfaces.nextElement();
+            Enumeration<InetAddress> addresses = networkInterface
+                    .getInetAddresses();
+            while (addresses.hasMoreElements()) {
+                InetAddress address = addresses.nextElement();
+                if (address.isLoopbackAddress()) {
+                    loopbackInterface = networkInterface;
+                } else {
+                    localAddresses.add(address);
+                }
+            }
+        }
+
+        // loopbackInterface can reach local address
+        if (null != loopbackInterface) {
+            for (InetAddress destAddress : localAddresses) {
+                System.out.println(destAddress);
+                assertTrue(destAddress.isReachable(loopbackInterface, TTL,
+                        TIME_OUT));
+            }
+        }
+
+        // loopback Interface cannot reach outside address
+        // InetAddress destAddress = InetAddress.getByName("www.google.com");
+        // assertFalse(destAddress.isReachable(loopbackInterface, TTL,
+        // TIME_OUT));
+    }
+}

Propchange: harmony/enhanced/classlib/branches/java6/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/net/WinNetworkInterfaceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native