/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package diskCacheV111.poolManager;
import org.junit.Before;
import org.junit.Test;
import java.net.UnknownHostException;
import static org.junit.Assert.*;
public class NetHandlerTest {
private static final String IPV4_HOSTNAME_1 = "192.168.1.1";
private static final String IPV4_HOSTNAME_2 = "192.168.1.2";
private static final String IPV4_MASKED_HOSTNAME = "192.168.1.0";
private static final String IPV4_NETMASK = "24";
private static final String IPV4_SUBNET = IPV4_HOSTNAME_1+"/"+IPV4_NETMASK;
private static final String IPV4_MASKED_SUBNET = IPV4_MASKED_HOSTNAME+"/"+IPV4_NETMASK;
private static final String IPV6_HOSTNAME_1 = "feed::bad:f00d";
private static final String IPV6_HOSTNAME_2 = "feed::bad:f00b";
private static final String IPV6_MASKED_HOSTNAME = "feed::bad:f000";
private static final String IPV6_NETMASK = "120";
private static final String IPV6_SUBNET = IPV6_HOSTNAME_1+"/"+IPV6_NETMASK;
private static final String IPV6_MASKED_SUBNET = IPV6_MASKED_HOSTNAME+"/"+IPV6_NETMASK;
NetHandler netHandler;
@Before
public void setUp()
{
netHandler = new NetHandler();
netHandler.add(new NetUnit(IPV4_SUBNET));
netHandler.add(new NetUnit(IPV6_SUBNET));
}
/**
* Test of add method, of class NetHandler.
*/
@Test
public void testAdd() throws UnknownHostException {
assertNetHandlerContains(new NetUnit(IPV4_SUBNET));
assertNetHandlerContains(new NetUnit(IPV6_SUBNET));
}
/**
* Test of find method, of class NetHandler.
*/
@Test
public void testFind() throws UnknownHostException {
NetUnit result = netHandler.find(new NetUnit(IPV4_MASKED_SUBNET));
assertEquals(IPV4_MASKED_SUBNET, result.getCanonicalName());
result = netHandler.find(new NetUnit(IPV6_MASKED_SUBNET));
assertEquals(IPV6_MASKED_SUBNET, result.getCanonicalName());
}
/**
* Test of clear method, of class NetHandler.
*/
@Test
public void testClear() throws UnknownHostException {
netHandler.clear();
assertNetHandlerDoesNotContain(new NetUnit(IPV4_SUBNET));
assertNetHandlerDoesNotContain(new NetUnit(IPV6_SUBNET));
}
/**
* Test of remove method, of class NetHandler.
*/
@Test
public void testRemove() throws UnknownHostException {
netHandler.remove(new NetUnit(IPV4_MASKED_SUBNET));
netHandler.remove(new NetUnit(IPV6_MASKED_SUBNET));
assertNetHandlerDoesNotContain(new NetUnit(IPV4_SUBNET));
assertNetHandlerDoesNotContain(new NetUnit(IPV6_SUBNET));
}
/**
* Test of match method, of class NetHandler.
*/
@Test
public void testMatch() throws Exception {
NetUnit result = netHandler.match(IPV4_HOSTNAME_2);
assertEquals(IPV4_MASKED_SUBNET, result.getCanonicalName());
result = netHandler.match(IPV6_HOSTNAME_2);
assertEquals(IPV6_MASKED_SUBNET, result.getCanonicalName());
}
/**
* Test of bitsToString method, of class NetHandler.
*/
@Test
public void testBitsToString() {
int bits = Integer.parseInt(IPV4_NETMASK);
String expResult = IPV4_NETMASK;
String result = netHandler.bitsToString(bits);
assertEquals(expResult, result);
bits = Integer.parseInt(IPV6_NETMASK);
expResult = IPV6_NETMASK;
result = netHandler.bitsToString(bits);
assertEquals(expResult, result);
}
@Test
public void testAddMatch() throws UnknownHostException {
assertCIDRSubnetMatches("0.0.0.0/0", "131.169.252.76");
assertCIDRSubnetMatches("128.0.0.0/1", "131.169.252.76");
assertCIDRSubnetMatches("130.0.0.0/7", "131.169.252.76");
assertCIDRSubnetMatches("131.0.0.0/8", "131.169.252.76");
assertCIDRSubnetMatches("131.128.0.0/9", "131.169.252.76");
assertCIDRSubnetMatches("131.168.0.0/15", "131.169.252.76");
assertCIDRSubnetMatches("131.169.0.0/16", "131.169.252.76");
assertCIDRSubnetMatches("131.169.128.0/17", "131.169.252.76");
assertCIDRSubnetMatches("131.169.252.0/23", "131.169.252.76");
assertCIDRSubnetMatches("131.169.252.0/24", "131.169.252.76");
assertCIDRSubnetMatches("131.169.252.0/25", "131.169.252.76");
assertCIDRSubnetMatches("131.169.252.76/31", "131.169.252.76");
assertCIDRSubnetMatches("131.169.252.76/32", "131.169.252.76");
}
private void assertCIDRSubnetMatches(String subnet, String ip)
{
NetHandler nh = new NetHandler();
NetUnit nu, matchedNu;
try {
nu = new NetUnit(subnet);
nh.add(nu);
matchedNu = nh.match(ip);
} catch(UnknownHostException e) {
throw new RuntimeException(e);
}
assertNotNull(matchedNu);
assertEquals(nu.getCanonicalName(), matchedNu.getCanonicalName());
}
private void assertNetHandlerContains(NetUnit netUnit) {
assertNotNull(netHandler.find(netUnit));
}
private void assertNetHandlerDoesNotContain(NetUnit netUnit) {
assertNull(netHandler.find(netUnit));
}
}