mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-10 17:49:38 +02:00
SMACK-530 Moved DNSUtilTest to integration tests
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/branches/smack_3_4_0@13872 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
2789591a5b
commit
1c5b28cf9f
1 changed files with 0 additions and 0 deletions
147
test/org/jivesoftware/smack/util/DNSUtilTest.java
Normal file
147
test/org/jivesoftware/smack/util/DNSUtilTest.java
Normal file
|
@ -0,0 +1,147 @@
|
|||
package org.jivesoftware.smack.util;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static junit.framework.Assert.assertNotNull;
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
import static junit.framework.Assert.fail;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
import org.jivesoftware.smack.util.dns.DNSJavaResolver;
|
||||
import org.jivesoftware.smack.util.dns.DNSResolver;
|
||||
import org.jivesoftware.smack.util.dns.HostAddress;
|
||||
import org.jivesoftware.smack.util.dns.JavaxResolver;
|
||||
import org.jivesoftware.smack.util.dns.SRVRecord;
|
||||
import org.junit.Test;
|
||||
|
||||
public class DNSUtilTest {
|
||||
private static final String igniterealtimeDomain = "igniterealtime.org";
|
||||
private static final String igniterealtimeXMPPServer = "xmpp." + igniterealtimeDomain;
|
||||
private static final int igniterealtimeClientPort = 5222;
|
||||
private static final int igniterealtimeServerPort = 5269;
|
||||
|
||||
@Test
|
||||
public void xmppClientDomainJavaXTest() {
|
||||
DNSResolver resolver = JavaxResolver.getInstance();
|
||||
assertNotNull(resolver);
|
||||
DNSUtil.setDNSResolver(resolver);
|
||||
xmppClientDomainTest();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void xmppServerDomainJavaXTest() {
|
||||
DNSResolver resolver = JavaxResolver.getInstance();
|
||||
assertNotNull(resolver);
|
||||
DNSUtil.setDNSResolver(resolver);
|
||||
xmppServerDomainTest();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void xmppClientDomainDNSJavaTest() {
|
||||
DNSResolver resolver = DNSJavaResolver.getInstance();
|
||||
assertNotNull(resolver);
|
||||
DNSUtil.setDNSResolver(resolver);
|
||||
xmppClientDomainTest();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void xmppServerDomainDNSJavaTest() {
|
||||
DNSResolver resolver = DNSJavaResolver.getInstance();
|
||||
assertNotNull(resolver);
|
||||
DNSUtil.setDNSResolver(resolver);
|
||||
xmppServerDomainTest();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sortSRVlowestPrioFirstTest() {
|
||||
List<HostAddress> sortedRecords = DNSUtil.sortSRVRecords(createSRVRecords());
|
||||
assertTrue(sortedRecords.get(0).getFQDN().equals("0.20.foo.bar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sortSRVdistributeOverWeights() {
|
||||
int weight50 = 0;
|
||||
int weight20one = 0;
|
||||
int weight20two = 0;
|
||||
int weight10 = 0;
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
List<HostAddress> sortedRecords = DNSUtil.sortSRVRecords(createSRVRecords());
|
||||
String host = sortedRecords.get(1).getFQDN();
|
||||
if (host.equals("5.20.one.foo.bar")) {
|
||||
weight20one++;
|
||||
} else if (host.equals("5.20.two.foo.bar")) {
|
||||
weight20two++;
|
||||
} else if (host.equals("5.10.foo.bar")) {
|
||||
weight10++;
|
||||
} else if (host.equals("5.50.foo.bar")) {
|
||||
weight50++;
|
||||
} else {
|
||||
fail("Wrong host after SRVRecord sorting");
|
||||
}
|
||||
}
|
||||
assertTrue(weight50 > 400 && weight50 < 600);
|
||||
assertTrue(weight20one > 100 && weight20one < 300);
|
||||
assertTrue(weight20two > 100 && weight20two < 300);
|
||||
assertTrue(weight10 > 0&& weight10 < 200);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sortSRVdistributeZeroWeights() {
|
||||
int weightZeroOne = 0;
|
||||
int weightZeroTwo = 0;
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
List<HostAddress> sortedRecords = DNSUtil.sortSRVRecords(createSRVRecords());
|
||||
// Remove the first 5 records with a lower priority
|
||||
for (int j = 0; j < 5; j++) {
|
||||
sortedRecords.remove(0);
|
||||
}
|
||||
String host = sortedRecords.remove(0).getFQDN();
|
||||
if (host.equals("10.0.one.foo.bar")) {
|
||||
weightZeroOne++;
|
||||
} else if (host.endsWith("10.0.two.foo.bar")) {
|
||||
weightZeroTwo++;
|
||||
} else {
|
||||
fail("Wrong host after SRVRecord sorting");
|
||||
}
|
||||
}
|
||||
assertTrue(weightZeroOne > 400 && weightZeroOne < 600);
|
||||
assertTrue(weightZeroTwo > 400 && weightZeroTwo < 600);
|
||||
}
|
||||
|
||||
private void xmppClientDomainTest() {
|
||||
List<HostAddress> hostAddresses = DNSUtil.resolveXMPPDomain(igniterealtimeDomain);
|
||||
HostAddress ha = hostAddresses.get(0);
|
||||
assertEquals(ha.getFQDN(), igniterealtimeXMPPServer);
|
||||
assertEquals(ha.getPort(), igniterealtimeClientPort);
|
||||
}
|
||||
|
||||
private void xmppServerDomainTest() {
|
||||
List<HostAddress> hostAddresses = DNSUtil.resolveXMPPServerDomain(igniterealtimeDomain);
|
||||
HostAddress ha = hostAddresses.get(0);
|
||||
assertEquals(ha.getFQDN(), igniterealtimeXMPPServer);
|
||||
assertEquals(ha.getPort(), igniterealtimeServerPort);
|
||||
}
|
||||
|
||||
private static List<SRVRecord> createSRVRecords() {
|
||||
List<SRVRecord> records = new ArrayList<SRVRecord>();
|
||||
// We create one record with priority 0 that should also be tried first
|
||||
// Then 4 records with priority 5 and different weights (50, 20, 20, 10)
|
||||
// Then 2 records with priority 10 and weight 0 which should be treaded equal
|
||||
// These records are added in a 'random' way to the list
|
||||
try {
|
||||
records.add(new SRVRecord("5.20.one.foo.bar", 42, 5, 20)); // Priority 5, Weight 20
|
||||
records.add(new SRVRecord("10.0.one.foo.bar", 42, 10, 0)); // Priority 10, Weight 0
|
||||
records.add(new SRVRecord("5.10.foo.bar", 42, 5, 10)); // Priority 5, Weight 10
|
||||
records.add(new SRVRecord("10.0.two.foo.bar", 42, 10, 0)); // Priority 10, Weight 0
|
||||
records.add(new SRVRecord("5.20.two.foo.bar", 42, 5, 20)); // Priority 5, Weight 20
|
||||
records.add(new SRVRecord("0.20.foo.bar", 42, 0, 20)); // Priority 0, Weight 20
|
||||
records.add(new SRVRecord("5.50.foo.bar", 42, 5, 50)); // Priority 5, Weight 50
|
||||
} catch (IllegalArgumentException e) {
|
||||
// Ignore
|
||||
}
|
||||
assertTrue(records.size() > 0);
|
||||
return records;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue