blob: 0820108f052250725435f90cbc86a48706cb913f [file] [log] [blame]
/* 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 dalvik.annotation.KnownFailure;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import java.io.Serializable;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.UnknownHostException;
import java.security.Permission;
import junit.framework.TestCase;
import org.apache.harmony.testframework.serialization.SerializationTest;
import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
@TestTargetClass(InetSocketAddress.class)
public class InetSocketAddressTest extends TestCase {
/**
* @tests java.net.InetSocketAddress#InetSocketAddress(String, int)
*/
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "InetSocketAddress",
args = {java.lang.String.class, int.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
clazz = SocketAddress.class,
method = "SocketAddress",
args = {}
)
})
public void test_ConstructorLjava_lang_StringI() throws Exception {
// regression test for Harmony-1042
InetSocketAddress address = new InetSocketAddress("127.0.0.1", 0);
assertNotNull(address.getHostName());
try {
new InetSocketAddress("127.0.0.1", -1);
fail("IllegalArgumentException was not thrown.");
} catch(IllegalArgumentException iae) {
//expected
}
try {
new InetSocketAddress("127.0.0.1", 65536);
fail("IllegalArgumentException was not thrown.");
} catch(IllegalArgumentException iae) {
//expected
}
}
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "InetSocketAddress",
args = {java.net.InetAddress.class, int.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getHostName",
args = {}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getPort",
args = {}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
clazz = SocketAddress.class,
method = "SocketAddress",
args = {}
)
})
public void test_ConstructorLInetAddressI() {
String validIPAddresses[] = { "::1.2.3.4", "::", "::", "1::0", "1::",
"::1", "0",
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF",
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:255.255.255.255",
"0:0:0:0:0:0:0:0", "0:0:0:0:0:0:0.0.0.0",
"127.0.0.1", "localhost", "1.1", "42.42.42.42", "0.0.0.0"};
String results [] = { "0:0:0:0:0:0:102:304", "0:0:0:0:0:0:0:0",
"0:0:0:0:0:0:0:0", "1:0:0:0:0:0:0:0", "1:0:0:0:0:0:0:0",
"0:0:0:0:0:0:0:1", "0.0.0.0",
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"0:0:0:0:0:0:0:0", "0:0:0:0:0:0:0:0",
"localhost", "localhost", "1.0.0.1", "42.42.42.42", "0.0.0.0"};
for(int i = 0; i < validIPAddresses.length; i++) {
try {
InetAddress ia = InetAddress.getByName(validIPAddresses[i]);
InetSocketAddress isa = new InetSocketAddress(ia, 80);
assertEquals(80,isa.getPort());
//assertEquals(results[i], isa.getHostName());
} catch(UnknownHostException uhe) {
fail("UnknownHostException was thrown for: " +
validIPAddresses[i]);
}
}
try {
InetSocketAddress isa = new InetSocketAddress((InetAddress)null, 80);
assertEquals("0.0.0.0", isa.getHostName());
} catch(Exception e) {
fail("Unexpected exception was thrown.");
}
try {
InetAddress isa = InetAddress.getByName("localhost");
new InetSocketAddress(isa, 65536);
fail("IllegalArgumentException was not thrown.");
} catch(IllegalArgumentException iae) {
//expected
} catch (UnknownHostException e) {
fail("UnknownHostException was thrown.");
}
try {
InetAddress isa = InetAddress.getByName("localhost");
new InetSocketAddress(isa, -1);
fail("IllegalArgumentException was not thrown.");
} catch(IllegalArgumentException iae) {
//expected
} catch (UnknownHostException e) {
fail("UnknownHostException was thrown.");
}
}
@TestTargets ({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "InetSocketAddress",
args = {int.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
clazz = SocketAddress.class,
method = "SocketAddress",
args = {}
)
})
public void test_ConstructorI() {
InetSocketAddress isa = new InetSocketAddress(65535);
assertEquals("0.0.0.0", isa.getHostName());
assertEquals(65535, isa.getPort());
try {
new InetSocketAddress(-1);
fail("IllegalArgumentException was not thrown.");
} catch(IllegalArgumentException iae) {
//expected
}
try {
new InetSocketAddress(65536);
fail("IllegalArgumentException was not thrown.");
} catch(IllegalArgumentException iae) {
//expected
}
}
/**
* @tests java.net.InetSocketAddress#createUnresolved(String, int)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is the complete subset of tests for createUnresolved method.",
method = "createUnresolved",
args = {java.lang.String.class, int.class}
)
public void test_createUnresolvedLjava_lang_StringI() {
HostPortPair[] legalHostPortPairs = { new HostPortPair("127.0.0.1", 1234),
new HostPortPair("192.168.0.1", 10000), new HostPortPair("127.0.0", 0),
new HostPortPair("127.0.0", 65535),
new HostPortPair("strange host", 65535) };
for (int i = 0; i < legalHostPortPairs.length; i++) {
InetSocketAddress isa = InetSocketAddress.createUnresolved(
legalHostPortPairs[i].host, legalHostPortPairs[i].port);
assertTrue(isa.isUnresolved());
assertNull(isa.getAddress());
assertEquals(isa.getHostName(), legalHostPortPairs[i].host);
assertEquals(isa.getPort(), legalHostPortPairs[i].port);
}
}
/**
* @tests java.net.InetSocketAddress#createUnresolved(String, int)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is the complete subset of tests for createUnresolved method.",
method = "createUnresolved",
args = {java.lang.String.class, int.class}
)
public void test_createUnresolvedLjava_lang_StringI_IllegalArgumentException() {
HostPortPair[] illegalHostPortPairs = { new HostPortPair(null, 1),
new HostPortPair("host", -1), new HostPortPair("host", 65536) };
for (int i = 0; i < illegalHostPortPairs.length; i++) {
try {
InetSocketAddress.createUnresolved(
illegalHostPortPairs[i].host,
illegalHostPortPairs[i].port);
fail("should throw IllegalArgumentException, host = "
+ illegalHostPortPairs[i].host + ",port = "
+ illegalHostPortPairs[i].port);
} catch (IllegalArgumentException e) {
// expected
}
}
}
/*
* inner class for createUnresolved test convenience.
*/
class HostPortPair {
String host;
int port;
public HostPortPair(String host, int port) {
this.host = host;
this.port = port;
}
};
// comparator for InetSocketAddress objects
private static final SerializableAssert COMPARATOR = new SerializableAssert() {
public void assertDeserialized(Serializable initial,
Serializable deserialized) {
InetSocketAddress init = (InetSocketAddress) initial;
InetSocketAddress desr = (InetSocketAddress) deserialized;
assertEquals("HostName", init.getHostName(), desr.getHostName());
assertEquals("Port", init.getPort(), desr.getPort());
assertEquals("Address", init.getAddress(), desr.getAddress());
}
};
/**
* @tests serialization/deserialization compatibility.
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Checks serialization",
method = "!SerializationSelf",
args = {}
)
public void testSerializationSelf() throws Exception {
Object[] testCases = {
InetSocketAddress.createUnresolved("badhost", 1000), // unresolved
new InetSocketAddress("Localhost", 1000) };
SerializationTest.verifySelf(testCases, COMPARATOR);
}
/**
* @tests serialization/deserialization compatibility with RI.
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "Checks serialization",
method = "!SerializationGolden",
args = {}
)
public void testSerializationCompatibility() throws Exception {
Object[] testCases = {
InetSocketAddress.createUnresolved("badhost", 1000), // unresolved
new InetSocketAddress("Localhost", 1000) };
SerializationTest.verifyGolden(this, testCases, COMPARATOR);
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "equals",
args = {java.lang.Object.class}
)
public void test_equals() {
InetSocketAddress isa1 = new InetSocketAddress(1);
InetSocketAddress isa2 = new InetSocketAddress(2);
assertFalse(isa1.equals(isa2));
InetSocketAddress isa3 = new InetSocketAddress(1);
assertTrue(isa1.equals(isa3));
isa1 = new InetSocketAddress("localhost", 80);
isa2 = new InetSocketAddress("127.0.0.1", 80);
assertTrue(isa1.equals(isa2));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getAddress",
args = {}
)
public void test_getAddress() {
String validIPAddresses[] = { "::1.2.3.4", "::", "::", "1::0", "1::",
"::1", "0",
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF",
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:255.255.255.255",
"0:0:0:0:0:0:0:0", "0:0:0:0:0:0:0.0.0.0",
"127.0.0.1", "localhost", "1.1", "42.42.42.42", "0.0.0.0"};
for(int i = 0; i < validIPAddresses.length; i++) {
try {
InetAddress ia = InetAddress.getByName(validIPAddresses[i]);
InetSocketAddress isa = new InetSocketAddress(ia, 0);
assertEquals(ia, isa.getAddress());
} catch(UnknownHostException uhe) {
fail("UnknownHostException was thrown for: " +
validIPAddresses[i]);
}
}
InetSocketAddress isa = new InetSocketAddress((InetAddress) null, 0);
assertNotNull(isa.getAddress());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "hashCode",
args = {}
)
public void test_hashCode() {
InetSocketAddress isa1 = new InetSocketAddress("localhost", 8080);
InetSocketAddress isa2 = new InetSocketAddress("127.0.0.1", 8080);
assertTrue(isa1.hashCode() == isa2.hashCode());
InetSocketAddress isa3 = new InetSocketAddress("0.0.0.0", 8080);
assertFalse(isa1.hashCode() == isa3.hashCode());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "isUnresolved",
args = {}
)
public void test_isUnresolved() {
InetSocketAddress isa1 = new InetSocketAddress("localhost", 80);
assertFalse(isa1.isUnresolved());
InetSocketAddress sockAddr = new InetSocketAddress("unknown.host", 1000);
assertTrue(sockAddr.isUnresolved());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "toString",
args = {}
)
public void test_toString() {
InetSocketAddress isa = new InetSocketAddress("localhost", 80);
assertNotNull(isa.toString());
}
}