From 0e44897c8de01424155e7721632813c5f7324ad6 Mon Sep 17 00:00:00 2001 From: Simone Basso Date: Thu, 18 Jan 2024 19:28:15 +0100 Subject: [PATCH] feat(minipipeline): add ControlFinalResponseExpectations (#1451) This PR adds the ControlFinalResponseExpectations field to WebObservationsContainer. We need this field to determine whether unexplained failures observed by the probe (i.e., failures occurring during redirects) are to be expected (because for some reason also the TH failed) or unexpected (because the TH succeeded). Part of https://github.com/ooni/probe/issues/2640. --- .../minipipeline/testdata/observations.json | 3 +++ .../testdata/observations_classic.json | 3 +++ internal/minipipeline/classic.go | 3 +++ internal/minipipeline/observation.go | 20 ++++++++++++++++++- .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 ++- .../observations_classic.json | 3 ++- .../observations.json | 3 ++- .../observations_classic.json | 3 ++- .../observations.json | 3 +++ .../observations_classic.json | 5 ++++- .../dnsBlockingBOGON/observations.json | 3 +++ .../observations_classic.json | 3 +++ .../dnsBlockingNXDOMAIN/observations.json | 3 +++ .../observations_classic.json | 5 ++++- .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../successWithHTTP/observations.json | 3 +++ .../successWithHTTP/observations_classic.json | 3 +++ .../successWithHTTPS/observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../observations.json | 3 +++ .../observations_classic.json | 3 +++ .../websiteDownNXDOMAIN/observations.json | 5 ++++- .../observations_classic.json | 5 ++++- .../manual/dnsgoogle80/observations.json | 3 +++ .../dnsgoogle80/observations_classic.json | 3 +++ .../manual/noipv6/observations.json | 3 +++ .../manual/noipv6/observations_classic.json | 3 +++ .../manual/youtube/observations.json | 3 +++ .../manual/youtube/observations_classic.json | 3 +++ 70 files changed, 226 insertions(+), 9 deletions(-) diff --git a/internal/cmd/minipipeline/testdata/observations.json b/internal/cmd/minipipeline/testdata/observations.json index 795a5d119..cd49a24e2 100644 --- a/internal/cmd/minipipeline/testdata/observations.json +++ b/internal/cmd/minipipeline/testdata/observations.json @@ -381,5 +381,8 @@ }, "ControlHTTPResponseTitle": "Nexa Center for Internet \u0026 Society | Il centro Nexa è un centro di ricerca del Dipartimento di Automatica e Informatica del Politecnico di Torino" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/cmd/minipipeline/testdata/observations_classic.json b/internal/cmd/minipipeline/testdata/observations_classic.json index c1d293e0a..bed6c4d3e 100644 --- a/internal/cmd/minipipeline/testdata/observations_classic.json +++ b/internal/cmd/minipipeline/testdata/observations_classic.json @@ -140,5 +140,8 @@ }, "ControlHTTPResponseTitle": "Nexa Center for Internet \u0026 Society | Il centro Nexa è un centro di ricerca del Dipartimento di Automatica e Informatica del Politecnico di Torino" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/classic.go b/internal/minipipeline/classic.go index 53fba0a90..1a33eb120 100644 --- a/internal/minipipeline/classic.go +++ b/internal/minipipeline/classic.go @@ -52,5 +52,8 @@ func ClassicFilter(input *WebObservationsContainer) (output *WebObservationsCont output.KnownTCPEndpoints[txid] = entry } + // ControlFinalResponseExpectations + output.ControlFinalResponseExpectations = input.ControlFinalResponseExpectations + return } diff --git a/internal/minipipeline/observation.go b/internal/minipipeline/observation.go index 6d2ec6e15..b1f0994ef 100644 --- a/internal/minipipeline/observation.go +++ b/internal/minipipeline/observation.go @@ -253,6 +253,14 @@ type WebObservation struct { ControlHTTPResponseTitle optional.Value[string] } +// WebObservationsControlFinalResponseExpectation summarizes the expectations +// on the final response based on what the control has observed. +type WebObservationsControlFinalResponseExpectation struct { + // Failure is the failure observed by the control when attempting + // to fetch the final webpage associated with a URL. + Failure optional.Value[string] +} + // WebObservationsContainer contains [*WebObservations]. // // The zero value of this struct is not ready to use, please use [NewWebObservationsContainer]. @@ -273,6 +281,10 @@ type WebObservationsContainer struct { // KnownTCPEndpoints maps transaction IDs to TCP observations. KnownTCPEndpoints map[int64]*WebObservation + // ControlFinalResponseExpectations summarizes the expectations we have + // for the control based on the final response. + ControlFinalResponseExpectations optional.Value[*WebObservationsControlFinalResponseExpectation] + // knownIPAddresses is an internal field that maps an IP address to the // corresponding DNS observation that discovered it. knownIPAddresses map[string]*WebObservation @@ -584,7 +596,6 @@ func (c *WebObservationsContainer) controlXrefTLSFailures(resp *model.THResponse } func (c *WebObservationsContainer) controlSetHTTPFinalResponseExpectation(resp *model.THResponse) { - // We need to set expectations for each type of observation. For example, to detect // NXDOMAIN blocking with redirects when there's the expectation of success, we need // to have the expectation inside the DNS-lookup-failure observation. @@ -595,6 +606,13 @@ func (c *WebObservationsContainer) controlSetHTTPFinalResponseExpectation(resp * observations = append(observations, obs) } + // make sure we have a final expectation based on what the control observed, which + // is in turn necessary to figure out whether unexplained probe failures during redirects + // are expected or unexpected. + c.ControlFinalResponseExpectations = optional.Some(&WebObservationsControlFinalResponseExpectation{ + Failure: optional.Some(utilsStringPointerToString(resp.HTTPRequest.Failure)), + }) + for _, obs := range observations { obs.ControlHTTPFailure = optional.Some(utilsStringPointerToString(resp.HTTPRequest.Failure)) diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations.json index b71d9590b..bb26cc34b 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations.json @@ -186,5 +186,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "unknown_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations_classic.json index 012b9a36b..1bc773944 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithExpiredCertificate/observations_classic.json @@ -95,5 +95,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "unknown_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations.json index 64b482348..3f4d9f310 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations.json @@ -276,5 +276,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "unknown_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations_classic.json index 5bff62f09..2afd327d1 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithConsistentDNS/observations_classic.json @@ -95,5 +95,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "unknown_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations.json index 5ba228ffe..27f9f0746 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations.json @@ -260,5 +260,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations_classic.json index a9cb4d77f..eb22e9061 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithUnknownAuthorityWithInconsistentDNS/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations.json index c76e3e570..fd5f0ac1b 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations.json @@ -186,5 +186,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "unknown_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations_classic.json index 01fa1f5d9..c5016b060 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/badSSLWithWrongServerName/observations_classic.json @@ -95,5 +95,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "unknown_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations.json index 77a840ae6..fc391f6d2 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations.json @@ -183,5 +183,6 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } - } + }, + "ControlFinalResponseExpectations": null } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations_classic.json index d52f0b391..1faa1bc1f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPSWebsite/observations_classic.json @@ -96,5 +96,6 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } - } + }, + "ControlFinalResponseExpectations": null } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations.json index c97a7dfc2..0827d39e4 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations.json @@ -227,5 +227,6 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } - } + }, + "ControlFinalResponseExpectations": null } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations_classic.json index 524698db9..9c0ffd52f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/controlFailureWithSuccessfulHTTPWebsite/observations_classic.json @@ -96,5 +96,6 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } - } + }, + "ControlFinalResponseExpectations": null } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations.json index 499d2ea29..774630e51 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations.json @@ -209,5 +209,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations_classic.json index e4ebb758f..54006bd26 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingAndroidDNSCacheNoData/observations_classic.json @@ -51,5 +51,8 @@ } ], "DNSLookupSuccesses": [], - "KnownTCPEndpoints": {} + "KnownTCPEndpoints": {}, + "ControlFinalResponseExpectations": { + "Failure": "" + } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations.json index 5dd86cc77..163844379 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations.json @@ -262,5 +262,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations_classic.json index 0caf6a6f1..f7b025686 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingBOGON/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations.json index 79a3eca35..9269ca669 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations.json @@ -209,5 +209,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations_classic.json index 1e0deba42..d61222773 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsBlockingNXDOMAIN/observations_classic.json @@ -51,5 +51,8 @@ } ], "DNSLookupSuccesses": [], - "KnownTCPEndpoints": {} + "KnownTCPEndpoints": {}, + "ControlFinalResponseExpectations": { + "Failure": "" + } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations.json index 6072d4ab5..3cfd11efe 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations.json @@ -260,5 +260,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations_classic.json index ad4f19b1e..ad25c8d77 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPSURL/observations_classic.json @@ -110,5 +110,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations.json index 1f424b430..634b7ee99 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations.json @@ -359,5 +359,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations_classic.json index 7c59b0cb8..c9ec8f1db 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/dnsHijackingToProxyWithHTTPURL/observations_classic.json @@ -109,5 +109,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations.json index ea605027b..2dfa707d1 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations.json @@ -257,5 +257,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations_classic.json index d12a386d7..adf772f55 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpBlockingConnectionReset/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations.json index 1283f0d53..834139d1a 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations.json @@ -257,5 +257,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations_classic.json index ce9d590c8..97da40742 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithConsistentDNS/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations.json index 6e7cb2103..41a31f2a3 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations.json @@ -355,5 +355,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations_classic.json index 4b985b3cd..22b60b54f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/httpDiffWithInconsistentDNS/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations.json index 67320d729..ec5bc24cf 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations.json @@ -453,5 +453,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations_classic.json index ac098f34d..b226a9bbf 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTP/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations.json index 8449aedef..14612e4d4 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations.json @@ -404,5 +404,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations_classic.json index 128ea9cf6..dca56081f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionRefusedForHTTPS/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations.json index fc775e030..da5730ea6 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations.json @@ -453,5 +453,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations_classic.json index d57927165..782958998 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTP/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations.json index 52aba9d49..368a764f1 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations.json @@ -404,5 +404,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations_classic.json index f7b1a3bbd..5fb613cd1 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenConnectionResetForHTTPS/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations.json index c82573579..0673cddd6 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations.json @@ -453,5 +453,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations_classic.json index bc9a97d9b..ca72dc906 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTP/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations.json index 4fdae52ec..8dcd4d978 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations.json @@ -404,5 +404,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations_classic.json index e1d908ffe..b39c2942e 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenEOFForHTTPS/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations.json index 4309c1038..409c9b122 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations.json @@ -351,5 +351,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations_classic.json index 4bcfcee35..bd9096c9a 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenNXDOMAIN/observations_classic.json @@ -157,5 +157,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations.json index 2f352e79f..b4fbe1816 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations.json @@ -453,5 +453,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations_classic.json index 9f7e1c66e..f5a4811f2 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTP/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations.json index fd79ee178..15bd799b4 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations.json @@ -504,5 +504,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations_classic.json index 4c40d8a47..bed37318e 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/redirectWithConsistentDNSAndThenTimeoutForHTTPS/observations_classic.json @@ -207,5 +207,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations.json index 982946b64..ee54e2ba0 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations.json @@ -262,5 +262,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations_classic.json index 0e248e493..715883cf0 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTP/observations_classic.json @@ -110,5 +110,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations.json index f8a7be047..2a668c2f9 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations.json @@ -211,5 +211,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations_classic.json index dcb9831ae..01c87f787 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/successWithHTTPS/observations_classic.json @@ -110,5 +110,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations.json index ca431ac63..c72237933 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations.json @@ -206,5 +206,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations_classic.json index 3eb78996d..f44229a3f 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectTimeout/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations.json index 1b6838a01..3737d7e7c 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations.json @@ -360,5 +360,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations_classic.json index 85d7e7bba..01d007bc4 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tcpBlockingConnectionRefusedWithInconsistentDNS/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations.json index 0e1787d1c..ad1e287db 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations.json @@ -206,5 +206,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations_classic.json index baba83f0a..7cbc3cb5b 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithConsistentDNS/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations.json index bd9b36ab2..d1d1dc3b0 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations.json @@ -255,5 +255,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations_classic.json index 716d10d55..6f808f2df 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/tlsBlockingConnectionResetWithInconsistentDNS/observations_classic.json @@ -105,5 +105,8 @@ }, "ControlHTTPResponseTitle": "Default Web Page" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations.json b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations.json index 5e5566616..a6b986288 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations.json @@ -128,5 +128,8 @@ } ], "DNSLookupSuccesses": [], - "KnownTCPEndpoints": {} + "KnownTCPEndpoints": {}, + "ControlFinalResponseExpectations": { + "Failure": "dns_lookup_error" + } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations_classic.json index 222a04f39..d27604401 100644 --- a/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/generated/websiteDownNXDOMAIN/observations_classic.json @@ -44,5 +44,8 @@ } ], "DNSLookupSuccesses": [], - "KnownTCPEndpoints": {} + "KnownTCPEndpoints": {}, + "ControlFinalResponseExpectations": { + "Failure": "dns_lookup_error" + } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations.json b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations.json index aa842a370..f97cbd3cb 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations.json @@ -1027,5 +1027,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "generic_timeout_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations_classic.json index 97c0d7999..130f7f126 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/dnsgoogle80/observations_classic.json @@ -419,5 +419,8 @@ "ControlHTTPResponseHeadersKeys": null, "ControlHTTPResponseTitle": null } + }, + "ControlFinalResponseExpectations": { + "Failure": "generic_timeout_error" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations.json b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations.json index 64af85b5e..4c0b0d198 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations.json @@ -4587,5 +4587,8 @@ }, "ControlHTTPResponseTitle": "YouTube" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations_classic.json index 39e236183..5cb5f4ac1 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/noipv6/observations_classic.json @@ -1845,5 +1845,8 @@ }, "ControlHTTPResponseTitle": "YouTube" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations.json b/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations.json index 5da613947..4da11d4af 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations.json @@ -4767,5 +4767,8 @@ }, "ControlHTTPResponseTitle": "YouTube" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file diff --git a/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations_classic.json b/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations_classic.json index f786d56c5..235740bfb 100644 --- a/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations_classic.json +++ b/internal/minipipeline/testdata/webconnectivity/manual/youtube/observations_classic.json @@ -1916,5 +1916,8 @@ }, "ControlHTTPResponseTitle": "YouTube" } + }, + "ControlFinalResponseExpectations": { + "Failure": "" } } \ No newline at end of file