001/* 002 * Copyright 2015-2024 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.jupiter.api.Assertions.assertTrue; 014 015import java.io.IOException; 016 017import org.minidns.dnsname.DnsName; 018import org.minidns.dnssec.DnssecClient; 019import org.minidns.dnssec.DnssecQueryResult; 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 DnssecQueryResult normalCacheResult = normalCacheClient.queryDnssec(DNSSEC_DOMAIN, RR_TYPE); 034 assertTrue(normalCacheResult.isAuthenticData()); 035 NetworkDataSourceWithAccounting normalCacheNdswa = NetworkDataSourceWithAccounting.from(normalCacheClient); 036 037 DnssecClient extendedCacheClient = getClient(CacheConfig.extended); 038 DnssecQueryResult extendedCacheResult = extendedCacheClient.queryDnssec(DNSSEC_DOMAIN, RR_TYPE); 039 assertTrue(extendedCacheResult.isAuthenticData()); 040 NetworkDataSourceWithAccounting extendedCacheNdswa = NetworkDataSourceWithAccounting.from(extendedCacheClient); 041 042 final int normalCacheSuccessfulQueries = normalCacheNdswa.getStats().successfulQueries; 043 final int extendedCacheSuccessfulQueries = extendedCacheNdswa.getStats().successfulQueries; 044 assertTrue( 045 normalCacheSuccessfulQueries > extendedCacheSuccessfulQueries, 046 "Extend cache successful query count " + extendedCacheSuccessfulQueries 047 + " is not less than normal cache successful query count " + normalCacheSuccessfulQueries); 048 } 049 050 private static DnssecClient getClient(CacheConfig cacheConfig) { 051 DnssecClient client = IntegrationTestTools.getClient(cacheConfig); 052 client.setMode(Mode.iterativeOnly); 053 return client; 054 } 055}