You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by dg...@apache.org on 2019/02/26 18:47:23 UTC
[trafficcontrol] branch master updated: Modified logging to include the resolver IP address and override the … (#3364)
This is an automated email from the ASF dual-hosted git repository.
dgelinas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
The following commit(s) were added to refs/heads/master by this push:
new 60ca6c4 Modified logging to include the resolver IP address and override the … (#3364)
60ca6c4 is described below
commit 60ca6c409ea6270fb671b5ffb0f53ff37c55a037
Author: Jeff Elsloo <el...@users.noreply.github.com>
AuthorDate: Tue Feb 26 11:47:17 2019 -0700
Modified logging to include the resolver IP address and override the … (#3364)
* Modified logging to include the resolver IP address and override the client address when EDNS0 client subnet extensions are enabled and a client subnet is present. Updated docs and tests. This resolves #3363.
* Updated the changelog to include a note about the logging change.
---
CHANGELOG.md | 1 +
docs/source/admin/traffic_ops/using.rst | 2 +
docs/source/admin/traffic_router.rst | 12 +++--
.../core/dns/DNSAccessEventBuilder.java | 13 +++++-
.../traffic_router/core/dns/DNSAccessRecord.java | 15 +++++-
.../traffic_router/core/dns/NameServer.java | 2 +
.../core/dns/DNSAccessEventBuilderTest.java | 54 +++++++++++++++++++---
.../core/dns/protocol/AbstractProtocolTest.java | 8 ++--
8 files changed, 89 insertions(+), 18 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 305fe33..43455c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
- Issue 2821: Fixed "Traffic Router may choose wrong certificate when SNI names overlap"
- traffic_ops/app/bin/checks/ToDnssecRefresh.pl now requires "user" and "pass" parameters of an operations-level user! Update your scripts accordingly! This was necessary to move to an API endpoint with proper authentication, which may be safely exposed.
- Traffic Monitor UI updated to support HTTP or HTTPS traffic.
+- Modified Traffic Router logging format to include an additional field for DNS log entries, namely `rhi`. This defaults to '-' and is only used when EDNS0 client subnet extensions are enabled and a client subnet is present in the request. When enabled and a subnet is present, the subnet appears in the `chi` field and the resolver address is in the `rhi` field.
## [3.0.0] - 2018-10-30
### Added
diff --git a/docs/source/admin/traffic_ops/using.rst b/docs/source/admin/traffic_ops/using.rst
index 32c9e91..8bc38ef 100644
--- a/docs/source/admin/traffic_ops/using.rst
+++ b/docs/source/admin/traffic_ops/using.rst
@@ -786,6 +786,8 @@ Traffic Router Profile
+-----------------------------------------+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| CoverageZoneJsonURL | CRConfig.xml | The location (URL) to retrieve the coverage zone map file in JSON format from. |
+-----------------------------------------+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
+| ecsEnable | CRConfig.json | Boolean value to enable or disable ENDS0 client subnet extensions. |
++-----------------------------------------+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| geolocation.polling.url | CRConfig.json | The location (URL) to retrieve the geo database file from. |
+-----------------------------------------+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| geolocation.polling.interval | CRConfig.json | How often to refresh the coverage geo location database in ms |
diff --git a/docs/source/admin/traffic_router.rst b/docs/source/admin/traffic_router.rst
index b44abd3..0499c2f 100644
--- a/docs/source/admin/traffic_router.rst
+++ b/docs/source/admin/traffic_router.rst
@@ -227,6 +227,8 @@ Message Format
+-------+----------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| chi | The IP address of the requester | Depends on whether this was a DNS or HTTP request, see other sections |
+-------+----------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
+ | rhi | The IP address of the request source address | Depends on whether this was a DNS or HTTP request, see other sections |
+ +-------+----------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| ttms | The amount of time in milliseconds it took Traffic Router to process the request | A number greater than or equal to zero |
+-------+----------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| rtype | Routing result type | One of ERROR, CZ, DEEP_CZ, GEO, MISS, STATIC_ROUTE, DS_REDIRECT, DS_MISS, INIT, FED |
@@ -247,8 +249,8 @@ Items within brackets are detailed under the HTTP and DNS sections
.. code-block:: text
:caption: Example Logfile Lines
- 144140678.000 qtype=DNS chi=192.168.10.11 ttms=789 [Fields Specific to the DNS request] rtype=CZ rloc="40.252611,58.439389" rdtl=- rerr="-" [Fields Specific to the DNS result]
- 144140678.000 qtype=HTTP chi=192.168.10.11 ttms=789 [Fields Specific to the HTTP request] rtype=GEO rloc="40.252611,58.439389" rdtl=- rerr="-" [Fields Specific to the HTTP result]
+ 144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=789 [Fields Specific to the DNS request] rtype=CZ rloc="40.252611,58.439389" rdtl=- rerr="-" [Fields Specific to the DNS result]
+ 144140678.000 qtype=HTTP chi=192.168.10.11 rhi=- ttms=789 [Fields Specific to the HTTP request] rtype=GEO rloc="40.252611,58.439389" rdtl=- rerr="-" [Fields Specific to the HTTP result]
.. Note:: These samples contain fields that are always present for every single access event to Traffic Router
@@ -315,7 +317,7 @@ HTTP Specifics
.. code-block:: text
:caption: Sample Message
- 1452197640.936 qtype=HTTP chi=69.241.53.218 url="http://foo.mm-test.jenkins.cdnlab.comcast.net/some/asset.m3u8" cqhm=GET cqhv=HTTP/1.1 rtype=GEO rloc="40.252611,58.439389" rdtl=- rerr="-" pssc=302 ttms=0 rurl="http://odol-atsec-sim-114.mm-test.jenkins.cdnlab.comcast.net:8090/some/asset.m3u8" rh="Accept: */*" rh="myheader: asdasdasdasfasg"
+ 1452197640.936 qtype=HTTP chi=69.241.53.218 rhi=- url="http://foo.mm-test.jenkins.cdnlab.comcast.net/some/asset.m3u8" cqhm=GET cqhv=HTTP/1.1 rtype=GEO rloc="40.252611,58.439389" rdtl=- rerr="-" pssc=302 ttms=0 rurl="http://odol-atsec-sim-114.mm-test.jenkins.cdnlab.comcast.net:8090/some/asset.m3u8" rh="Accept: */*" rh="myheader: asdasdasdasfasg"
.. table:: Request Fields
@@ -344,7 +346,7 @@ DNS Specifics
.. code-block:: text
:caption: Sample Message
- 144140678.000 qtype=DNS chi=192.168.10.11 ttms=123 xn=65535 fqdn=www.example.com. type=A class=IN ttl=12345 rcode=NOERROR rtype=CZ rloc="40.252611,58.439389" rdtl=- rerr="-" ans="192.168.1.2 192.168.3.4 0:0:0:0:0:ffff:c0a8:102 0:0:0:0:0:ffff:c0a8:304"
+ 144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=123 xn=65535 fqdn=www.example.com. type=A class=IN ttl=12345 rcode=NOERROR rtype=CZ rloc="40.252611,58.439389" rdtl=- rerr="-" ans="192.168.1.2 192.168.3.4 0:0:0:0:0:ffff:c0a8:102 0:0:0:0:0:ffff:c0a8:304"
.. _qname: http://www.zytrax.com/books/dns/ch15/#qname
@@ -357,6 +359,8 @@ DNS Specifics
+=======+=================================================================================+===================================================================================================+
| xn | The ID from the client DNS request header | a whole number between 0 and 65535 (inclusive) |
+-------+---------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+
+ | rhi | The IP address of the resolver when ENDS0 client subnet extensions are enabled. | An IPv4 or IPv6 string, or dash if request is for resolver only and no client subnet is present |
+ +-------+---------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+
| fqdn | The qname field from the client DNS request message (i.e. the | A series of DNS labels/domains separated by '.' characters and ending with a '.' character |
| | :abbr:`FQDN (Fully Qualified Domain Name)` the client is requesting be | |
+-------+---------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+
diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java
index feeb64e..4c19592 100644
--- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java
+++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilder.java
@@ -65,9 +65,18 @@ public class DNSAccessEventBuilder {
final double ttms = (System.nanoTime() - dnsAccessRecord.getRequestNanoTime()) / 1000000.0;
- final String addressString = dnsAccessRecord.getClient().getHostAddress();
+ final String clientAddressString = dnsAccessRecord.getClient().getHostAddress();
+ final String resolverAddressString = dnsAccessRecord.getResolver().getHostAddress();
- final StringBuilder stringBuilder = new StringBuilder(timeString).append(" qtype=DNS chi=").append(addressString).append(" ttms=").append(String.format("%.03f", ttms));
+ final StringBuilder stringBuilder = new StringBuilder(timeString).append(" qtype=DNS chi=").append(clientAddressString).append(" rhi=");
+
+ if (!clientAddressString.equals(resolverAddressString)) {
+ stringBuilder.append(resolverAddressString);
+ } else {
+ stringBuilder.append('-');
+ }
+
+ stringBuilder.append(" ttms=").append(String.format("%.03f", ttms));
if (dnsAccessRecord.getDnsMessage() == null) {
return stringBuilder.append(" xn=- fqdn=- type=- class=- rcode=-").toString();
diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessRecord.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessRecord.java
index 8bf54f4..9c255d9 100644
--- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessRecord.java
+++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessRecord.java
@@ -29,6 +29,7 @@ import java.net.InetAddress;
public final class DNSAccessRecord {
private final long queryInstant;
private final InetAddress client;
+ private final InetAddress resolver;
private final Message dnsMessage;
private final ResultType resultType;
private final ResultDetails resultDetails;
@@ -43,6 +44,10 @@ public final class DNSAccessRecord {
return client;
}
+ public InetAddress getResolver() {
+ return resolver;
+ }
+
public Message getDnsMessage() {
return dnsMessage;
}
@@ -65,7 +70,8 @@ public final class DNSAccessRecord {
public static class Builder {
private final long queryInstant;
- private final InetAddress client;
+ private final InetAddress resolver;
+ private InetAddress client;
private Message dnsMessage;
private ResultType resultType;
private ResultDetails resultDetails;
@@ -75,6 +81,7 @@ public final class DNSAccessRecord {
public Builder(final long queryInstant, final InetAddress client) {
this.queryInstant = queryInstant;
this.client = client;
+ this.resolver = client;
this.requestNanoTime = System.nanoTime();
}
@@ -83,6 +90,11 @@ public final class DNSAccessRecord {
return this;
}
+ public Builder client(final InetAddress client) {
+ this.client = client;
+ return this;
+ }
+
public Builder resultType(final ResultType resultType) {
this.resultType = resultType;
return this;
@@ -106,6 +118,7 @@ public final class DNSAccessRecord {
private DNSAccessRecord(final Builder builder) {
queryInstant = builder.queryInstant;
client = builder.client;
+ resolver = builder.resolver;
dnsMessage = builder.dnsMessage;
resultType = builder.resultType;
resultDetails = builder.resultDetails;
diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/NameServer.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/NameServer.java
index 87102ea..57be1c4 100644
--- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/NameServer.java
+++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/NameServer.java
@@ -130,6 +130,8 @@ public class NameServer {
}
}
if ((ipaddr!= null) && (isEcsEnable())) {
+ builder.client(ipaddr);
+
LOGGER.debug("DNS: Using Client IP Address from ECS Option" + ipaddr.getHostAddress() + "/"
+ nmask);
lookup(qname, qtype, ipaddr, response, flags, dnssecRequest, builder);
diff --git a/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilderTest.java b/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilderTest.java
index ad757c8..c9a8eac 100644
--- a/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilderTest.java
+++ b/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/DNSAccessEventBuilderTest.java
@@ -42,6 +42,7 @@ import static org.powermock.api.mockito.PowerMockito.whenNew;
public class DNSAccessEventBuilderTest {
private InetAddress client;
+ private InetAddress resolver;
@Before
public void before() throws Exception {
@@ -53,6 +54,9 @@ public class DNSAccessEventBuilderTest {
client = mock(InetAddress.class);
when(client.getHostAddress()).thenReturn("192.168.10.11");
+
+ resolver = mock(InetAddress.class);
+ when(resolver.getHostAddress()).thenReturn("10.0.0.211");
}
@Test
@@ -63,7 +67,7 @@ public class DNSAccessEventBuilderTest {
DNSAccessRecord dnsAccessRecord = new DNSAccessRecord.Builder(144140678000L, client).build();
String dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord, new WireParseException("invalid record length"));
- assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 ttms=789.000 xn=- fqdn=- type=- class=- rcode=-" +
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=789.000 xn=- fqdn=- type=- class=- rcode=-" +
" rtype=- rloc=\"-\" rdtl=- rerr=\"Bad Request:WireParseException:invalid record length\" ttl=\"-\" ans=\"-\""));
}
@@ -100,7 +104,7 @@ public class DNSAccessEventBuilderTest {
DNSAccessRecord dnsAccessRecord = new DNSAccessRecord.Builder(144140678000L, client).dnsMessage(response).build();
String dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord);
- assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 ttms=789.123" +
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=789.123" +
" xn=65535 fqdn=www.example.com. type=A class=IN" +
" rcode=NOERROR rtype=- rloc=\"-\" rdtl=- rerr=\"-\" ttl=\"1 2 3\" ans=\"foo bar baz\""));
@@ -108,7 +112,7 @@ public class DNSAccessEventBuilderTest {
when(System.nanoTime()).thenReturn(100000000L + 456000L);
dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord);
- assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 ttms=0.456" +
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=0.456" +
" xn=65535 fqdn=www.example.com. type=A class=IN" +
" rcode=NOERROR rtype=- rloc=\"-\" rdtl=- rerr=\"-\" ttl=\"1 2 3\" ans=\"foo bar baz\""));
}
@@ -121,7 +125,7 @@ public class DNSAccessEventBuilderTest {
DNSAccessRecord dnsAccessRecord = new DNSAccessRecord.Builder(144140678000L, client).dnsMessage(query).build();
String dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord, new RuntimeException("boom it failed"));
- assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 ttms=789.876" +
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=789.876" +
" xn=65535 fqdn=www.example.com. type=A class=IN" +
" rcode=SERVFAIL rtype=- rloc=\"-\" rdtl=- rerr=\"Server Error:RuntimeException:boom it failed\" ttl=\"-\" ans=\"-\""));
}
@@ -163,22 +167,58 @@ public class DNSAccessEventBuilderTest {
DNSAccessRecord dnsAccessRecord = builder.build();
String dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord);
- assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 ttms=789.000" +
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=789.000" +
" xn=65535 fqdn=www.example.com. type=A class=IN" +
" rcode=NOERROR rtype=CZ rloc=\"39.75,-104.99\" rdtl=- rerr=\"-\" ttl=\"1 2 3\" ans=\"foo bar baz\""));
dnsAccessRecord = builder.resultType(ResultType.GEO).build();
dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord);
- assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 ttms=0.123" +
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=0.123" +
" xn=65535 fqdn=www.example.com. type=A class=IN" +
" rcode=NOERROR rtype=GEO rloc=\"39.75,-104.99\" rdtl=- rerr=\"-\" ttl=\"1 2 3\" ans=\"foo bar baz\""));
dnsAccessRecord = builder.resultType(ResultType.MISS).resultDetails(ResultDetails.DS_NOT_FOUND).build();
dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord);
- assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 ttms=0.246" +
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=- ttms=0.246" +
" xn=65535 fqdn=www.example.com. type=A class=IN" +
" rcode=NOERROR rtype=MISS rloc=\"39.75,-104.99\" rdtl=DS_NOT_FOUND rerr=\"-\" ttl=\"1 2 3\" ans=\"foo bar baz\""));
}
+
+ @Test
+ public void itLogsResolverAndClient() throws Exception {
+ final Name name = Name.fromString("www.example.com.");
+
+ when(System.currentTimeMillis()).thenReturn(144140678789L).thenReturn(144140678000L);
+ when(System.nanoTime()).thenReturn(100000000L, 100000000L + 789000321L, 100000000L + 123123L, 100000000L + 246001L );
+
+ final Record question = Record.newRecord(name, Type.A, DClass.IN, 12345L);
+ final Message response = spy(Message.newQuery(question));
+ response.getHeader().setRcode(Rcode.NOERROR);
+
+ final Record record1 = mock(Record.class);
+ when(record1.rdataToString()).thenReturn("foo");
+ when(record1.getTTL()).thenReturn(1L);
+
+ Record[] records = new Record[] {record1};
+ when(response.getSectionArray(Section.ANSWER)).thenReturn(records);
+
+ InetAddress answerAddress = Inet4Address.getByName("192.168.1.23");
+
+ ARecord addressRecord = new ARecord(name, DClass.IN, 54321L, answerAddress);
+ response.addRecord(addressRecord, Section.ANSWER);
+
+ Geolocation resultLocation = new Geolocation(39.7528,-104.9997);
+ ResultType resultType = ResultType.CZ;
+ final DNSAccessRecord.Builder builder = new DNSAccessRecord.Builder(144140678000L, resolver)
+ .dnsMessage(response).resultType(resultType).resultLocation(resultLocation).client(client);
+
+ DNSAccessRecord dnsAccessRecord = builder.build();
+ String dnsAccessEvent = DNSAccessEventBuilder.create(dnsAccessRecord);
+
+ assertThat(dnsAccessEvent, equalTo("144140678.000 qtype=DNS chi=192.168.10.11 rhi=10.0.0.211 ttms=789.000" +
+ " xn=65535 fqdn=www.example.com. type=A class=IN" +
+ " rcode=NOERROR rtype=CZ rloc=\"39.75,-104.99\" rdtl=- rerr=\"-\" ttl=\"1\" ans=\"foo\""));
+ }
}
\ No newline at end of file
diff --git a/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/protocol/AbstractProtocolTest.java b/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/protocol/AbstractProtocolTest.java
index cdb7691..f9852b4 100644
--- a/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/protocol/AbstractProtocolTest.java
+++ b/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/dns/protocol/AbstractProtocolTest.java
@@ -100,7 +100,7 @@ public class AbstractProtocolTest {
abstractProtocol.run();
- verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 ttms=345.123 xn=65535 fqdn=www.example.com. type=A class=IN rcode=NOERROR rtype=- rloc=\"-\" rdtl=- rerr=\"-\" ttl=\"3600\" ans=\"192.168.8.9\"");
+ verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 rhi=- ttms=345.123 xn=65535 fqdn=www.example.com. type=A class=IN rcode=NOERROR rtype=- rloc=\"-\" rdtl=- rerr=\"-\" ttl=\"3600\" ans=\"192.168.8.9\"");
}
@Test
@@ -123,7 +123,7 @@ public class AbstractProtocolTest {
abstractProtocol.setNameServer(nameServer);
abstractProtocol.run();
- verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 ttms=345.123 xn=65535 fqdn=John\\032Wayne. type=TYPE65530 class=CLASS43210 rcode=REFUSED rtype=- rloc=\"-\" rdtl=- rerr=\"-\" ttl=\"-\" ans=\"-\"");
+ verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 rhi=- ttms=345.123 xn=65535 fqdn=John\\032Wayne. type=TYPE65530 class=CLASS43210 rcode=REFUSED rtype=- rloc=\"-\" rdtl=- rerr=\"-\" ttl=\"-\" ans=\"-\"");
}
@Test
@@ -131,7 +131,7 @@ public class AbstractProtocolTest {
FakeAbstractProtocol abstractProtocol = new FakeAbstractProtocol(client, new byte[] {1,2,3,4,5,6,7});
abstractProtocol.setNameServer(nameServer);
abstractProtocol.run();
- verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 ttms=345.123 xn=- fqdn=- type=- class=- rcode=- rtype=- rloc=\"-\" rdtl=- rerr=\"Bad Request:WireParseException:end of input\" ttl=\"-\" ans=\"-\"");
+ verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 rhi=- ttms=345.123 xn=- fqdn=- type=- class=- rcode=- rtype=- rloc=\"-\" rdtl=- rerr=\"Bad Request:WireParseException:end of input\" ttl=\"-\" ans=\"-\"");
}
@Test
@@ -154,7 +154,7 @@ public class AbstractProtocolTest {
abstractProtocol.setNameServer(nameServer);
abstractProtocol.run();
- verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 ttms=345.123 xn=65535 fqdn=John\\032Wayne. type=TYPE65530 class=CLASS43210 rcode=SERVFAIL rtype=- rloc=\"-\" rdtl=- rerr=\"Server Error:RuntimeException:Aw snap!\" ttl=\"-\" ans=\"-\"");
+ verify(accessLogger).info("144140678.000 qtype=DNS chi=192.168.23.45 rhi=- ttms=345.123 xn=65535 fqdn=John\\032Wayne. type=TYPE65530 class=CLASS43210 rcode=SERVFAIL rtype=- rloc=\"-\" rdtl=- rerr=\"Server Error:RuntimeException:Aw snap!\" ttl=\"-\" ans=\"-\"");
}