diff --git a/internal/cmd/minipipeline/testdata/analysis.json b/internal/cmd/minipipeline/testdata/analysis.json index 212619aeba..ed5d15b7fe 100644 --- a/internal/cmd/minipipeline/testdata/analysis.json +++ b/internal/cmd/minipipeline/testdata/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/cmd/minipipeline/testdata/analysis_classic.json b/internal/cmd/minipipeline/testdata/analysis_classic.json index e5e5d72404..f9d54aedc2 100644 --- a/internal/cmd/minipipeline/testdata/analysis_classic.json +++ b/internal/cmd/minipipeline/testdata/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/analysis.go b/internal/minipipeline/analysis.go index bdfe2482bf..e03e66ca9e 100644 --- a/internal/minipipeline/analysis.go +++ b/internal/minipipeline/analysis.go @@ -12,8 +12,9 @@ func AnalyzeWebObservations(container *WebObservationsContainer) *WebAnalysis { analysis.ComputeDNSLookupSuccessWithInvalidAddresses(container) analysis.ComputeDNSLookupSuccessWithInvalidAddressesClassic(container) + analysis.ComputeDNSLookupUnexpectedFailure(container) + analysis.ComputeDNSExperimentFailure(container) - analysis.ComputeDNSTransactionsWithUnexpectedFailures(container) analysis.ComputeDNSPossiblyNonexistingDomains(container) analysis.ComputeTCPTransactionsWithUnexpectedTCPConnectFailures(container) @@ -43,15 +44,12 @@ type WebAnalysis struct { // to be compatible with Web Connectivity v0.4's behavior. DNSLookupSuccessWithInvalidAddressesClassic Set[int64] + // DNSLookupUnexpectedFailure contains DNS transactions with unexpected failures. + DNSLookupUnexpectedFailure Set[int64] + // DNSExperimentFailure is the first failure experienced by a getaddrinfo-like resolver. DNSExperimentFailure optional.Value[string] - // DNSTransactionsWithUnexpectedFailures contains the DNS transaction IDs that - // contain failures while the control measurement succeeded. Note that we don't - // include DNS-over-HTTPS failures inside the list, because a DoH failure is - // not related to the domain we're querying for. - DNSTransactionsWithUnexpectedFailures optional.Value[map[int64]bool] - // DNSPossiblyNonexistingDomains lists all the domains for which both // the probe and the TH failed to perform DNS lookups. DNSPossiblyNonexistingDomains optional.Value[map[string]bool] @@ -106,7 +104,7 @@ type WebAnalysis struct { TCPTransactionsWithUnexplainedUnexpectedFailures optional.Value[map[int64]bool] } -// ComputeDNSLookupSuccessWithInvalidAddresses computes the DNSLookupInvalid field. +// ComputeDNSLookupSuccessWithInvalidAddresses computes the ComputeDNSLookupSuccessWithInvalidAddresses field. func (wa *WebAnalysis) ComputeDNSLookupSuccessWithInvalidAddresses(c *WebObservationsContainer) { // fill the invalid set var already Set[int64] @@ -169,7 +167,7 @@ func (wa *WebAnalysis) ComputeDNSLookupSuccessWithInvalidAddresses(c *WebObserva } } -// ComputeDNSLookupSuccessWithInvalidAddressesClassic computes the DNSLookupInvalidClassic field. +// ComputeDNSLookupSuccessWithInvalidAddressesClassic computes the DNSLookupSuccessWithInvalidAddressesClassic field. func (wa *WebAnalysis) ComputeDNSLookupSuccessWithInvalidAddressesClassic(c *WebObservationsContainer) { var already Set[int64] @@ -209,6 +207,61 @@ func (wa *WebAnalysis) ComputeDNSLookupSuccessWithInvalidAddressesClassic(c *Web } } +// ComputeDNSLookupUnexpectedFailure computes the DNSLookupUnexpectedFailure field. +func (wa *WebAnalysis) ComputeDNSLookupUnexpectedFailure(c *WebObservationsContainer) { + var already Set[int64] + + for _, obs := range c.DNSLookupFailures { + // avoid considering a lookup we already considered + if already.Contains(obs.DNSTransactionID.Unwrap()) { + continue + } + already.Add(obs.DNSTransactionID.Unwrap()) + + // lookups once we started following redirects should not be considered + if obs.TagDepth.IsNone() || obs.TagDepth.Unwrap() != 0 { + continue + } + + // Implementation note: a DoH failure is not information about the URL we're + // measuring but about the DoH service being blocked. + // + // See https://github.com/ooni/probe/issues/2274 + if utilsDNSEngineIsDNSOverHTTPS(obs) { + continue + } + + // skip cases where there's no DNS record for AAAA, which is a false positive + if utilsDNSLookupFailureIsDNSNoAnswerForAAAA(obs) { + continue + } + + // TODO(bassosimone): if we set an IPv6 address as the resolver address, we + // end up with false positive errors when there's no IPv6 support + + // handle the case where there's no control + if obs.ControlDNSLookupFailure.IsNone() { + continue + } + + // handle the case where both failed + if obs.DNSLookupFailure.Unwrap() != "" && obs.ControlDNSLookupFailure.Unwrap() != "" { + continue + } + + // handle the case where only the control failed + if obs.ControlDNSLookupFailure.Unwrap() != "" { + continue + } + + // handle the case where only the probe failed + if obs.DNSLookupFailure.Unwrap() != "" { + wa.DNSLookupUnexpectedFailure.Add(obs.DNSTransactionID.Unwrap()) + continue + } + } +} + // ComputeDNSExperimentFailure computes the DNSExperimentFailure field. func (wa *WebAnalysis) ComputeDNSExperimentFailure(c *WebObservationsContainer) { @@ -252,55 +305,6 @@ func (wa *WebAnalysis) ComputeDNSExperimentFailure(c *WebObservationsContainer) } } -// ComputeDNSTransactionsWithUnexpectedFailures computes the DNSTransactionsWithUnexpectedFailures field. -func (wa *WebAnalysis) ComputeDNSTransactionsWithUnexpectedFailures(c *WebObservationsContainer) { - // Implementation note: a DoH failure is not information about the URL we're - // measuring but about the DoH service being blocked. - // - // See https://github.com/ooni/probe/issues/2274 - - var state map[int64]bool - - for _, obs := range c.DNSLookupFailures { - // skip cases where the engine is doh (see above comment) - if utilsDNSEngineIsDNSOverHTTPS(obs) { - continue - } - - // skip cases where there's no DNS record for AAAA, which is a false positive - if utilsDNSLookupFailureIsDNSNoAnswerForAAAA(obs) { - continue - } - - // TODO(bassosimone): if we set an IPv6 address as the resolver address, we - // end up with false positive errors when there's no IPv6 support - - // skip cases with no control - if obs.ControlDNSLookupFailure.IsNone() { - continue - } - - // flip from None to empty if we have seen at least one entry for - // which we can compare to the control - if state == nil { - state = make(map[int64]bool) - } - - // skip cases where the control failed as well - if obs.ControlDNSLookupFailure.Unwrap() != "" { - continue - } - - // update state - if id := obs.DNSTransactionID.UnwrapOr(0); id > 0 { - state[id] = true - } - } - - // note that optional.Some constructs None if state is nil - wa.DNSTransactionsWithUnexpectedFailures = optional.Some(state) -} - // ComputeDNSPossiblyNonexistingDomains computes the DNSPossiblyNonexistingDomains field. func (wa *WebAnalysis) ComputeDNSPossiblyNonexistingDomains(c *WebObservationsContainer) { var state map[string]bool diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis.json index 9ee94177d7..d3c1a757cb 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis_classic.json index b2205367fa..4292141f08 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis.json index 9ee94177d7..d3c1a757cb 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis_classic.json index b2205367fa..4292141f08 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis.json index 121d06bc12..d8b6ba705a 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis.json @@ -7,8 +7,8 @@ 1, 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis_classic.json index 2d4e5a4b33..72449e5d4d 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/analysis_classic.json @@ -5,8 +5,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis.json index 9ee94177d7..d3c1a757cb 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis_classic.json index b2205367fa..4292141f08 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis.json index 982de21520..e00179c2c3 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis_classic.json index 982de21520..e00179c2c3 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis.json index 9e055a6718..f80f445de5 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis_classic.json index 9e055a6718..f80f445de5 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis.json index 7337fa03d1..837f3fe69b 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis.json @@ -1,10 +1,10 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [ + 1 + ], "DNSExperimentFailure": "android_dns_cache_no_data", - "DNSTransactionsWithUnexpectedFailures": { - "1": true - }, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis_classic.json index f73adc2132..531fcdb2f8 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/analysis_classic.json @@ -1,10 +1,10 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [ + 1 + ], "DNSExperimentFailure": "android_dns_cache_no_data", - "DNSTransactionsWithUnexpectedFailures": { - "1": true - }, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis.json index 7f7bae239b..c14c7b36a7 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis.json @@ -5,8 +5,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 1 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis_classic.json index 92307c106d..596b59fb23 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/analysis_classic.json @@ -5,8 +5,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 1 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis.json index 93d8496711..8edc212c4d 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis.json @@ -1,10 +1,10 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [ + 2 + ], "DNSExperimentFailure": "dns_nxdomain_error", - "DNSTransactionsWithUnexpectedFailures": { - "2": true - }, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis_classic.json index 69d838ba50..80989aeb26 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/analysis_classic.json @@ -1,10 +1,10 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [ + 2 + ], "DNSExperimentFailure": "dns_nxdomain_error", - "DNSTransactionsWithUnexpectedFailures": { - "2": true - }, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis.json index 12b4158ac6..449cc8da66 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis.json @@ -6,8 +6,8 @@ 1, 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis_classic.json index 013dcd5ee7..a5c5b76077 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/analysis_classic.json @@ -3,8 +3,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis.json index 2ea5d3d8c3..a43f520685 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis.json @@ -6,8 +6,8 @@ 1, 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis_classic.json index f54f841a9c..c4289cd0c0 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/analysis_classic.json @@ -3,8 +3,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis.json index 0a86e429ca..a6855cbf4d 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis_classic.json index 9f5894d04a..cf92cce336 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis.json index 0a8f8b4015..f04c410674 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 0.12263535551206783, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis_classic.json index fa96c0e300..6591237729 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 0.12263535551206783, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis.json index 3656a5348f..b464275141 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis.json @@ -6,8 +6,8 @@ 1, 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 0.12263535551206783, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis_classic.json index 735095f427..95b88feae0 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/analysis_classic.json @@ -3,8 +3,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 0.12263535551206783, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis.json index 763ad0aeba..7aee663ab0 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis_classic.json index 43f4918620..37d6f9c630 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis.json index c78094f968..a5a9f9520f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis_classic.json index c8232464a7..ca611ab035 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis.json index aecf5b6df3..1489347c03 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis_classic.json index 8d8b005156..bff56a7da9 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis.json index c78094f968..a5a9f9520f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis_classic.json index c8232464a7..ca611ab035 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis.json index aecf5b6df3..1489347c03 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis_classic.json index 8d8b005156..bff56a7da9 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis.json index c78094f968..a5a9f9520f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis_classic.json index c8232464a7..ca611ab035 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis.json index 60f565a8e0..8af228828c 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis_classic.json index 9de21d0909..ecf3560ee2 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis.json index aecf5b6df3..1489347c03 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis_classic.json index 8d8b005156..bff56a7da9 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis.json index df7c1f3f3a..24a4dfb72f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis_classic.json index d819c137d7..e3ba8929c5 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis.json index c5c9fa7089..c16968269a 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis_classic.json index 388344cee6..f4de2a9d50 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis.json index 23124d71b1..eb163ae758 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis_classic.json index 785a177e39..ee57428e8c 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis.json index 697ed47021..aacf6d0945 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis_classic.json index 7e7465ec02..72df036a7e 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis.json index 9dde525d2f..89b1814e26 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis.json @@ -7,8 +7,8 @@ 1, 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": 1, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis_classic.json index 1d30e22654..d0babbb2fd 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/analysis_classic.json @@ -5,8 +5,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 1 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis.json index 93206183f7..a738f110dd 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis_classic.json index 3fea9f222e..84ef7b6869 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis.json index 5f2eb8723f..a144339993 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis.json @@ -7,8 +7,8 @@ 1, 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": {}, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis_classic.json index 48dac5a93a..96a5e6fb19 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/analysis_classic.json @@ -5,8 +5,8 @@ "DNSLookupSuccessWithInvalidAddressesClassic": [ 2 ], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis.json b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis.json index da34cf83d7..58eb7e8886 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": "dns_nxdomain_error", - "DNSTransactionsWithUnexpectedFailures": {}, "DNSPossiblyNonexistingDomains": { "www.example.xyz": true }, diff --git a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis_classic.json index da34cf83d7..58eb7e8886 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": "dns_nxdomain_error", - "DNSTransactionsWithUnexpectedFailures": {}, "DNSPossiblyNonexistingDomains": { "www.example.xyz": true }, diff --git a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis.json b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis.json index b2205367fa..4292141f08 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis_classic.json index b2205367fa..4292141f08 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": null, "HTTPDiffStatusCodeMatch": null, diff --git a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis.json b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis.json index a92983c55c..4cca1d489f 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 0.6166324592304209, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis_classic.json index a92983c55c..4cca1d489f 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 0.6166324592304209, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis.json b/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis.json index 551ff9c775..800a87b836 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 0.6327409384828159, "HTTPDiffStatusCodeMatch": true, diff --git a/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis_classic.json b/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis_classic.json index 551ff9c775..800a87b836 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/youtube/analysis_classic.json @@ -1,8 +1,8 @@ { "DNSLookupSuccessWithInvalidAddresses": [], "DNSLookupSuccessWithInvalidAddressesClassic": [], + "DNSLookupUnexpectedFailure": [], "DNSExperimentFailure": null, - "DNSTransactionsWithUnexpectedFailures": null, "DNSPossiblyNonexistingDomains": null, "HTTPDiffBodyProportionFactor": 0.6327409384828159, "HTTPDiffStatusCodeMatch": true,