private Zone loadZone(String zoneName) throws IOException { String zoneFilename = zoneName + "zone"; URL zoneResource = getClass().getResource(zoneFilename); assertNotNull("test resource for zone could not be loaded: " + zoneFilename, zoneResource); String zoneFile = zoneResource.getFile(); Zone zone = new Zone(Name.fromString(zoneName), zoneFile); return zone; }
/** {@inheritDoc} */ @Override public void beforeTestMethod(final TestContext testContext) throws Exception { super.beforeTestMethod(testContext); final JUnitDNSServer config = findTestAnnotation(JUnitDNSServer.class, testContext); if (config == null) { return; } LogUtils.infof(this, "initializing DNS on port %d", config.port()); m_server = new DNSServer(); m_server.addPort(config.port()); for (final DNSZone dnsZone : config.zones()) { String name = dnsZone.name(); if (!name.endsWith(".")) { name = name + "."; } final Name zoneName = Name.fromString(name, Name.root); LogUtils.debugf(this, "zoneName = %s", zoneName); final Zone zone = new Zone(zoneName, new Record[] { new SOARecord(zoneName, DClass.IN, DEFAULT_TTL, zoneName, Name.fromString("admin." + name), 1, DEFAULT_TTL, DEFAULT_TTL, DEFAULT_TTL, DEFAULT_TTL), new NSRecord(zoneName, DClass.IN, DEFAULT_TTL, Name.fromString("resolver1.opendns.com.")), new NSRecord(zoneName, DClass.IN, DEFAULT_TTL, Name.fromString("resolver2.opendns.com.")), new ARecord(zoneName, DClass.IN, DEFAULT_TTL, InetAddressUtils.addr(dnsZone.v4address())), new AAAARecord(zoneName, DClass.IN, DEFAULT_TTL, InetAddressUtils.addr(dnsZone.v6address())) }); LogUtils.debugf(this, "zone = %s", zone); for (final DNSEntry entry : dnsZone.entries()) { LogUtils.debugf(this, "adding entry: %s", entry); String hostname = entry.hostname(); final Name recordName = Name.fromString(hostname, zoneName); LogUtils.debugf(this, "name = %s", recordName); if (entry.ipv6()) { zone.addRecord(new AAAARecord(recordName, DClass.IN, DEFAULT_TTL, InetAddressUtils.addr(entry.address()))); } else { zone.addRecord(new ARecord(recordName, DClass.IN, DEFAULT_TTL, InetAddressUtils.addr(entry.address()))); } } m_server.addZone(zone); } LogUtils.debugf(this, "starting DNS server"); m_server.start(); try { Thread.sleep(50); } catch (final InterruptedException e) { LogUtils.debugf(this, e, "interrupted while waiting for server to come up"); Thread.currentThread().interrupt(); } }