001/* 002 * Copyright 2015-2018 the original author or authors 003 * 004 * This software is licensed under the Apache License, Version 2.0, 005 * the GNU Lesser General Public License version 2 or later ("LGPL") 006 * and the WTFPL. 007 * You may choose either license to govern your use of this software only 008 * upon the condition that you accept all of the terms of either 009 * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. 010 */ 011package org.minidns.integrationtest; 012 013import static org.junit.Assert.assertTrue; 014 015import java.io.IOException; 016 017import org.minidns.dnsname.DnsName; 018import org.minidns.dnssec.DnssecClient; 019import org.minidns.dnssec.DnssecMessage; 020import org.minidns.integrationtest.IntegrationTestTools.CacheConfig; 021import org.minidns.iterative.ReliableDnsClient.Mode; 022import org.minidns.record.Record.TYPE; 023import org.minidns.source.NetworkDataSourceWithAccounting; 024 025public class IterativeDnssecTest { 026 027 private static final DnsName DNSSEC_DOMAIN = IntegrationTestHelper.DNSSEC_DOMAIN; 028 private static final TYPE RR_TYPE = IntegrationTestHelper.RR_TYPE; 029 030 @IntegrationTest 031 public static void shouldRequireLessQueries() throws IOException { 032 DnssecClient normalCacheClient = getClient(CacheConfig.normal); 033 DnssecMessage normalCacheResult = normalCacheClient.queryDnssec(DNSSEC_DOMAIN, RR_TYPE); 034 assertTrue(normalCacheResult.authenticData); 035 NetworkDataSourceWithAccounting normalCacheNdswa = NetworkDataSourceWithAccounting.from(normalCacheClient); 036 037 DnssecClient extendedCacheClient = getClient(CacheConfig.extended); 038 DnssecMessage extendedCacheResult = extendedCacheClient.queryDnssec(DNSSEC_DOMAIN, RR_TYPE); 039 assertTrue(extendedCacheResult.authenticData); 040 NetworkDataSourceWithAccounting extendedCacheNdswa = NetworkDataSourceWithAccounting.from(extendedCacheClient); 041 042 assertTrue(normalCacheNdswa.getStats().successfulQueries > extendedCacheNdswa.getStats().successfulQueries); 043 } 044 045 private static DnssecClient getClient(CacheConfig cacheConfig) { 046 DnssecClient client = IntegrationTestTools.getClient(cacheConfig); 047 client.setMode(Mode.iterativeOnly); 048 return client; 049 } 050}