@Test public void testUpdateRecord_illegalAnyType() throws Exception { testCleanDatabase(); assertEquals(0, dnsDao.count()); DNSRecord record1 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); dnsDao.add(Arrays.asList(record1)); Collection<DNSRecord> records = dnsDao.get(Type.ANY); assertEquals(1, records.size()); DNSRecord checkRecord = records.iterator().next(); assertEquals(record1, checkRecord); checkRecord.setType(Type.ANY); boolean exceptionOccured = false; try { dnsDao.update(checkRecord.getId(), checkRecord); } catch (ConfigurationStoreException e) { exceptionOccured = true; } assertTrue(exceptionOccured); }
@Test public void testCleanDatabase() throws Exception { Collection<DNSRecord> records = dnsDao.get(Type.ANY); if (records != null && records.size() > 0) { for (DNSRecord record : records) dnsDao.remove(record.getId()); } records = dnsDao.get(Type.ANY); assertEquals(0, records.size()); }
@Test public void testAddRecord_invalidType() throws Exception { testCleanDatabase(); DNSRecord record = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); record.setType(Type.ANY); boolean exceptionOccured = false; try { dnsDao.add(Arrays.asList(record)); } catch (ConfigurationStoreException e) { exceptionOccured = true; } assertTrue(exceptionOccured); }
@Test public void testRemoveByIds() throws Exception { testCleanDatabase(); assertEquals(0, dnsDao.count()); // Add 5 record DNSRecord record1 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); DNSRecord record2 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.2"); DNSRecord record3 = DNSRecordUtils.createARecord("example2.domain.com", 86400L, "127.0.0.3"); DNSRecord record4 = DNSRecordUtils.createSRVRecord( "_ldap_cerner._tcp.cerner.com", "example.domain.com", 86400L, 3506, 1, 1); DNSRecord record5 = DNSRecordUtils.createSRVRecord( "_ldap_cerner._tcp.cerner.com", "example2.domain.com", 86400L, 3506, 1, 1); dnsDao.add(Arrays.asList(record1, record2, record3, record4, record5)); assertEquals(5, dnsDao.count()); // remove record 3 Collection<DNSRecord> records = dnsDao.get(record3.getName()); assertEquals(1, records.size()); dnsDao.remove(records.iterator().next().getId()); records = dnsDao.get(Type.ANY); assertEquals(4, dnsDao.count()); assertTrue(records.contains(record1)); assertTrue(records.contains(record2)); assertTrue(records.contains(record4)); assertTrue(records.contains(record5)); // remove the rest long[] ids = new long[records.size()]; int cnt = 0; for (DNSRecord record : records) ids[cnt++] = record.getId(); dnsDao.remove(ids); records = dnsDao.get(Type.ANY); assertEquals(0, records.size()); }
@Test public void testMultipleARecords_differentRdata() throws Exception { testCleanDatabase(); DNSRecord record1 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); dnsDao.add(Arrays.asList(record1)); DNSRecord record2 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.2"); dnsDao.add(Arrays.asList(record2)); /* * Get by name */ Collection<DNSRecord> records = dnsDao.get(record1.getName()); assertEquals(2, records.size()); records.contains(record1); records.contains(record2); }
@Test public void testUpdateRecord() throws Exception { testCleanDatabase(); assertEquals(0, dnsDao.count()); DNSRecord record1 = DNSRecordUtils.createMXRecord("example.domain.com", "127.0.0.1", 86400L, 1); dnsDao.add(Arrays.asList(record1)); Collection<DNSRecord> records = dnsDao.get(Type.ANY); assertEquals(1, records.size()); DNSRecord checkRecord = records.iterator().next(); assertEquals(record1, checkRecord); checkRecord.setName("example2.domain.com."); dnsDao.update(checkRecord.getId(), checkRecord); records = dnsDao.get(Type.ANY); assertEquals(1, records.size()); DNSRecord modRecord = records.iterator().next(); assertEquals(checkRecord, modRecord); }
@Test public void testGetByRecord() throws Exception { testCleanDatabase(); DNSRecord record1 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); DNSRecord record2 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.2"); DNSRecord record3 = DNSRecordUtils.createARecord("example2.domain.com", 86400L, "127.0.0.3"); DNSRecord record4 = DNSRecordUtils.createSRVRecord( "_ldap_cerner._tcp.cerner.com", "example.domain.com", 86400L, 3506, 1, 1); DNSRecord record5 = DNSRecordUtils.createSRVRecord( "_ldap_cerner._tcp.cerner.com", "example2.domain.com", 86400L, 3506, 1, 1); dnsDao.add(Arrays.asList(record1, record2, record3, record4, record5)); Collection<DNSRecord> records = dnsDao.get(record3.getName()); assertEquals(1, records.size()); DNSRecord checkRec = dnsDao.get(records.iterator().next().getId()); assertNotNull(checkRec); assertEquals(checkRec, record3); records = dnsDao.get(Type.ANY); assertEquals(5, records.size()); long[] ids = new long[records.size()]; int cnt = 0; for (DNSRecord record : records) ids[cnt++] = record.getId(); records = dnsDao.get(ids); assertEquals(5, records.size()); assertTrue(records.contains(record1)); assertTrue(records.contains(record2)); assertTrue(records.contains(record3)); assertTrue(records.contains(record4)); assertTrue(records.contains(record5)); }
/** JmDNS callback to update a DNS record. */ public void updateRecord(JmDNS jmdns, long now, DNSRecord rec) { if ((rec != null) && !rec.isExpired(now)) { switch (rec.type) { case DNSConstants.TYPE_A: // IPv4 case DNSConstants.TYPE_AAAA: // IPv6 // This has not been tested if (rec.name.equals(server)) { addr = ((DNSRecord.Address) rec).getAddress(); } break; case DNSConstants.TYPE_SRV: if (rec.name.equals(getQualifiedName())) { DNSRecord.Service srv = (DNSRecord.Service) rec; server = srv.server; port = srv.port; weight = srv.weight; priority = srv.priority; addr = null; // changed to use getCache() instead - jeffs // updateRecord(jmdns, now, // (DNSRecord)jmdns.cache.get(server, TYPE_A, CLASS_IN)); updateRecord( jmdns, now, (DNSRecord) jmdns.getCache().get(server, DNSConstants.TYPE_A, DNSConstants.CLASS_IN)); } break; case DNSConstants.TYPE_TXT: if (rec.name.equals(getQualifiedName())) { DNSRecord.Text txt = (DNSRecord.Text) rec; text = txt.text; } break; } // Future Design Pattern // This is done, to notify the wait loop in method // JmDNS.getServiceInfo(type, name, timeout); if (hasData() && dns != null) { dns.handleServiceResolved(this); dns = null; } synchronized (this) { notifyAll(); } } }
@Test public void testMultipleARecords() throws Exception { testCleanDatabase(); DNSRecord record1 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); DNSRecord record2 = DNSRecordUtils.createARecord("example2.domain.com", 86400L, "74.22.43.123"); DNSRecord record3 = DNSRecordUtils.createARecord("sample.domain.com", 86400L, "81.142.48.20"); dnsDao.add(Arrays.asList(record1, record2, record3)); /* * Get by name */ Collection<DNSRecord> records = dnsDao.get(record1.getName()); assertEquals(1, records.size()); DNSRecord compareRec = records.iterator().next(); assertEquals(record1.getName(), compareRec.getName()); assertEquals(Type.A, compareRec.getType()); /* * Get all types */ records = dnsDao.get(Type.ANY); assertEquals(3, records.size()); assertTrue(records.contains(record1)); assertTrue(records.contains(record2)); assertTrue(records.contains(record3)); /* * Get A only */ records = dnsDao.get(Type.A); assertEquals(3, records.size()); assertTrue(records.contains(record1)); assertTrue(records.contains(record2)); assertTrue(records.contains(record3)); /* * Get SRV only */ records = dnsDao.get(Type.SRV); assertEquals(0, records.size()); }
@Test public void testAddSingleARecords() throws Exception { testCleanDatabase(); // Add 1 record DNSRecord record = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); dnsDao.add(Arrays.asList(record)); Collection<DNSRecord> records = dnsDao.get(record.getName()); assertEquals(1, records.size()); DNSRecord compareRec = records.iterator().next(); assertEquals(record.getName(), compareRec.getName()); assertEquals(Type.A, compareRec.getType()); }
@Test public void testGetByName() throws Exception { testCleanDatabase(); DNSRecord record1 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.1"); DNSRecord record2 = DNSRecordUtils.createARecord("example.domain.com", 86400L, "127.0.0.2"); DNSRecord record3 = DNSRecordUtils.createARecord("example2.domain.com", 86400L, "127.0.0.3"); DNSRecord record4 = DNSRecordUtils.createSRVRecord( "_ldap_cerner._tcp.cerner.com", "example.domain.com", 86400L, 3506, 1, 1); DNSRecord record5 = DNSRecordUtils.createSRVRecord( "_ldap_cerner._tcp.cerner.com", "example2.domain.com", 86400L, 3506, 1, 1); dnsDao.add(Arrays.asList(record1, record2, record3, record4, record5)); Collection<DNSRecord> records = dnsDao.get(record1.getName()); assertEquals(2, records.size()); assertTrue(records.contains(record1)); assertTrue(records.contains(record2)); records = dnsDao.get(record3.getName()); assertEquals(1, records.size()); assertTrue(records.contains(record3)); records = dnsDao.get(record4.getName()); assertEquals(2, records.size()); assertTrue(records.contains(record4)); assertTrue(records.contains(record5)); records = dnsDao.get("bogus.com."); assertEquals(0, records.size()); }